Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: using set role command in a logon trigger -- got something implemented - now security question

Re: using set role command in a logon trigger -- got something implemented - now security question

From: Wolfgang Breitling <breitliw_at_centrexcc.com>
Date: Thu, 12 Apr 2007 12:15:29 -0600
Message-Id: <20070412181428.D57C06B2614@turing.freelists.org>

At 09:05 AM 4/12/2007, laura pena wrote:
>Just to provide feedback here, I actually got this implemented using
>the 10g feature creating application roles via schema packages.
>Thanks for the link below Sriram.
>
>The user is configured to execute a schema package created as the
>system user with AUTHID CURRENT_USER.
>
>The schema package uses sys_context to check the users environment
>module name to determine which application is running. If it's the
>"approved" module, permission to update,delete, insert into this
>schema are granted via dbms_session.set_role to the logged in user.
>
>The application itself needed to modified to call this stored
>procedure on login (it does more checks as well). All users allowed
>to user this application configured to use this stored procedure.
>
>Works great. Except now I have a security question?
>
>Can a user spoof the sys_context environment module name ?
>So say the user wants to have super privs within toad? Can he/she
>change the module toad.exe to the module name of the application.
>So they may have super privs to the applications tables now?

I am getting out on a limb here to say "most likely yes". How difficult it is depends to some degree on how your sys_context determines "the users environment module name". If it's just from the program name that would be very easy to fake. By just creating a copy of sqlplus as toad I get the following: 11:59:02 ora92.scott> exec print_table('select * from v$session where sid=9'

SADDR                         : 30A6BB08
SID                           : 9
SERIAL#                       : 3594
AUDSID                        : 5325
PADDR                         : 30A41044
USER#                         : 40
USERNAME                      : SCOTT
COMMAND                       : 0
OWNERID                       : 2147483644
TADDR                         :
LOCKWAIT                      :
STATUS                        : ACTIVE
SERVER                        : DEDICATED
SCHEMA#                       : 40
SCHEMANAME                    : SCOTT
OSUSER                        : FERRARI\Wolfgang
PROCESS                       : 8036:7572
MACHINE                       : CENTREX\FERRARI
TERMINAL                      : FERRARI
PROGRAM                       : toad.exe
TYPE                          : USER
SQL_ADDRESS                   : 320733AC
SQL_HASH_VALUE                : 2876145831
PREV_SQL_ADDR                 : 320733AC
PREV_HASH_VALUE               : 2876145831
MODULE                        : SQL*Plus
MODULE_HASH                   : 3669949024
ACTION                        : 2007-04-12 11:55:54
ACTION_HASH                   : 1061060199
CLIENT_INFO                   :
FIXED_TABLE_SEQUENCE          : 66
ROW_WAIT_OBJ#                 : 30146
ROW_WAIT_FILE#                : 7
ROW_WAIT_BLOCK#               : 0
ROW_WAIT_ROW#                 : 0
LOGON_TIME                    : 2007-04-12 11:55:52
LAST_CALL_ET                  : 0
PDML_ENABLED                  : NO
FAILOVER_TYPE                 : NONE
FAILOVER_METHOD               : NONE
FAILED_OVER                   : NO
RESOURCE_CONSUMER_GROUP       : DEFAULT_CONSUMER_GROUP
PDML_STATUS                   : DISABLED
PDDL_STATUS                   : ENABLED
PQ_STATUS                     : ENABLED
CURRENT_QUEUE_DURATION        : 0
CLIENT_IDENTIFIER             :
-----------------

The program name is now toad.exe, but the module is still sql*plus because sqlplus sets it via a call to
dbms_application_info.set_module. In order to change that I need to intercept that and change the value to something else. Not at all impossible to do. Just depends on the determination and knowledge of the developer.

Regards

Wolfgang Breitling
Centrex Consulting Corporation
www.centrexcc.com



This email has been scanned by the MessageLabs Email Security System. For more information please visit http://www.messagelabs.com/email
--
http://www.freelists.org/webpage/oracle-l
Received on Thu Apr 12 2007 - 13:15:29 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US