19 Pluggable Database Compliance Standards

These are the compliance rules for the Pluggable Database compliance standards

19.1 Basic Security Configuration For Oracle Pluggable Database

The compliance rules for the Basic Security Configuration For Oracle Pluggable Database standard follow.

19.1.1 Access To Dba_Roles View

Description: Ensures restricted access to DBA_ROLES view

Severity: Minor Warning

Rationale: DBA_ROLES view contains details of all roles in the database. Knowledge of the structure of roles in the database can be taken advantage of by a malicious user.

19.1.2 Access To Dba_Role_Privs View

Description: Ensures restricted access to DBA_ROLE_PRIVS view

Severity: Minor Warning

Rationale: The DBA_ROLE_PRIVS view lists the roles granted to users and other roles. Knowledge of the structure of roles in the database can be taken advantage of by a malicious user.

19.1.3 Access To Dba_Sys_Privs View

Description: Ensures restricted access to DBA_SYS_PRIVS view

Severity: Minor Warning

Rationale: DBA_SYS_PRIVS view can be queried to find system privileges granted to roles and users. Knowledge of the structure of roles in the database can be taken advantage of bya malicious user.

19.1.4 Access To Dba_Tab_Privs View

Description: Ensures restricted access to DBA_TAB_PRIVS view

Severity: Minor Warning

Rationale: Lists privileges granted to users or roles on objects in the database. Knowledge of the structure of roles in the database can be taken advantage of by a malicious user.

19.1.5 Access To Dba_Users View

Description: Ensures restricted access to DBA_USERS view

Severity: Minor Warning

Rationale: Contains user password hashes and other account information. Access to this information can be used to mount brute-force attacks.

19.1.6 Access To Stats$Sqltext Table

Description: Ensures restricted access to STATS$SQLTEXT table

Severity: Minor Warning

Rationale: This table provides full text of the recently-executed SQL statements. The SQL statements can reveal sensitive information.

19.1.7 Access To Stats$Sql_Summary Table

Description: Ensures restricted access to STATS$SQL_SUMMARY table

Severity: Minor Warning

Rationale: Contains first few lines of SQL text of the most resource intensive commands given to the server. Sql statements executed without bind variables can show up here exposing privileged information.

19.1.8 Access To Sys.Aud$ Table

Description: Ensures restricted access to SYS.AUD$ table

Severity: Minor Warning

Rationale: A knowlegeable and malicious user can gain access to sensitive audit information.

19.1.9 Access To Sys.Source$ Table

Description: Ensures restricted access to SYS.SOURCE$ table

Severity: Minor Warning

Rationale: Contains source of all stored packages units in the database.

19.1.10 Access To Sys.User$ Table

Description: Ensures restricted access to SYS.USER$ table

Severity: Minor Warning

Rationale: Username and password hash may be read from the SYS.USER$ table, enabling a hacker to launch a brute-force attack.

19.1.11 Access To Sys.User_History$ Table

Description: Ensures restricted access to SYS.USER_HISTORY$ table

Severity: Minor Warning

Rationale: Username and password hash may be read from the SYS.USER_HISTORY$ table, enabling a hacker to launch a brute-force attack.

19.1.12 Default Passwords

Description: Ensure there are no default passwords for known accounts

Severity: Warning

Rationale: A malicious user can gain access to the database using default passwords.

19.1.13 Execute Privileges On Dbms_Job To Public

Description: Ensures PUBLIC is not granted EXECUTE privileges on DBMS_JOB package

Severity: Critical

Rationale: Granting EXECUTE privilege to PUBLIC on DBMS_JOB package allows users to schedule jobs on the database.

19.1.14 Execute Privileges On Dbms_Sys_Sql To Public

Description: Ensures PUBLIC is not granted EXECUTE privileges on DBMS_SYS_SQL package

Severity: Critical

Rationale: The DBMS_SYS_SQL package can be used to run PL/SQL and SQL as the owner of the procedure rather than the caller.

19.1.15 Password Complexity Verification Function Usage

Description: Ensures PASSWORD_VERIFY_FUNCTION resource for the profile is set

Severity: Critical

Rationale: Having passwords that do not meet minimum complexity requirements offer substantially less protection than complex passwords.

