Call: +44 (0)7759 277220 Call
Forum

Welcome, Guest. Please Login.
Nov 22nd, 2024, 6:05pm
News: Welcome to Pete Finnigan's Oracle security forum
Home | Help | Search | Members | Login
   Pete Finnigan's Oracle Security Forum
   Oracle Security
   Oracle Security
(Moderator: Pete Finnigan)
   Bind Var in Execute Immediate - DDL statement
« Previous topic | Next topic »
Pages: 1  Reply | Notify of replies | Send Topic | Print
   Author  Topic: Bind Var in Execute Immediate - DDL statement  (Read 7797 times)
Pete Finnigan
PeteFinnigan.com Administrator
*****




Oracle Security is easier if you design for it

   
View Profile | WWW | Email

Gender: male
Posts: 309
Bind Var in Execute Immediate - DDL statement
« on: Dec 23rd, 2008, 6:54am »
Quote | Modify

Hi Everyone,  
 
I am trying to build ALTER USER command dynamically with bind vars;  however its giving me the error-ORA-01935 missing user or role name
 
Does anyone has any idea how to resolve it. I want it using bind variable only; otherwise there are possibility of SQL Injection?
 
Thanks in advance.
 
declare
    sql1 varchar2(1000);
    account_name_i  NVARCHAR2(50):='DEEPA';
    new_password_i  NVARCHAR2(50):='ASDASF';
    old_password_i  NVARCHAR2(50):='ASFASGFSDG';
begin
    sql1:= 'ALTER USER :user_n IDENTIFIED BY :new_pass  REPLACE :0ld_pass ';
    EXECUTE IMMEDIATE sql1 using account_name_i, new_password_i, old_password_i  ;
end;
 
IP Logged

Pete Finnigan (email:pete@petefinnigan.com)
Oracle Security Web site: http://www.petefinnigan.com
Forum: http://www.petefinnigan.com/forum/yabb/YaBB.cgi
Oracle security blog: http://www.petefinnigan.com/weblog/entries/index.html
Pete Finnigan
PeteFinnigan.com Administrator
*****




Oracle Security is easier if you design for it

   
View Profile | WWW | Email

Gender: male
Posts: 309
Re: Bind Var in Execute Immediate - DDL statement
« Reply #1 on: Dec 26th, 2008, 2:35am »
Quote | Modify

You don't get to use bind variables.  Do the following:
 
1. Surround the username, new password and old passwords with double quotes.
 
2. Reject any username, new password or old password that contain double quotes.
 
Example:
 
if instr(account_name_i, '"') > 0
or instr(new_password_i, '"') > 0
or instr(old_password_i, '"') > 0 then
  raise_application_failure(-20001,
    'No double quotes allowed');
end if;
execute immediate 'alter user "'
  || account_name_i
  || '" identified by "'
  || new_password_i
  || '" replace "'
  || old_password_i
  || '";';
IP Logged

Pete Finnigan (email:pete@petefinnigan.com)
Oracle Security Web site: http://www.petefinnigan.com
Forum: http://www.petefinnigan.com/forum/yabb/YaBB.cgi
Oracle security blog: http://www.petefinnigan.com/weblog/entries/index.html
Pete Finnigan
PeteFinnigan.com Administrator
*****




Oracle Security is easier if you design for it

   
View Profile | WWW | Email

Gender: male
Posts: 309
Re: Bind Var in Execute Immediate - DDL statement
« Reply #2 on: Jan 1st, 2009, 7:48pm »
Quote | Modify

Just to add to the last poster. I would also ensure that a password verification function and password management are implemented. Also ensure that you do not allow this function to be used to set key users passwords such as SYS, SYSTEM, SYSMAN....
 
Also enable audit on ALTER USER and CREATE USER and DROP USER.
 
Finally you can also use a DDL trigger to "check" its use. I did a blog post some time back on this.  
 
cheers
 
Pete
IP Logged

Pete Finnigan (email:pete@petefinnigan.com)
Oracle Security Web site: http://www.petefinnigan.com
Forum: http://www.petefinnigan.com/forum/yabb/YaBB.cgi
Oracle security blog: http://www.petefinnigan.com/weblog/entries/index.html
Pete Finnigan
PeteFinnigan.com Administrator
*****




Oracle Security is easier if you design for it

   
View Profile | WWW | Email

Gender: male
Posts: 309
Re: Bind Var in Execute Immediate - DDL statement
« Reply #3 on: Jan 2nd, 2009, 2:33pm »
Quote | Modify

Pete,
 
I would appreciate more detail on your recommendation: "Also ensure that you do not allow this function to be used to set key users passwords such as SYS, SYSTEM, SYSMAN".  We have a function with these restrictions, but I have not seen this policy articulated.
IP Logged

Pete Finnigan (email:pete@petefinnigan.com)
Oracle Security Web site: http://www.petefinnigan.com
Forum: http://www.petefinnigan.com/forum/yabb/YaBB.cgi
Oracle security blog: http://www.petefinnigan.com/weblog/entries/index.html
Pete Finnigan
PeteFinnigan.com Administrator
*****




