<<< Date Index >>>     <<< Thread Index >>>

Oracle DBMS Access Control Bypass in Login



Oracle DBMS ? Access Control Bypass in Login
**********************************************************
Background
***********************
Oracle is a widely deployed DBMS. Clients use a protocol called TNS to 
communicate to the Oracle server. Protocol messages are used for session setup, 
authentication and data transfer. The standard authentication mechanism 
requires a client to supply a valid pair of user name and password.
Scope
****************************
Imperva?s Application Defense Center is conducting an extensive research of the 
TNS protocol and its implementation. As part of the research the team has 
identified a severe vulnerability in Oracle?s access control mechanism.
Findings
***************************
During the login process an Oracle user with no more than ?create session? 
privileges can execute commands in the context of the special database user 
SYS. This of course grants any user the highest administrative privileges 
possible.
Details
**********************************
The authentication part of the protocol is comprised of two steps, including 
two different client requests and two server responses respectively. The first 
request (message code 0x76) contains only the user name while the second 
(message code 0x73) contains the user name and an obfuscated password. 
This second request also contains a list of name-value pairs describing various 
attributes of the client. The value named ?AUTH_ALTER_SESSION? is intended for 
setting up session attributes related to the locale and language, in the form 
of an ALTER SESSION SQL statement.
It turns out that this value can contain any SQL statement. Moreover, this 
command is executed in the context of the SYS user, which operates outside of 
the Oracle access control mechanism. Thus, by setting the value of 
?AUTH_ALTER_SESSION? to an arbitrary SQL statement an attacker can execute any 
arbitrary command in the database. In particular, the attacker can create a new 
database account and create DBA privileges to the new account.
Notice that if the attacker tries to execute ?GRANT DBA TO attacker_account? a 
deadlock occurs and attacker_account cannot login to the database until the 
connection is closed.
Exploit
*********************************
Change the value of the AUTH_ALTER_SESSION attribute in TNS authentication 
message.
Tested Versions
***********************************
Vulnerable
Oracle 8i (8.1.7.x.x)
Oracle 9i (9.2.0.7)
Oracle 10g Release 1 (10.1.0.4.2)
Oracle 10g Release 2 (10.2.0.1.0)
Not Vulnerable
Vendor?s Status
*****************************
Vendor notified on 02-Nov-05
Patch released on 17-Jan-06 (5745699 OAUTH - REMOTE AUTHENTICATED ESCALATE TO 
DBA VIA AUTH_ALTER_SESSION)
Workaround
*********************************
None.

Copyright (c) 2006 Imperva
Redistribution of this alert electronically is allowed as long as it is not 
edited in any way. To reprint this alert, in whole or in part, in any medium 
other than electronic medium, please email adc@xxxxxxxxxxx for permission.

Disclaimer
The information within this advisory is subject to change without notice. Use 
of this information constitutes acceptance for use in an AS IS condition. Any 
use of this information is at the user's own risk.  There are no warranties, 
implied or express, with regard to this information. In no event shall the 
author be liable for any direct or indirect damages whatsoever arising out of 
or in connection with the use or spread of this information.