19.1.16 Password Grace Time

Description: Ensures that all profiles have PASSWORD_GRACE_TIME set to a reasonable number of days

Severity: Critical

Rationale: A high value for the PASSWORD_GRACE_TIME parameter may cause serious database security issues by allowing the user to keep the same password for a long time.

19.1.17 Password Lifetime

Description: Ensures that all profiles have PASSWORD_LIFE_TIME set to a reasonable number of days

Severity: Warning

Rationale: A long password life time gives hackers a long time to try and cook the password. May cause serious database security issues.

19.1.18 Password Locking Time

Description: Ensures PASSWORD_LOCK_TIME is set to a reasonable number of days for all profiles

Severity: Warning

Rationale: Having a low value increases the likelihood of Denial of Service attacks.

19.1.19 Restricted Privilege To Execute Utl_Http

Description: Ensure PUBLIC does not have execute privileges on the UTL_HTTP package

Severity: Critical

Rationale: Privileges granted to the PUBLIC role automatically apply to all users. A malicious user can gain access to email, network and http modules using the EXECUTE privilege.

19.1.20 Restricted Privilege To Execute Utl_Smtp

Description: Ensure PUBLIC does not have execute privileges on the UTL_SMTP package

Severity: Critical

Rationale: Privileges granted to the PUBLIC role automatically apply to all users. A malicious user can gain access to email, network and http modules using the EXECUTE privilege.

19.1.21 Restricted Privilege To Execute Utl_Tcp

Description: Ensure PUBLIC does not have execute privileges on the UTL_TCP package

Severity: Critical

Rationale: Privileges granted to the PUBLIC role automatically apply to all users. A malicious user can gain access to email, network and http modules using the EXECUTE privilege.

19.1.22 Well Known Accounts

Description: Checks for accessibility of well-known accounts

Severity: Warning

Rationale: A knowledgeable malicious user can gain access to the database using a well-known account.

19.2 Configuration Best Practices For Oracle Database

The compliance rules for the Configuration Best Practices For Oracle Database standard follow.

19.2.1 Disabled Automatic Statistics Collection

Description: Checks if the STATISTICS_LEVEL initialization parameter is set to BASIC

Severity: Critical

Rationale: Automatic statistics collection allows the optimizer to generate accurate execution plans and is essential for identifying and correcting performance problems. By default, STATISTICS_LEVEL is set to TYPICAL. If the STATISTICS_LEVEL initialization parameter is set to BASIC the collection of many important statistics, required by Oracle database features and functionality, are disabled.

19.2.2 Not Using Automatic Pga Management

Description: Checks if the PGA_AGGREGATE_TARGET initialization parameter has a value of 0 or if WORKAREA_SIZE_POLICY has value of MANUAL.

Severity: Warning

Rationale: Automatic PGA memory management simplifies and improves the way PGA memory is allocated. When enabled, Oracle can dynamically adjust the portion of the PGA memory dedicated to work areas while honoring the PGA_AGGREGATE_TARGET limit set by the DBA.'

19.2.3 Statistics_Level Parameter Set To All

Description: Checks if the STATISTICS_LEVEL initialization parameter is set to ALL

Severity: Minor Warning

Rationale: Automatic statistics collection allows the optimizer to generate accurate execution plans and is essential for identifying and correcting performance problems. The STATISTICS_LEVEL initialization parameter is currently set to ALL, meaning additional timed OS and plan execution statistics are being collected. These statistics are not necessary and create additional overhead on the system.

19.2.4 Timed_Statistics Set To False

Description: Checks if the TIMED_STATISTICS initialization parameter is set to FALSE.

Severity: Critical

Rationale: Setting TIMED_STATISTICS to FALSE prevents time related statistics, e.g. execution time for various internal operations, from being collected. These statistics are useful for diagnosing and performance tuning. Setting TIMED_STATISTICS to TRUE will allow time related statistics to be collected, and will also provide more value to the trace file and generates more accurate statistics for long-running operations.

19.2.5 Use Of Non-Standard Initialization Parameters

Description: Checks for use of non-standard initialization parameters

Severity: Minor Warning