Oracle Security is easier if you design for it

   
View Profile | WWW | Email

Gender: male
Posts: 309
Re: Bind Var in Execute Immediate - DDL statement
« Reply #4 on: Feb 5th, 2009, 10:22am »
Quote | Modify

Hi,
 
Sorry for the delayed response. I had a broken hand during January and then away on business and only in the last week or two is my hand fine again so i have been limiting my typing somewhat.
 
Yes, if you create a function to expose the ALTER USER privilege then ensure that it cannot be used for the alteration of key users. I mentioned SYS, SYSTEM and SYSMAN as examples, you would extend this of course.  
 
So you would create a schema to manage the altering of users passwords. This schema would have CREATE SESSION and ALTER USER system privileges. Ideally it would not have others. You would need to grant create procedure whilst creating the code or create the code from  a DBA account in this schema. In fact in "run mode" you can revoke the CREATE SESSION privileges. So create a procedure in this schema that is definer rights. Then in this procedure do ensure that you check the caller is a user allowed to alter passwords. Possibly check that the location is correct - i.e. that maybe its called from the application - i.e. check the IP address is the IP Address of the application server.  
 
Then in the code itself check which users password is being changed. An ideal situation would be that different groups of admin staff can only change smaller groups of "users" passwords - or rather re-set them. This is simple PL/SQL to check the user being changed is within an allowed group.  
 
hope this helps
 
kind regards
 
Pete
IP Logged

Pete Finnigan (email:pete@petefinnigan.com)
Oracle Security Web site: http://www.petefinnigan.com
Forum: http://www.petefinnigan.com/forum/yabb/YaBB.cgi
Oracle security blog: http://www.petefinnigan.com/weblog/entries/index.html
Pages: 1  Reply | Notify of replies | Send Topic | Print

« Previous topic | Next topic »

Powered by YaBB 1 Gold - SP 1.4!
Forum software copyright © 2000-2004 Yet another Bulletin Board
  • PFCLScan PFCLScan

    Simply connect PFCLScan to your Oracle database and it will automatically discover the security issues that could make your Oracle database vulnerable to attack and to the potential loss of your data.

  • PFCL Obfuscate PFCLObfuscate

    PFCLObfuscate is the only tool available that can automatically add license controls to your PL/SQL code. PFCLObfuscate protects your Intellectual Property invested in your PL/SQL database code.

  • PFCLCode PFCLCode

    PFCLCode is a tool to allow you to analyse your PL/SQL code for many different types of security issues. PFCLCode gives you a detailed review and reports and includes a powerful colour syntax highlighting code editor

  • PFCLForensics PFCLForensics

    PFCLForensics is the only tool available to allow you to do a detailed live response of a breached Oracle database and to then go on and do a detailed forensic analysis of the data gathered.

  • Products We resell PFCLReselling

    PeteFinnigan.com Limited has partnered with a small number of relevant companies to resell their products where they enhance or compliment what we do

  • PFCLATK PFCLATK

    PFCLATK is a toolkit that allows detailed pre-defined policy driven audit trails for your Oracle database. The toolkit also provides for a centralised audit trail and centralised activity reporting

  • PFCLCookie PFCLCookie

    PFCLCookie is a useful tool to use to audit your websites for tracking cookies. Scan websites in a natural way using powerful browser driven scanner

  • PFCL Training PFCLTraining

    PFCLTraining is a set of expert training classes for you, aimed at teaching how to audit your own Oracle database, design audit trails, secure code in PL/SQL and secure and lock down your Oracle database.

  • PFCL Services PFCLServices

    Choose PFCLServices to add PeteFinnigan.com Ltd to your team for your Oracle Security needs. We are experts in performing detailed security audits, data security design work and policy creation

  • PFCLConsulting PFCLConsulting

    Choose PFCLConsulting to ask PeteFinnigan.com Limited to set up and use our products on your behalf

  • PFCLCustom PFCLCustom

    All of our software products can be customised at a number of levels. Choose this to see how our products can be part of your products and services

  • PFCLCloud PFCLCloud

    Private cloud, public cloud, hybrid cloud or no cloud. Learn how all of our services, trainings and products will work in the cloud

  • PFCLUserRights PFCLUserRights

    PFCLUserRights allows you to create a very detailed view of database users rights. The focus of the reports is to allow you to decide what privileges and accounts to keep and which to remove.

  • PFCLSTK PFCLSTK

    PFCLSTK is a toolkit application that allows you to provide database security easily to an existing database. PFCLSTK is a policy driven toolkit of PL/SQL that creates your security

  • PFCLSFTK PFCLSFTK

    PFCLSFTK is a toolkit that solves the problem of securing third party applications written in PL/SQL. It does this by creating a thin layer between the application and database and this traps SQL Injection attempts. This is a static firewall.

  • PFCLSEO PFCLSEO

    PFCLSEO is a web scanner based on the PFCLScan technology so that a user can easily scan a website for technical SEO issues