TMA-ORACLE-DB-6.1.2
Ensure Admin Privileges Are Revoked from Unauthorized 'GRANTEE'
Description
The Oracle database WITH_ADMIN privilege allows the designated user to grant another user the same privileges. Unauthorized grantees should not have that privilege. Counts non-Oracle-maintained users and roles holding the privilege directly or through a role chain (CDB_SYS_PRIVS / CDB_ROLE_PRIVS); 0 is required, so every approved grantee must be reviewed and documented as an exception. Run on the database host as the Oracle software owner with ORACLE_HOME, ORACLE_SID and PATH set; connects to the CDB root with 'sqlplus -S / as sysdba' (OS authentication) so CDB_/GV$ views cover all open PDBs.
How it is checked
Audit method: SQL query
out=$(sqlplus -S -L / as sysdba 2>/dev/null <<'EOF'
whenever sqlerror exit failure
set heading off feedback off pagesize 0 verify off echo off trimspool on define off
with nm as (
select role as grantee from cdb_roles where oracle_maintained = 'N'
union select username from cdb_users where oracle_maintained = 'N'
),
direct_privs as (select grantee from cdb_sys_privs where admin_option = 'YES'),
indirect_privs as (
select grantee from cdb_role_privs
start with granted_role in (select p.grantee from cdb_sys_privs p, cdb_roles r where p.admin_option = 'YES' and p.grantee = r.role)
connect by nocycle prior grantee = granted_role
)
select count(*) from (select grantee from direct_privs union select grantee from indirect_privs) c
where c.grantee in (select grantee from nm);
exit
EOF
) || exit 1
printf '%s\n' "$out"
- Expected output
0
How it is fixed
Fix method: Guidance or infrastructure patch
To remediate this setting, execute the following SQL statement, keeping in mind if this is granted in both container and pluggable database, you must connect to both places to revoke. Please ensure proper impact analysis is done before revoking the privilege from a role. REVOKE <SYSTEM PRIVILEGE> FROM <grantee>; If needed, grant the privilege to user without admin option: GRANT <SYSTEM PRIVILEGE> TO <grantee>; In the case of a grant via a role: REVOKE <rolename> FROM <grantee>;
Properties
- Operating systems
- Any
- Tags
- oracle-dbdatabaseoracleprivileges
- Reference
- CIS Oracle Database 23ai Benchmark v1.1.0 - 6.1.2 Ensure Admin Privileges Are Revoked from Unauthorized 'GRANTEE'
Check this host
Run this on a machine you are allowed to audit. The scan is read-only.
tmaegis scan --target oracle-db