Rationale: Non-standard initialization parameters are being used. These may have been implemented based on poor advice or incorrect assumptions. In particular, parameters associated with SPIN_COUNT on latches and undocumented optimizer features can cause a great deal of problems that can require considerable investigation.

19.3 High Security Configuration For Oracle Pluggable Database

The compliance rules for the High Security Configuration For Oracle Pluggable Database standard follow.

19.3.1 Access To *_Catalog_* Roles

Description: Ensure grant of %_CATALOG_% is restricted

Severity: Critical

Rationale: %_CATALOG_% Roles have critical access to database objects, that can lead to exposure of vital information in database system.

19.3.2 Access To All_Source View

Description: Ensures restricted access to ALL_SOURCE view

Severity: Minor Warning

Rationale: ALL_SOURCE view contains source of all stored packages in the database.

19.3.3 Access To Dba_* Views

Description: Ensures SELECT privilege is never granted to any DBA_ view

Severity: Warning

Rationale: The DBA_* views provide access to privileges and policy settings of the database. Some of these views also allow viewing of sensitive PL/SQL code that can be used to understand the security policies.

19.3.4 Access To Role_Role_Privs View

Description: Ensures restricted access to ROLE_ROLE_PRIVS view

Severity: Minor Warning

Rationale: Lists roles granted to other roles. Knowledge of the structure of roles in the database can be taken advantage of by a malicious user.

19.3.5 Access To Sys.Link$ Table

Description: Ensures restricted access to LINK$ table

Severity: Minor Warning

Rationale: A knowlegeable and malicious user can gain access to user passwords from the SYS.LINK$ table.

19.3.6 Access To User_Role_Privs View

Description: Ensures restricted access to USER_ROLE_PRIVS view

Severity: Minor Warning

Rationale: Lists the roles granted to the current user. Knowledge of the structure of roles in the database can be taken advantage of by a malicious user.

19.3.7 Access To User_Tab_Privs View

Description: Ensures restricted access to USER_TAB_PRIVS view

Severity: Minor Warning

Rationale: Lists the grants on objects for which the user is the owner, grantor or grantee. Knowledge of the grants in the database can be taken advantage of by a malicious user.

19.3.8 Access To V$ Views

Description: Ensures SELECT privilege is not granted to any V$ Views

Severity: Critical

Rationale: V$ tables contain sensitive information about Oracle database and should only be accessible by system administrators. Check for any user that has access and revoke where possible

19.3.9 Access To X_$ Views

Description: Ensure access on X$ views is restricted

Severity: Critical

Rationale: This can lead to revealing of internal database structure information.

19.3.10 Audit Alter Any Table Privilege

Description: Ensures ALTER ANY TABLE Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing ALTER ANY TABLE will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.11 Audit Alter User Privilege

Description: Ensures ALTER USER Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing ALTER USER will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.12 Audit Create Any Library Privilege

Description: Ensures CREATE ANY LIBRARY is being audited by access for all users

Severity: Critical

Rationale: Auditing CREATE ANY LIBRARY will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.13 Audit Create Library Privilege

Description: Ensures CREATE LIBRARY Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing CREATE LIBRARY will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.14 Audit Create Role Privilege

Description: Ensures CREATE ROLE Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing the creation of roles will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.15 Audit Create Session Privilege

Description: Ensures CREATE SESSION Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing CREATE SESSION will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.16 Audit Create User Privilege

Description: Ensures CREATE USER Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing CREATE USER will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.17 Audit Drop Any Procedure Privilege

Description: Ensures DROP ANY PROCEDURE Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing DROP ANY PROCEDURE will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.18 Audit Drop Any Role Privilege

Description: Ensures DROP ANY ROLE Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing the creation of roles will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.19 Audit Drop Any Table Privilege

Description: Ensures DROP ANY TABLE Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing DROP ANY TABLE will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.20 Audit Execute Any Procedure Privilege

Description: Ensures EXECUTE ANY PROCEDURE Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing the creation of roles will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.21 Audit Grant Any Object Privilege

Description: Ensures SELECT ANY DICTIONARY Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing SELECT ANY DICTIONARY will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.22 Audit Grant Any Privilege

Description: Ensures GRANT ANY PRIVILEGE is being audited by access for all users

Severity: Critical

Rationale: Auditing GRANT ANY PRIVILEGE will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.23 Audit Insert Failure

Description: Ensures that insert failures are audited for critical data objects

Severity: Warning

Rationale: Not auditing insert failures for critical data objects may allow a malicious user to infiltrate system security..

19.3.24 Audit Select Any Dictionary Privilege

Description: Ensures SELECT ANY DICTIONARY Privilege is being audited by access for all users

Severity: Critical

Rationale: Auditing SELECT ANY DICTIONARY will provide a record to ensure the appropriate use of account administration privileges. This information is also useful when investigating certain security events

19.3.25 Connect Time

Description: Ensure that users profile settings CONNECT_TIME have appropriate value set for the particular database and application

Severity: Critical

Rationale: Sessions held open for excessive periods of time can consume system resources and cause a denial of service for other users of the Oracle database. The CONNECT_TIME parameter limits the upper bound on how long a session can be held open. This parameter is specified in minutes. Sessions that have exceeded their connect time are aborted and rolled back

19.3.26 Cpu Per Session

Description: Ensures that all profiles have CPU_PER_SESSION set to a reasonable number of CPU cycles

Severity: Critical

Rationale: Allowing a single application or user to consume excessive CPU resources will result in a denial of service to the Oracle database

19.3.27 Execute Privileges On Dbms_Lob To Public

Description: Ensures PUBLIC group is not granted EXECUTE privileges to the DBMS_LOB package

Severity: Critical

Rationale: The DBMS_LOB package can be used to access any file on the system as the owner of the Oracle software installation.

19.3.28 Execute Privileges On Utl_File To Public

Description: Ensure PUBLIC does not have EXECUTE privilege on the UTL_FILE package

Severity: Critical

Rationale: Privileges granted to the PUBLIC role automatically apply to all users. A malicious user can read and write arbitrary files in the system when granted the UTL_FILE privilege.

19.3.29 Execute Privilege On Sys.Dbms_Export_Extension To Public

Description: Ensure PUBLIC does not have execute privileges on the SYS.DBMS_EXPORT_EXTENSION package

Severity: Critical

Rationale: Privileges granted to the PUBLIC role automatically apply to all users. DBMS_EXPORT_EXTENSION can allow sql injection. Thus a malicious will be able to take advantage.

19.3.30 Execute Privilege On Sys.Dbms_Random Public

Description: Ensure PUBLIC does not have execute privileges on the SYS.DBMS_RANDOM package

Severity: Critical

Rationale: Privileges granted to the PUBLIC role automatically apply to all users. DBMS_RANDOM can allow sql injection. Thus a malicious will be able to take advantage.

19.3.31 Granting Select Any Table Privilege

Description: Ensures SELECT ANY PRIVILEGE is never granted to any user or role

Severity: Warning

Rationale: The SELECT ANY TABLE privilege can be used to grant users or roles with the ability to view data in tables that are not owned by them. A malicious user with access to any user account that has this privilege can use this to gain access to sensitive data.

19.3.32 Logical Reads Per Session

Description: Ensure that users profile settings LOGICAL_READS_ PER_SESSION have appropriate value set for the particular database and application

Severity: Critical

Rationale: Allowing a single application or user to perform excessive amounts of reads to disk will result in a denial of service to the Oracle database

19.3.33 Limit Os Authentication

Description: Ensures database accounts does not rely on OS authentication

Severity: Critical

Rationale: If the host operating system has a required userid for database account for which password is set EXTERNAL, then Oracle does not check its credentials anymore. It simplyassumes the host must have done its authentication and lets the user into the database without any further checking.

19.3.34 Private Sga

Description: Ensure that users PRIVATE_SGA profile settings have appropriate values set for the particular database and application

Severity: Critical

Rationale: Allowing a single application or user to consume the excessive amounts of the System Global Area will result in a denial of service to the Oracle database

19.3.35 Password Reuse Max

Description: Ensures that all profiles have PASSWORD_REUSE_MAX set to a reasonable number of times

Severity: Warning

Rationale: Old passwords are usually the best guesses for the current password. A low value for the PASSWORD_REUSE_MAX parameter may cause serious database security issues by allowing users to reuse their old passwords more often.

19.3.36 Password Reuse Time

Description: Ensures that all profiles have PASSWORD_REUSE_TIME set to a reasonable number of days

Severity: Critical

Rationale: A low value for the PASSWORD_REUSE_TIME parameter may cause serious database security issues by allowing users to reuse their old passwords more often.

19.3.37 Proxy Account

Description: Ensures that the proxy accounts have limited privileges

Severity: Warning

Rationale: The proxy user only needs to connect to the database. Once connected it will use the privileges of the user it is connecting on behalf of. Granting any other privilege than the CREATE SESSION privilege to the proxy user is unnecessary and open to misuse.

19.3.38 Sessions_Per_User

Description: Ensures that all profiles have SESSIONS_PER_USER set to a reasonable number

Severity: Critical

Rationale: Allowing an unlimited amount of sessions per user can consume Oracle resources and cause a denial of service. Limit the number of session for each individual user

19.3.39 System Privileges To Public

Description: Ensure system privileges are not granted to PUBLIC

Severity: Critical

Rationale: Privileges granted to the public role automatically apply to all users. There are security risks granting SYSTEM privileges to all users.

19.3.40 Unlimited Tablespace Quota

Description: Ensures database users are allocated a limited tablespace quota

Severity: Warning

Rationale: Granting unlimited tablespace quotas can cause the filling up of the allocated disk space. This can lead to an unresponsive database.

19.4 Storage Best Practices For Oracle Database

The compliance rules for the Storage Best Practices For Oracle Database standard follow.

19.4.1 Dictionary Managed Tablespaces

Description: Checks for dictionary managed tablespaces

Severity: Minor Warning

Rationale: These tablespaces are dictionary managed. Oracle recommends using locally managed tablespaces, with AUTO segment-space management, to enhance performance and ease of space management.

19.4.2 Non-System Data Segments In System Tablespaces

Description: Checks for data segments owned by non-system users located in tablespaces SYSTEM, SYSAUX and SYSEXT.

Severity: Minor Warning

Rationale: These segments belonging to non-system users are stored in system tablespaces SYSTEM or SYSAUX or SYSEXT. This violation makes it more difficult to manage these data segments and may result in performance degradation in the system tablespace. This is also a security issue. If non-system users are storing data in a system tablespace it is possible that all available space in the system tablespace may be consumed, thus causing the database to stop working.

19.4.3 Non-System Users With System Tablespace As Default Tablespace

Description: Checks for non-system users using SYSTEM or SYSAUX as the default tablespace

Severity: Minor Warning

Rationale: These non-system users use a system tablespace as the default tablespace. This violation will result in non-system data segments being added to the system tablespace, making it more difficult to manage these data segments and possibly resulting in performance degradation in the system tablespace. This is also a security issue. All Available space in the system tablespace may beconsumed, thus causing the database to stop working.

19.4.4 Non-Uniform Default Extent Size For Tablespaces

Description: Checks for dictionary managed or migrated locally managed tablespaces with non-uniform default extent size

Severity: Minor Warning

Rationale: Dictionary managed or migrated locally managed tablespaces using non-uniform default extent sizes have been found. This means that the extents in a single tablespace will vary insize leading to fragmentation, inefficient space usage and performance degradation.

19.4.5 Tablespace Not Using Automatic Segment-Space Management

Description: Checks for locally managed tablespaces that are using MANUAL segment space management

Severity: Minor Warning

Rationale: Automatic segment-space management is a simpler and more efficient way of managing space within a segment. It completely eliminates any need to specify and tune the PCTUSED, FREELISTS and FREELIST GROUPS storage parameters for schema objects created in the tablespace. In a RAC environment there is the additional benefit of avoiding the hard partitioning of space inherent with using free list groups.

19.4.6 Users With Permanent Tablespace As Temporary Tablespace

Description: Checks for users using a permanent tablespace as the temporary tablespace

Severity: Minor Warning

Rationale: These users use a permanent tablespace as the temporary tablespace. Using temporary tablespaces allows space management for sort operations to be more efficient. Using a permanent tablespace for these operations may result in performance degradation, especially for Real Application Clusters. There is an additional security concern. This makes it possible for users to use all available space in the system tablespace, causing the database to stop working.