Oracle Database 11.2g Security Technical Implementation Guide
Pick two releases to diff their requirements.
Open a previous version of this STIG.
Digest of Updates +142 −203
Comparison against the immediately-prior release (V1R19). Rule matching uses the Group Vuln ID. Content-change detection compares the rule’s description, check, and fix text after stripping inline markup — cosmetic-only edits aren’t flagged.
Added rules 142
- V-219695 Medium Access to default accounts used to support replication must be restricted to authorized DBAs.
- V-219696 Medium Oracle instance names must not contain Oracle version numbers.
- V-219697 Medium Fixed user and public database links must be authorized for use.
- V-219698 Low A minimum of two Oracle control files must be defined and configured to be stored on separate, archived disks (physical or virtual) or archived partitions on a RAID device.
- V-219699 Medium A minimum of two Oracle redo log groups/files must be defined and configured to be stored on separate, archived physical disks or archived directories on a RAID device.
- V-219700 Medium The Oracle WITH GRANT OPTION privilege must not be granted to non-DBA or non-Application administrator user accounts.
- V-219701 Medium Execute permission must be revoked from PUBLIC for restricted Oracle packages.
- V-219702 High The Oracle REMOTE_OS_AUTHENT parameter must be set to FALSE.
- V-219703 High The Oracle REMOTE_OS_ROLES parameter must be set to FALSE.
- V-219704 Medium The Oracle SQL92_SECURITY parameter must be set to TRUE.
- V-219705 Medium The Oracle password file ownership and permissions should be limited and the REMOTE_LOGIN_PASSWORDFILE parameter must be set to EXCLUSIVE or NONE.
- V-219706 Medium System privileges granted using the WITH ADMIN OPTION must not be granted to unauthorized user accounts.
- V-219707 Medium System Privileges must not be granted to PUBLIC.
- V-219708 Medium Oracle roles granted using the WITH ADMIN OPTION must not be granted to unauthorized accounts.
- V-219709 Medium Object permissions granted to PUBLIC must be restricted.
- V-219710 High The Oracle Listener must be configured to require administration authentication.
- V-219711 Medium Application role permissions must not be assigned to the Oracle PUBLIC role.
- V-219712 Medium Oracle application administration roles must be disabled if not required and authorized.
- V-219713 Medium Connections by mid-tier web and application systems to the Oracle DBMS from a DMZ or external network must be encrypted.
- V-219714 Medium Database job/batch queues must be reviewed regularly to detect unauthorized database job submissions.
- V-219715 Medium Unauthorized database links must not be defined and active.
- V-219716 Medium Sensitive information from production database exports must be modified before being imported into a development database.
- V-219719 Medium Only authorized system accounts must have the SYSTEM tablespace specified as the default tablespace.
- V-219720 Medium Application owner accounts must have a dedicated application tablespace.
- V-219721 Medium The directories assigned to the LOG_ARCHIVE_DEST* parameters must be protected from unauthorized access.
- V-219722 Medium The Oracle _TRACE_FILES_PUBLIC parameter if present must be set to FALSE.
- V-219723 Medium Application object owner accounts must be disabled when not performing installation or maintenance actions.
- V-219724 Medium DBMS production application and data directories must be protected from developers on shared production/development DBMS host systems.
- V-219725 Medium Use of the DBMS installation account must be logged.
- V-219733 Medium The directory assigned to the AUDIT_FILE_DEST parameter must be protected from unauthorized access and must be stored in a dedicated directory or disk partition separate from software or other application files.
- V-219736 Medium Access to DBMS software files and directories must not be granted to unauthorized users.
- V-219737 Medium Replication accounts must not be granted DBA privileges.
- V-219738 Medium Network access to the DBMS must be restricted to authorized personnel.
- V-219739 Medium Changes to configuration options must be audited.
- V-219742 Medium Changes to DBMS security labels must be audited.
- V-219743 Medium Remote database or other external access must use fully-qualified names.
- V-219744 Medium The /diag subdirectory under the directory assigned to the DIAGNOSTIC_DEST parameter must be protected from unauthorized access.
- V-219745 Medium Remote administration must be disabled for the Oracle connection manager.
- V-219746 Medium The SQLNet SQLNET.ALLOWED_LOGON_VERSION parameter must be set to a value of 12 or higher.
- V-219747 High The DBMS, when using PKI-based authentication, must enforce authorized access to the corresponding private key.
- V-219748 Medium The DBMS must limit the number of concurrent sessions for each system account to an organization-defined number of sessions.
- V-219749 Medium The system must employ automated mechanisms for supporting Oracle user account management.
- V-219750 Medium The DBMS must enforce approved authorizations for logical access to the system in accordance with applicable policy.
- V-219751 Medium The DBMS must provide audit record generation capability for organization-defined auditable events within the database.
- V-219752 Medium The DBMS must allow designated organizational personnel to select which auditable events are to be audited by the database.
- V-219753 Medium The DBMS must generate audit records for the DoD-selected list of auditable events, to the extent such information is available.
- V-219754 Medium The DBMS must produce audit records containing sufficient information to establish what type of events occurred.
- V-219755 Medium The DBMS must produce audit records containing sufficient information to establish when (date and time) the events occurred.
- V-219756 Medium The DBMS must produce audit records containing sufficient information to establish where the events occurred.
- V-219757 Medium The DBMS must produce audit records containing sufficient information to establish the sources (origins) of the events.
- V-219758 Medium The DBMS must produce audit records containing sufficient information to establish the outcome (success or failure) of the events.
- V-219759 Medium The DBMS must produce audit records containing sufficient information to establish the identity of any user/subject or process associated with the event.
- V-219760 Medium The DBMS must include organization-defined additional, more detailed information in the audit records for audit events identified by type, location, or subject.
- V-219761 Medium The DBMS must protect audit information from any type of unauthorized access.
- V-219762 Medium The DBMS must protect audit information from unauthorized modification.
- V-219763 Medium The DBMS must protect audit information from unauthorized deletion.
- V-219764 Medium The DBMS must protect audit tools from unauthorized access.
- V-219765 Medium The DBMS must protect audit tools from unauthorized modification.
- V-219766 Medium The DBMS must protect audit tools from unauthorized deletion.
- V-219767 Medium Database objects must be owned by accounts authorized for ownership.
- V-219768 Medium Default demonstration and sample databases, database objects, and applications must be removed.
- V-219769 Medium Unused database components, DBMS software, and database objects must be removed.
- V-219770 Medium Unused database components that are integrated in the DBMS and cannot be uninstalled must be disabled.
- V-219771 Medium Use of external executables must be authorized.
- V-219772 Medium Access to external executables must be disabled or restricted.
- V-219773 Medium The DBMS must support the organizational requirements to specifically prohibit or restrict the use of unauthorized functions, ports, protocols, and/or services.
- V-219774 Medium The DBMS must support organizational requirements to enforce password encryption for storage.
- V-219775 Medium The DBMS, when utilizing PKI-based authentication, must validate certificates by constructing a certification path with status information to an accepted trust anchor.
- V-219776 Medium The DBMS must ensure that PKI-based authentication maps the authenticated identity to the user account.
- V-219777 Medium Processes (services, applications, etc.) that connect to the DBMS independently of individual users, must use valid, current DoD-issued PKI certificates for authentication to the DBMS.
- V-219778 Medium The DBMS must use NIST-validated FIPS 140-2-compliant cryptography for authentication mechanisms.
- V-219779 Medium The DBMS must terminate user sessions upon user logout or any other organization or policy-defined session termination events, such as idle time limit exceeded.
- V-219780 Medium The DBMS must preserve any organization-defined system state information in the event of a system failure.
- V-219781 Medium The DBMS must take needed steps to protect data at rest and ensure confidentiality and integrity of application data.
- V-219782 Medium The DBMS must isolate security functions from non-security functions by means of separate security domains.
- V-219783 Medium The DBMS must prevent unauthorized and unintended information transfer via shared system resources.
- V-219784 Medium The DBMS must check the validity of data inputs.
- V-219785 Medium The DBMS must only generate error messages that provide information necessary for corrective actions without revealing organization-defined sensitive or potentially harmful information in error logs and administrative messages that could be exploited.
- V-219786 Medium The DBMS must restrict error messages, so only authorized personnel may view them.
- V-219787 High Applications must obscure feedback of authentication information during the authentication process to protect the information from possible exploitation/use by unauthorized individuals.
- V-219788 High When using command-line tools such as Oracle SQL*Plus, which can accept a plain-text password, users must use an alternative login method that does not expose the password.
- V-219789 Medium Disk space used by audit trail(s) must be monitored; audit records must be regularly or continuously offloaded to a centralized log management system.
- V-219790 Medium Database software, applications, and configuration files must be monitored to discover unauthorized changes.
- V-219791 Medium Logic modules within the database (to include packages, procedures, functions and triggers) must be monitored to discover unauthorized changes.
- V-219792 Medium The DBMS software installation account must be restricted to authorized users.
- V-219793 Medium Database software directories, including DBMS configuration files, must be stored in dedicated directories, or DASD pools, separate from the host OS and other applications.
- V-219794 Medium The DBMS must uniquely identify and authenticate organizational users (or processes acting on behalf of organizational users).
- V-219795 Medium The DBMS must uniquely identify and authenticate non-organizational users (or processes acting on behalf of non-organizational users).
- V-219796 Medium The DBMS must separate user functionality (including user interface services) from database management functionality.
- V-219797 Low The DBMS must protect against an individual using a group account from falsely denying having performed a particular action.
- V-237753 Medium Oracle database products must be a version supported by the vendor.
- V-238431 High DBA OS accounts must be granted only those host system privileges necessary for the administration of the DBMS.
- V-238432 High Vendor-supported software must be evaluated and patched against newly found vulnerabilities.
- V-238433 High DBMS default accounts must be assigned custom passwords.
- V-238434 High The DBMS must employ cryptographic mechanisms preventing the unauthorized disclosure of information during transmission unless the transmitted data is otherwise protected by alternative physical measures.
- V-238435 Medium The DBMS must support the disabling of network protocols deemed by the organization to be non-secure.
- V-238436 Medium The DBMS must provide a mechanism to automatically identify accounts designated as temporary or emergency accounts.
- V-238437 Medium The DBMS must provide a mechanism to automatically terminate accounts designated as temporary or emergency accounts after an organization-defined time period.
- V-238438 Medium The DBMS must enforce Discretionary Access Control (DAC) policy allowing users to specify and control sharing by named individuals, groups of individuals, or by both, limiting propagation of access rights and includes or excludes access to the granularity of a single user.
- V-238439 Medium The DBMS must restrict grants to sensitive information to authorized user roles.
- V-238440 Medium A single database connection configuration file must not be used to configure all database clients.
- V-238441 Medium The DBMS must be protected from unauthorized access by developers.
- V-238442 Medium The DBMS must be protected from unauthorized access by developers on shared production/development host systems.
- V-238443 Medium The DBMS must restrict access to system tables and other configuration information or metadata to DBAs or other authorized users.
- V-238444 Medium Administrative privileges must be assigned to database accounts via database roles.
- V-238445 Medium Administrators must utilize a separate, distinct administrative account when performing administrative activities, accessing database security functions, or accessing security-relevant information.
- V-238446 Medium The DBA role must not be assigned excessive or unauthorized privileges.
- V-238447 Medium OS accounts utilized to run external procedures called by the DBMS must have limited privileges.
- V-238448 Medium The DBMS must specify an account lockout duration that is greater than or equal to the organization-approved minimum.
- V-238449 Medium The DBMS must have the capability to limit the number of failed login attempts based upon an organization-defined number of consecutive invalid attempts occurring within an organization-defined time period.
- V-238450 Medium Databases utilizing Discretionary Access Control (DAC) must enforce a policy that limits propagation of access rights.
- V-238451 Medium A DBMS utilizing Discretionary Access Control (DAC) must enforce a policy that includes or excludes access to the granularity of a single user.
- V-238452 Medium The DBMS itself, or the logging or alerting mechanism the application utilizes, must provide a warning when allocated audit record storage volume reaches an organization-defined percentage of maximum audit record storage capacity.
- V-238453 Medium The DBMS must provide a real-time alert when organization-defined audit failure events occur.
- V-238454 Medium The DBMS must support enforcement of logical access restrictions associated with changes to the DBMS configuration and to the database itself.
- V-238455 Medium Database backup procedures must be defined, documented, and implemented.
- V-238456 Medium Database recovery procedures must be developed, documented, implemented, and periodically tested.
- V-238457 Medium DBMS backup and restoration files must be protected from unauthorized access.
- V-238458 High The DBMS must use multifactor authentication for access to user accounts.
- V-238459 Medium The DBMS must ensure users are authenticated with an individual authenticator prior to using a group authenticator.
- V-238460 Medium The DBMS must disable user accounts after 35 days of inactivity.
- V-238461 Medium The DBMS must support organizational requirements to enforce minimum password length.
- V-238462 Medium The DBMS must support organizational requirements to prohibit password reuse for the organization-defined number of generations.
- V-238463 Medium The DBMS must support organizational requirements to enforce password complexity by the number of upper-case characters used.
- V-238464 Medium The DBMS must support organizational requirements to enforce password complexity by the number of lower-case characters used.
- V-238465 Medium The DBMS must support organizational requirements to enforce password complexity by the number of numeric characters used.
- V-238466 Medium The DBMS must support organizational requirements to enforce password complexity by the number of special characters used.
- V-238467 Medium The DBMS must support organizational requirements to enforce the number of characters that get changed when passwords are changed.
- V-238468 Medium Procedures for establishing temporary passwords that meet DoD password requirements for new accounts must be defined, documented, and implemented.
- V-238469 Medium DBMS passwords must not be stored in compiled, encoded, or encrypted batch jobs or compiled, encoded, or encrypted application source code.
- V-238470 Medium The DBMS must enforce password maximum lifetime restrictions.
- V-238471 Medium The DBMS must employ cryptographic mechanisms to protect the integrity and confidentiality of non-local maintenance and diagnostic communications.
- V-238472 Medium The DBMS must employ strong identification and authentication techniques when establishing non-local maintenance and diagnostic sessions.
- V-238473 Medium The DBMS must terminate the network connection associated with a communications session at the end of the session or after 15 minutes of inactivity.
- V-238474 Medium The DBMS must implement required cryptographic protections using cryptographic modules complying with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.
- V-238475 Medium Database data files containing sensitive information must be encrypted.
- V-238476 Medium The DBMS must automatically terminate emergency accounts after an organization-defined time period for each type of account.
- V-238477 Medium The DBMS must protect against or limit the effects of the organization-defined types of Denial of Service (DoS) attacks.
- V-238478 Medium The DBMS must verify there have not been unauthorized changes to the DBMS software and information.
- V-238479 Medium The DBMS must support taking organization-defined list of least disruptive actions to terminate suspicious events.
- V-238480 Medium Use of the DBMS software installation account must be restricted.
- V-238481 Medium The OS must limit privileges to change the DBMS software resident within software libraries (including privileged programs).
Removed rules 203
- V-52125 High DBA OS accounts must be granted only those host system privileges necessary for the administration of the DBMS.
- V-52133 Medium The DBMS must protect the integrity of publicly available information and applications.
- V-52135 Medium The DBMS must terminate user sessions upon user logout or any other organization or policy-defined session termination events, such as idle time limit exceeded.
- V-52137 Medium The DBMS must provide a logout functionality to allow the user to manually terminate the session.
- V-52141 Medium The DBMS must preserve any organization-defined system state information in the event of a system failure.
- V-52143 Medium The DBMS must take needed steps to protect data at rest and ensure confidentiality and integrity of application data.
- V-52145 Medium The DBMS must employ cryptographic mechanisms preventing the unauthorized disclosure of information at rest.
- V-52147 Medium The DBMS must isolate security functions from non-security functions by means of separate security domains.
- V-52149 Medium The DBMS must automatically terminate emergency accounts after an organization-defined time period for each type of account.
- V-52151 Medium The DBMS must produce audit records containing sufficient information to establish the identity of any user/subject or process associated with the event.
- V-52153 Medium The DBMS must employ automated mechanisms to alert security personnel of inappropriate or unusual activities with security implications.
- V-52155 Medium The DBMS must include organization-defined additional, more detailed information in the audit records for audit events identified by type, location, or subject.
- V-52157 Medium The DBMS must prevent unauthorized and unintended information transfer via shared system resources.
- V-52159 Medium The DBMS itself, or the logging or alerting mechanism the application utilizes, must provide a warning when allocated audit record storage volume reaches an organization-defined percentage of maximum audit record storage capacity.
- V-52161 Medium The DBMS must protect against or limit the effects of the organization-defined types of Denial of Service (DoS) attacks.
- V-52163 Medium The DBMS must provide a real-time alert when organization-defined audit failure events occur.
- V-52165 Medium The DBMS must check the validity of data inputs.
- V-52167 Medium The DBMS must alert designated organizational officials in the event of an audit processing failure.
- V-52169 Medium The DBMS must verify there have not been unauthorized changes to the DBMS software and information.
- V-52171 Medium The system must provide the capability to automatically process audit records for events of interest based upon selectable event criteria.
- V-52173 Medium The DBMS must identify potentially security-relevant error conditions.
- V-52175 Medium Attempts to bypass access controls must be audited.
- V-52177 Medium The DBMS must only generate error messages that provide information necessary for corrective actions without revealing organization-defined sensitive or potentially harmful information in error logs and administrative messages that could be exploited.
- V-52179 Medium The DBMS must protect audit information from any type of unauthorized access.
- V-52181 Medium The DBMS must restrict error messages, so only authorized personnel may view them.
- V-52183 Medium The DBMS must support taking organization-defined list of least disruptive actions to terminate suspicious events.
- V-52185 Medium The DBMS must protect audit information from unauthorized modification.
- V-52187 Medium The DBMS must notify appropriate individuals when accounts are created.
- V-52189 Medium The DBMS must protect audit information from unauthorized deletion.
- V-52191 Medium The DBMS must notify appropriate individuals when accounts are modified.
- V-52193 Medium The DBMS must protect audit tools from unauthorized access.
- V-52195 Medium The DBMS must notify appropriate individuals when account disabling actions are taken.
- V-52197 Medium The DBMS must protect audit tools from unauthorized modification.
- V-52199 Medium The DBMS must notify appropriate individuals when accounts are terminated.
- V-52201 Medium The DBMS must protect audit tools from unauthorized deletion.
- V-52203 Low The DBMS must implement separation of duties through assigned information access authorizations.
- V-52205 Medium The DBMS must support the requirement to back up audit data and records onto a different system or media than the system being audited on an organization-defined frequency.
- V-52209 Low The DBMS must provide an audit log reduction capability.
- V-52211 Medium The DBMS must protect audit data records and integrity by using cryptographic mechanisms.
- V-52213 Low The DBMS must provide a report generation capability for audit reduction data.
- V-52215 Medium The DBMS must protect the audit records generated, as a result of remote access to privileged accounts, and the execution of privileged functions.
- V-52217 Low The DBMS must restrict the ability of users to launch Denial of Service (DoS) attacks against other information systems or networks.
- V-52219 Medium The DBMS must support enforcement of logical access restrictions associated with changes to the DBMS configuration and to the database itself.
- V-52221 Low The DBMS must manage resources to limit the effects of information flooding types of Denial of Service (DoS) incidents.
- V-52223 Medium Database objects must be owned by accounts authorized for ownership.
- V-52225 Low The DBMS must limit the use of resources by priority and not impede the host from servicing processes designated as a higher-priority.
- V-52227 Low The DBMS must support organizational requirements to employ automated patch management tools to facilitate flaw remediation to organization-defined information system components.
- V-52229 Medium The DBMS must enforce requirements for remote connections to the information system.
- V-52231 Medium Default demonstration and sample databases, database objects, and applications must be removed.
- V-52233 Medium Unused database components, DBMS software, and database objects must be removed.
- V-52235 Medium Unused database components that are integrated in the DBMS and cannot be uninstalled must be disabled.
- V-52237 Medium Use of external executables must be authorized.
- V-52239 Medium The DBMS must support the organizational requirements to specifically prohibit or restrict the use of unauthorized functions, ports, protocols, and/or services.
- V-52241 Medium Recovery procedures and technical system features must exist to ensure recovery is done in a secure and verifiable manner.
- V-52245 Medium Oracle must back up user-level information per a defined frequency.
- V-52247 Medium Database backup procedures must be defined, documented, and implemented.
- V-52249 Medium Database recovery procedures must be developed, documented, implemented, and periodically tested.
- V-52251 Medium DBMS backup and restoration files must be protected from unauthorized access.
- V-52253 Medium DBMS must conduct backups of system-level information per organization-defined frequency that is consistent with recovery time and recovery point objectives.
- V-52255 Medium The DBMS must use multifactor authentication for network access to privileged accounts.
- V-52257 Medium The DBMS must use multifactor authentication for network access to non-privileged accounts.
- V-52259 Medium The DBMS must use multifactor authentication for local access to privileged accounts.
- V-52263 Medium The DBMS must ensure users are authenticated with an individual authenticator prior to using a group authenticator.
- V-52265 Medium The DBMS must use organization-defined replay-resistant authentication mechanisms for network access to privileged accounts.
- V-52267 Medium The DBMS must use organization-defined replay-resistant authentication mechanisms for network access to non-privileged accounts.
- V-52269 Medium The DBMS must disable user accounts after 35 days of inactivity.
- V-52271 Medium The DBMS must support organizational requirements to enforce minimum password length.
- V-52273 Medium The DBMS must support organizational requirements to prohibit password reuse for the organization-defined number of generations.
- V-52275 Medium The DBMS must support organizational requirements to enforce password complexity by the number of upper-case characters used.
- V-52277 Medium The DBMS must support organizational requirements to enforce password complexity by the number of lower-case characters used.
- V-52279 Medium The DBMS must support organizational requirements to enforce password complexity by the number of numeric characters used.
- V-52281 Medium The DBMS must support organizational requirements to enforce password complexity by the number of special characters used.
- V-52283 Medium The DBMS must support organizational requirements to enforce the number of characters that get changed when passwords are changed.
- V-52285 Medium The DBMS must support organizational requirements to enforce password encryption for storage.
- V-52287 Medium Procedures for establishing temporary passwords that meet DoD password requirements for new accounts must be defined, documented, and implemented.
- V-52289 Medium DBMS passwords must not be stored in compiled, encoded, or encrypted batch jobs or compiled, encoded, or encrypted application source code.
- V-52291 Medium The DBMS must enforce password maximum lifetime restrictions.
- V-52293 Medium The DBMS, when utilizing PKI-based authentication, must validate certificates by constructing a certification path with status information to an accepted trust anchor.
- V-52295 Medium The DBMS must ensure that PKI-based authentication maps the authenticated identity to the user account.
- V-52297 Medium The DBMS must use NIST-validated FIPS 140-2-compliant cryptography for authentication mechanisms.
- V-52299 Medium The DBMS must employ cryptographic mechanisms to protect the integrity and confidentiality of non-local maintenance and diagnostic communications.
- V-52301 Medium The DBMS must employ strong identification and authentication techniques when establishing non-local maintenance and diagnostic sessions.
- V-52303 Medium Databases employed to write data to portable digital media must use cryptographic mechanisms to protect and restrict access to information on portable digital media.
- V-52305 Medium The DBMS must support organizational requirements to encrypt information stored in the database, and information extracted or derived from the database and stored on digital media.
- V-52307 Medium The DBMS must terminate the network connection associated with a communications session at the end of the session or after 15 minutes of inactivity.
- V-52309 Medium The DBMS must implement required cryptographic protections using cryptographic modules complying with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance.
- V-52311 Medium Database data files containing sensitive information must be encrypted.
- V-52327 High Vendor-supported software must be evaluated and patched against newly found vulnerabilities.
- V-52329 High DBMS default accounts must be assigned custom passwords.
- V-52331 High The DBMS, when using PKI-based authentication, must enforce authorized access to the corresponding private key.
- V-52333 High The DBMS must employ cryptographic mechanisms preventing the unauthorized disclosure of information during transmission unless the transmitted data is otherwise protected by alternative physical measures.
- V-52337 Medium The DBMS must limit the number of concurrent sessions for each system account to an organization-defined number of sessions.
- V-52345 Medium The DBMS must ensure remote sessions that access an organization-defined list of security functions and security-relevant information are audited.
- V-52347 Medium The DBMS must support the disabling of network protocols deemed by the organization to be non-secure.
- V-52349 Medium The system must employ automated mechanisms for supporting Oracle user account management.
- V-52351 Medium The DBMS must provide a mechanism to automatically identify accounts designated as temporary or emergency accounts.
- V-52353 Medium The DBMS must provide a mechanism to automatically terminate accounts designated as temporary or emergency accounts after an organization-defined time period.
- V-52357 Medium The DBMS must support the requirement to automatically audit account creation.
- V-52359 Medium The DBMS must support the requirement to automatically audit account modification.
- V-52361 Medium The DBMS must automatically audit account disabling actions, to the extent such information is available.
- V-52363 Medium The DBMS must automatically audit account termination.
- V-52365 Medium The DBMS must enforce approved authorizations for logical access to the system in accordance with applicable policy.
- V-52367 Medium The DBMS must enforce Discretionary Access Control (DAC) policy allowing users to specify and control sharing by named individuals, groups of individuals, or by both, limiting propagation of access rights and includes or excludes access to the granularity of a single user.
- V-52369 Medium DBMS processes or services must run under custom, dedicated OS accounts.
- V-52371 Medium The DBMS must restrict grants to sensitive information to authorized user roles.
- V-52373 Medium A single database connection configuration file must not be used to configure all database clients.
- V-52375 Medium The DBMS must be protected from unauthorized access by developers.
- V-52377 Medium The DBMS must be protected from unauthorized access by developers on shared production/development host systems.
- V-52379 Medium The DBMS must restrict access to system tables and other configuration information or metadata to DBAs or other authorized users.
- V-52383 Medium Administrative privileges must be assigned to database accounts via database roles.
- V-52387 Medium Administrators must utilize a separate, distinct administrative account when performing administrative activities, accessing database security functions, or accessing security-relevant information.
- V-52389 Medium All use of privileged accounts must be audited.
- V-52393 Medium The DBA role must not be assigned excessive or unauthorized privileges.
- V-52395 High Applications must obscure feedback of authentication information during the authentication process to protect the information from possible exploitation/use by unauthorized individuals.
- V-52397 High When using command-line tools such as Oracle SQL*Plus, which can accept a plain-text password, users must use an alternative login method that does not expose the password.
- V-52399 Medium OS accounts utilized to run external procedures called by the DBMS must have limited privileges.
- V-52405 Medium DBMS default accounts must be protected from misuse.
- V-52407 Medium The DBMS must specify an account lockout duration that is greater than or equal to the organization-approved minimum.
- V-52409 Medium Disk space used by audit trail(s) must be monitored; audit records must be regularly or continuously offloaded to a centralized log management system.
- V-52425 Medium Use of the DBMS software installation account must be restricted.
- V-52427 Medium Database software, applications, and configuration files must be monitored to discover unauthorized changes.
- V-52429 Medium The OS must limit privileges to change the DBMS software resident within software libraries (including privileged programs).
- V-52431 Medium The DBMS must have the capability to limit the number of failed login attempts based upon an organization-defined number of consecutive invalid attempts occurring within an organization-defined time period.
- V-52433 Medium The DBMS must provide the ability to write specified audit record content to a centralized audit log repository.
- V-52435 Medium The DBMS, when the maximum number of unsuccessful attempts is exceeded, must automatically lock the account/node for an organization-defined time period or lock the account/node until released by an administrator IAW organizational policy.
- V-52437 Medium The DBMS software installation account must be restricted to authorized users.
- V-52441 Medium Database software directories, including DBMS configuration files, must be stored in dedicated directories, or DASD pools, separate from the host OS and other applications.
- V-52445 Medium The DBMS software libraries must be periodically backed up.
- V-52447 Medium The DBMS must have its auditing configured to reduce the likelihood of storage capacity being exceeded.
- V-52449 Medium The DBMS must have allocated audit record storage capacity.
- V-52451 Medium The DBMS must uniquely identify and authenticate organizational users (or processes acting on behalf of organizational users).
- V-52453 Medium Databases utilizing Discretionary Access Control (DAC) must enforce a policy that limits propagation of access rights.
- V-52455 Medium The DBMS must uniquely identify and authenticate non-organizational users (or processes acting on behalf of non-organizational users).
- V-52457 Medium A DBMS utilizing Discretionary Access Control (DAC) must enforce a policy that includes or excludes access to the granularity of a single user.
- V-52459 Medium The DBMS must separate user functionality (including user interface services) from database management functionality.
- V-52461 Medium The DBMS must prevent the presentation of information system management-related functionality at an interface utilized by general (i.e., non-privileged) users.
- V-52463 Medium The DBMS must provide audit record generation capability for organization-defined auditable events within the database.
- V-52465 Low The DBMS must protect against an individual using a group account from falsely denying having performed a particular action.
- V-52467 Medium The DBMS must allow designated organizational personnel to select which auditable events are to be audited by the database.
- V-52469 Medium The DBMS must generate audit records for the DoD-selected list of auditable events, to the extent such information is available.
- V-52471 Medium The DBMS must produce audit records containing sufficient information to establish what type of events occurred.
- V-52473 Medium The DBMS must produce audit records containing sufficient information to establish when (date and time) the events occurred.
- V-52475 Medium The DBMS must produce audit records containing sufficient information to establish where the events occurred.
- V-52477 Medium The DBMS must produce audit records containing sufficient information to establish the sources (origins) of the events.
- V-52479 Medium The DBMS must produce audit records containing sufficient information to establish the outcome (success or failure) of the events.
- V-53281 Medium Processes (services, applications, etc.) that connect to the DBMS independently of individual users, must use valid, current DoD-issued PKI certificates for authentication to the DBMS.
- V-53959 Medium Audit trail data must be retained for one year.
- V-53961 Medium Access to default accounts used to support replication must be restricted to authorized DBAs.
- V-53963 Medium Oracle instance names must not contain Oracle version numbers.
- V-53965 Medium Fixed user and public database links must be authorized for use.
- V-53967 Low A minimum of two Oracle control files must be defined and configured to be stored on separate, archived disks (physical or virtual) or archived partitions on a RAID device.
- V-53969 Medium A minimum of two Oracle redo log groups/files must be defined and configured to be stored on separate, archived physical disks or archived directories on a RAID device.
- V-53971 Medium The Oracle WITH GRANT OPTION privilege must not be granted to non-DBA or non-Application administrator user accounts.
- V-53973 Medium Execute permission must be revoked from PUBLIC for restricted Oracle packages.
- V-53975 High The Oracle REMOTE_OS_AUTHENT parameter must be set to FALSE.
- V-53977 High The Oracle REMOTE_OS_ROLES parameter must be set to FALSE.
- V-53979 Medium The Oracle SQL92_SECURITY parameter must be set to TRUE.
- V-53981 Medium The Oracle password file ownership and permissions should be limited and the REMOTE_LOGIN_PASSWORDFILE parameter must be set to EXCLUSIVE or NONE.
- V-53983 Medium System privileges granted using the WITH ADMIN OPTION must not be granted to unauthorized user accounts.
- V-53985 Medium System Privileges must not be granted to PUBLIC.
- V-53987 Medium Oracle roles granted using the WITH ADMIN OPTION must not be granted to unauthorized accounts.
- V-53989 Medium Object permissions granted to PUBLIC must be restricted.
- V-53991 High The Oracle Listener must be configured to require administration authentication.
- V-53993 Medium Application role permissions must not be assigned to the Oracle PUBLIC role.
- V-53995 Medium Oracle application administration roles must be disabled if not required and authorized.
- V-53997 Medium Connections by mid-tier web and application systems to the Oracle DBMS from a DMZ or external network must be encrypted.
- V-53999 Medium Database job/batch queues must be reviewed regularly to detect unauthorized database job submissions.
- V-54001 Medium Unauthorized database links must not be defined and active.
- V-54003 Medium Sensitive information from production database exports must be modified before being imported into a development database.
- V-54005 Medium Application user privilege assignment must be reviewed monthly or more frequently to ensure compliance with least privilege and documented policy.
- V-54007 Medium Audit trail data must be reviewed daily or more frequently.
- V-54009 Medium Only authorized system accounts must have the SYSTEM tablespace specified as the default tablespace.
- V-54011 Medium Application owner accounts must have a dedicated application tablespace.
- V-54013 Medium The directories assigned to the LOG_ARCHIVE_DEST* parameters must be protected from unauthorized access.
- V-54015 Medium The Oracle _TRACE_FILES_PUBLIC parameter if present must be set to FALSE.
- V-54017 Medium Application object owner accounts must be disabled when not performing installation or maintenance actions.
- V-54019 Medium DBMS production application and data directories must be protected from developers on shared production/development DBMS host systems.
- V-54021 Medium Use of the DBMS installation account must be logged.
- V-54023 Medium Remote administrative access to the database must be monitored by the IAO or IAM.
- V-54025 Medium The database must not be directly accessible from public or unauthorized networks.
- V-54027 Medium The IAM must review changes to DBA role assignments.
- V-54029 Medium Plans and procedures for testing DBMS installations, upgrades and patches must be defined and followed prior to production implementation.
- V-54031 Medium Procedures and restrictions for import of production data to development databases must be documented, implemented, and followed.
- V-54033 Medium Sensitive data stored in the database must be identified in the System Security Plan and AIS Functional Architecture documentation.
- V-54039 Medium Credentials stored and used by the DBMS to access remote databases or applications must be authorized and restricted to authorized users.
- V-54041 Medium The DBMS must not share a host supporting an independent security service.
- V-54043 Medium Access to DBMS software files and directories must not be granted to unauthorized users.
- V-54045 Medium Replication accounts must not be granted DBA privileges.
- V-54047 Medium Network access to the DBMS must be restricted to authorized personnel.
- V-54051 Medium Changes to configuration options must be audited.
- V-54055 Medium Remote DBMS administration must be documented and authorized or disabled.
- V-54067 Medium DBMS symmetric keys must be protected in accordance with NSA- or NIST-approved key management technology or processes.
- V-54069 Medium Changes to DBMS security labels must be audited.
- V-54071 Medium Remote database or other external access must use fully-qualified names.
- V-54073 Medium The /diag subdirectory under the directory assigned to the DIAGNOSTIC_DEST parameter must be protected from unauthorized access.
- V-54075 Medium Remote administration must be disabled for the Oracle connection manager.
- V-54077 Medium The SQLNet SQLNET.ALLOWED_LOGON_VERSION parameter must be set to a value of 12 or higher.
- V-54079 Medium The DBMS host platform and other dependent applications must be configured in compliance with applicable STIG requirements.
- V-57615 Medium The directory assigned to the AUDIT_FILE_DEST parameter must be protected from unauthorized access and must be stored in a dedicated directory or disk partition separate from software or other application files.
- V-59855 Medium Owners of privileged accounts must use non-privileged accounts for non-administrative activities.
- V-60141 Medium Access to external executables must be disabled or restricted.
- V-68861 Medium Logic modules within the database (to include packages, procedures, functions and triggers) must be monitored to discover unauthorized changes.
- V-75031 Medium The DBMS must use multifactor authentication for local access to non-privileged accounts.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-021200
- Vuln IDs
-
- V-219695
- V-53961
- Rule IDs
-
- SV-219695r401224_rule
- SV-68201
Checks: C-21420r306934_chk
From SQL*Plus: select 'The number of replication objects defined is: '|| count(*) from all_tables where table_name like 'REPCAT%'; If the count returned is 0, then Oracle Replication is not installed and this check is Not a Finding. Otherwise: From SQL*Plus: select count(*) from sys.dba_repcatlog; If the count returned is 0, then Oracle Replication is not in use and this check is Not a Finding. If any results are returned, ask the IAO or DBA if the replication account (the default is REPADMIN, but may be customized) is restricted to IAO-authorized personnel only. If it is not, this is a Finding. If there are multiple replication accounts, confirm that all are justified and documented with the IAO. If they are not, this is a Finding.
Fix: F-21419r306935_fix
Change the password for default and custom replication accounts and provide the password to IAO-authorized users only.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-021300
- Vuln IDs
-
- V-219696
- V-53963
- Rule IDs
-
- SV-219696r401224_rule
- SV-68203
Checks: C-21421r306937_chk
From SQL*Plus: select instance_name from v$instance; select version from v$instance; If the instance name returned references the Oracle release number, this is a Finding. Numbers used that include version numbers by coincidence are not a Finding. The DBA should be able to relate the significance of the presence of a digit in the SID.
Fix: F-21420r306938_fix
Follow the instructions in Oracle MetaLink Note 15390.1 (and related documents) to change the SID for the database without re-creating the database to a value that does not identify the Oracle version.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-021400
- Vuln IDs
-
- V-219697
- V-53965
- Rule IDs
-
- SV-219697r401224_rule
- SV-68205
Checks: C-21422r306940_chk
From SQL*Plus: select owner||': '||db_link from dba_db_links; select count(*) from sys.dba_repcatlog; If no records are returned from the first SQL statement, this check is Not a Finding. If the value of the count returned is 0 for the second SQL statement, none of the database links listed above, if any, is used for replication. Confirm the public and fixed user database links listed are documented in the System Security Plan, are authorized by the IAO and are used for replication or operational system requirements. If any are not, this is a Finding.
Fix: F-21421r306941_fix
Document all authorized connections from the database to remote databases in the System Security Plan. Remove all unauthorized remote database connection definitions from the database. From SQL*Plus: drop database link [link name]; OR drop public database link [link name]; Review remote database connection definitions periodically and confirm their use is still required and authorized.
- RMF Control
- CM-6
- Severity
- L
- CCI
- CCI-000366
- Version
- O112-BP-021500
- Vuln IDs
-
- V-219698
- V-53967
- Rule IDs
-
- SV-219698r401224_rule
- SV-68207
Checks: C-21423r306943_chk
From SQL*Plus: select name from v$controlfile; DoD guidance recommends: 1. A minimum of two distinct control files for each Oracle Database Instance. 2a. Each control file is to be located on separate, archived physical or logical storage devices OR 2b. Each control file is to be located on separate, archived directories within one or more RAID devices 3. The Logical Paths for each control file should differ at the highest level supported by your configuration, for example: UNIX /ora03/app/oracle/{SID}/control/control01.ctl /ora04/app/oracle/{SID}/control/control02.ctl Windows D:/oracle/{SID}/control/control01.ctl E:/oracle/{SID}/control/control02.ctl If this minimum listed above is not met, this is a Finding. Consult with the SA or DBA to determine that the mount points or partitions referenced in the file paths indicate separate physical disks or directories on RAID devices. NOTE: Distinct does not equal dedicated. You may share directory space with other Oracle database instances if present.
Fix: F-21422r306944_fix
To prevent loss of service during disk failure, multiple copies of Oracle control files should be maintained on separate disks in archived directories or on separate, archived directories within one or more RAID devices. Adding or moving a control file requires careful planning and execution. Please consult and follow the instructions for creating control files in the Oracle Database Administrator's Guide, under Steps for Creating New Control Files.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-021600
- Vuln IDs
-
- V-219699
- V-53969
- Rule IDs
-
- SV-219699r401224_rule
- SV-68209
Checks: C-21424r306946_chk
From SQL*Plus: select count(*) from V$LOG; If the value of the count returned is less than 2, this is a Finding. From SQL*Plus: select count(*) from V$LOG where members > 1; If the value of the count returned is less than 2 and a RAID storage device is not being used, this is a Finding.
Fix: F-21423r306947_fix
To define additional redo log file groups: From SQL*Plus (Example): alter database add logfile group 2 ('diska:log2.log', 'diskb:log2.log') size 50K; To add additional redo log file [members] to an existing redo log file group: From SQL*Plus (Example): alter database add logfile member 'diskc:log2.log' to group 2; Replace diska, diskb, diskc with valid, different disk drive specifications. Replace log#.log file with valid or custom names for the log files.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-021700
- Vuln IDs
-
- V-219700
- V-53971
- Rule IDs
-
- SV-219700r401224_rule
- SV-68211
Checks: C-21425r306949_chk
Execute the query: select grantee||': '||owner||'.'||table_name from dba_tab_privs where grantable = 'YES' and grantee not in (select distinct owner from dba_objects) and grantee not in (select grantee from dba_role_privs where granted_role = 'DBA') order by grantee; If any accounts are listed, this is a finding.
Fix: F-21424r306950_fix
Revoke privileges granted the WITH GRANT OPTION from non-DBA and accounts that do not own application objects. Re-grant privileges without specifying WITH GRANT OPTION.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-021800
- Vuln IDs
-
- V-219701
- V-53973
- Rule IDs
-
- SV-219701r401224_rule
- SV-68213
Checks: C-21426r306952_chk
From SQL*Plus: select table_name from dba_tab_privs where grantee='PUBLIC' and privilege ='EXECUTE' and table_name in ('UTL_FILE', 'UTL_SMTP', 'UTL_TCP', 'UTL_HTTP', 'DBMS_RANDOM', 'DBMS_LOB', 'DBMS_SQL', 'DBMS_SYS_SQL', 'DBMS_JOB', 'DBMS_BACKUP_RESTORE', 'DBMS_OBFUSCATION_TOOLKIT'); If any records are returned, this is a Finding.
Fix: F-21425r306953_fix
Revoking all default installation privilege assignments from PUBLIC is not required at this time. However, execute permissions to the specified packages is required to be revoked from PUBLIC. Removal of these privileges from PUBLIC may result in invalid packages in version 10.1 and later of Oracle and an inability to execute default Oracle applications and utilities. To correct this problem, grant execute privileges on these packages directly to the SYSMAN, WKSYS, MDSYS and SYSTEM accounts as well as any other default Oracle database and custom application object owner accounts as necessary to support execution of applications/utilities installed with an Oracle Database Server. At a minimum, revoke the following: From SQL*Plus: revoke execute on UTL_FILE from PUBLIC; revoke execute on UTL_SMTP from PUBLIC; revoke execute on UTL_TCP from PUBLIC; revoke execute on UTL_HTTP from PUBLIC; revoke execute on DBMS_RANDOM from PUBLIC; revoke execute on DBMS_LOB from PUBLIC; revoke execute on DBMS_SQL from PUBLIC; revoke execute on DBMS_SYS_SQL from PUBLIC; revoke execute on DBMS_JOB from PUBLIC; revoke execute on DBMS_BACKUP_RESTORE from PUBLIC; revoke execute on DBMS_OBFUSCATION_TOOLKIT from PUBLIC;
- RMF Control
- CM-6
- Severity
- H
- CCI
- CCI-000366
- Version
- O112-BP-021900
- Vuln IDs
-
- V-219702
- V-53975
- Rule IDs
-
- SV-219702r401224_rule
- SV-68215
Checks: C-21427r306955_chk
From SQL*Plus: select value from v$parameter where name = 'remote_os_authent'; If the value returned does not equal FALSE, this is a Finding.
Fix: F-21426r306956_fix
Document remote OS authentication in the System Security Plan. If not required or not mitigated to an acceptable level, disable remote OS authentication. From SQL*Plus: alter system set remote_os_authent = FALSE scope = spfile; The above SQL*Plus command will set the parameter to take effect at next system startup.
- RMF Control
- CM-6
- Severity
- H
- CCI
- CCI-000366
- Version
- O112-BP-022000
- Vuln IDs
-
- V-219703
- V-53977
- Rule IDs
-
- SV-219703r401224_rule
- SV-68217
Checks: C-21428r306958_chk
From SQL*Plus: select value from v$parameter where name = 'remote_os_roles'; If the returned value is not FALSE or not documented in the System Security Plan as required, this is a Finding.
Fix: F-21427r306959_fix
Document remote OS roles in the System Security Plan. If not required, disable use of remote OS roles. From SQL*Plus: alter system set remote_os_roles = FALSE scope = spfile; The above SQL*Plus command will set the parameter to take effect at next system startup.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-022100
- Vuln IDs
-
- V-219704
- V-53979
- Rule IDs
-
- SV-219704r401224_rule
- SV-68219
Checks: C-21429r306961_chk
From SQL*Plus: select value from v$parameter where name = 'sql92_security'; If the value returned is set to FALSE, this is a Finding. If the parameter is set to TRUE or does not exist, this is Not a Finding.
Fix: F-21428r306962_fix
Enable SQL92 security. From SQL*Plus: alter system set sql92_security = TRUE scope = spfile; The above SQL*Plus command will set the parameter to take effect at next system startup.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-022200
- Vuln IDs
-
- V-219705
- V-53981
- Rule IDs
-
- SV-219705r401224_rule
- SV-68221
Checks: C-21430r306964_chk
From SQL*Plus: select value from v$parameter where upper(name) = 'REMOTE_LOGIN_PASSWORDFILE'; If the value returned does not equal 'EXCLUSIVE' or 'NONE', this is a Finding. On UNIX Systems: ls -ld $ORACLE_HOME/dbs/orapw${ORACLE_SID} Substitute ${ORACLE_SID} with the name of the ORACLE_SID for the database. If permissions are granted for world access, this is a finding. On Windows Systems (From Windows Explorer): Browse to the %ORACLE_HOME\database\directory. Select and right-click on the PWD%ORACLE_SID%.ora file, select Properties, select the Security tab. Substitute %ORACLE_SID% with the name of the ORACLE_SID for the database. If permissions are granted to everyone, this is a finding. If any account other than the DBMS software installation account is listed, this is a finding.
Fix: F-21429r306965_fix
Disable use of the remote_login_passwordfile where remote administration is not authorized by specifying a value of NONE. If authorized, restrict use of a password file to exclusive use by each database by specifying a value of EXCLUSIVE. From SQL*Plus: alter system set remote_login_passwordfile = 'EXCLUSIVE' scope = spfile; OR alter system set remote_login_passwordfile = 'NONE' scope = spfile; The above SQL*Plus command will set the parameter to take effect at next system startup. Restrict ownership and permissions on the Oracle password file to exclude world (Unix) or everyone (Windows). More information regarding the ORAPWD file and the REMOTE_LOGIN_PASSWORDFILE parameter, can be found here: https://docs.oracle.com/cd/E11882_01/server.112/e25494/dba.htm#ADMIN10241
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-022300
- Vuln IDs
-
- V-219706
- V-53983
- Rule IDs
-
- SV-219706r401224_rule
- SV-68223
Checks: C-21431r306967_chk
Run the SQL query: select grantee, privilege from dba_sys_privs where grantee not in (<list of non-applicable accounts>) and admin_option = 'YES' and grantee not in (select grantee from dba_role_privs where granted_role = 'DBA'); (With respect to the list of special accounts that are excluded from this requirement, it is expected that the DBA will maintain the list to suit local circumstances, adding special accounts as necessary and removing any that are not supposed to be in use in the Oracle deployment that is under review.) If any accounts that are not authorized to have the ADMIN OPTION are listed, this is a Finding.
Fix: F-21430r306968_fix
Revoke assignment of privileges with the WITH ADMIN OPTION from unauthorized users and re-grant them without the option. From SQL*Plus: revoke [privilege name] from user [username]; Replace [privilege name] with the named privilege and [username] with the named user. Restrict use of the WITH ADMIN OPTION to authorized administrators. Document authorized privilege assignments with the WITH ADMIN OPTION in the System Security Plan.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-022400
- Vuln IDs
-
- V-219707
- V-53985
- Rule IDs
-
- SV-219707r401224_rule
- SV-68225
Checks: C-21432r306970_chk
From SQL*Plus: select privilege from dba_sys_privs where grantee = 'PUBLIC'; If any records are returned, this is a Finding.
Fix: F-21431r306971_fix
Revoke any system privileges assigned to PUBLIC: From SQL*Plus: revoke [system privilege] from PUBLIC; Replace [system privilege] with the named system privilege. NOTE: System privileges are not granted to PUBLIC by default and would indicate a custom action.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-022500
- Vuln IDs
-
- V-219708
- V-53987
- Rule IDs
-
- SV-219708r401224_rule
- SV-68227
Checks: C-21433r306973_chk
Run the SQL query: select grantee||': '||granted_role from dba_role_privs where grantee not in (<list of non-applicable accounts>) and admin_option = 'YES' and grantee not in (select distinct owner from dba_objects) and grantee not in (select grantee from dba_role_privs where granted_role = 'DBA') order by grantee; (With respect to the list of special accounts that are excluded from this requirement, it is expected that the DBA will maintain the list to suit local circumstances, adding special accounts as necessary and removing any that are not supposed to be in use in the Oracle deployment that is under review.) Review the System Security Plan to confirm any grantees listed are ISSO-authorized DBA accounts or application administration roles. If any grantees listed are not authorized and documented, this is a Finding.
Fix: F-21432r306974_fix
Revoke assignment of roles with the WITH ADMIN OPTION from unauthorized grantees and re-grant them without the option if required. From SQL*Plus: revoke [role name] from [grantee]; grant [role name] to [grantee]; Restrict use of the WITH ADMIN OPTION to authorized administrators. Document authorized role assignments with the WITH ADMIN OPTION in the System Security Plan.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-022600
- Vuln IDs
-
- V-219709
- V-53989
- Rule IDs
-
- SV-219709r401224_rule
- SV-68229
Checks: C-21434r306976_chk
Run the SQL query: select owner ||'.'|| table_name ||':'|| privilege from dba_tab_privs where grantee = 'PUBLIC' and owner not in (<list of non-applicable accounts>); (With respect to the list of special accounts that are excluded from this requirement, it is expected that the DBA will maintain the list to suit local circumstances, adding special accounts as necessary and removing any that are not supposed to be in use in the Oracle deployment that is under review.) If any records that are not Oracle product accounts are returned, are not documented and authorized, this is a Finding. NOTE: This check may return false positives where other Oracle product accounts are not included in the exclusion list.
Fix: F-21433r306977_fix
Revoke any privileges granted to PUBLIC for objects that are not owned by Oracle product accounts. From SQL*Plus: revoke [privilege name] from [user name] on [object name]; Assign permissions to custom application user roles based on job functions: From SQL*Plus: grant [privilege name] to [user role] on [object name];
- RMF Control
- CM-6
- Severity
- H
- CCI
- CCI-000366
- Version
- O112-BP-022700
- Vuln IDs
-
- V-219710
- V-53991
- Rule IDs
-
- SV-219710r401224_rule
- SV-68231
Checks: C-21435r306979_chk
If a listener is not running on the local database host server, this check is Not a Finding. NOTE: This check needs to be done only once per host system and once per listener. Multiple listeners may be defined on a single host system. They must all be reviewed, but only once per database home review. For subsequent database home reviews on the same host system, mark this check as Not a Finding. Determine all Listeners running on the host. For Windows hosts, view all Windows services with TNSListener embedded in the service name - The service name format is: Oracle[ORACLE_HOME_NAME]TNSListener For UNIX hosts, the Oracle Listener process will indicate the TNSLSNR executable. At a command prompt, issue the command: ps -ef | grep tnslsnr | grep -v grep The alias for the listener follows tnslsnr in the command output. You must be logged on the host system using the account that owns the tnslsnr executable (UNIX). If the account is denied local login, have the system SA assist you in this task by 'su' to the listener account from the root account. On Windows platforms, log in using an account with administrator privileges to complete the check. From a system command prompt, execute the listener control utility: lsnrctl status [LISTENER NAME] Review the results for the value of Security. If Security = OFF is displayed, this is a Finding. If Security = ON: Local OS Authentication is displayed, this is not a Finding. If Security = ON: Password or Local OS Authentication, this is a Finding (do not set a password on Oracle versions 10.1 and higher. Instead, use Local OS Authentication). Repeat the execution of the lsnrctl utility for all active listeners.
Fix: F-21434r306980_fix
Configure the listener to use Local OS Authentication. This setting prevents remote administration of the listener, restricts management to the Oracle listener owner account (UNIX) and accounts with administrator privileges (WIN). Remote administration of the listener should not be permitted. If listener administration from a remote system is required, granting secure remote access to the Oracle DBMS server and performing local administration is preferred. Authorize and document this requirement in the System Security Plan.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-022800
- Vuln IDs
-
- V-219711
- V-53993
- Rule IDs
-
- SV-219711r401224_rule
- SV-68233
Checks: C-21436r306982_chk
From SQL*Plus: select granted_role from dba_role_privs where grantee = 'PUBLIC'; If any roles are listed, this is a Finding.
Fix: F-21435r306983_fix
Revoke role grants from PUBLIC. Do not assign role privileges to PUBLIC. From SQL*Plus: revoke [role name] from PUBLIC;
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-022900
- Vuln IDs
-
- V-219712
- V-53995
- Rule IDs
-
- SV-219712r401224_rule
- SV-68235
Checks: C-21437r306985_chk
Run the SQL query: select grantee, granted_role from dba_role_privs where default_role='YES' and granted_role in (select grantee from dba_sys_privs where upper(privilege) like '%USER%') and grantee not in (<list of non-applicable accounts>) and grantee not in (select distinct owner from dba_tables) and grantee not in (select distinct username from dba_users where upper(account_status) like '%LOCKED%'); (With respect to the list of special accounts that are excluded from this requirement, it is expected that the DBA will maintain the list to suit local circumstances, adding special accounts as necessary and removing any that are not supposed to be in use in the Oracle deployment that is under review.) Review the list of accounts reported for this check and ensure that they are authorized application administration roles. If any are not authorized application administration roles, this is a Finding.
Fix: F-21436r306986_fix
For each role assignment returned, issue: From SQL*Plus: alter user [username] default role all except [role]; If the user has more than one application administration role assigned, then you will have to remove assigned roles from default assignment and assign individually the appropriate default roles.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-023000
- Vuln IDs
-
- V-219713
- V-53997
- Rule IDs
-
- SV-219713r401224_rule
- SV-68237
Checks: C-21438r306988_chk
Review the System Security Plan for remote applications that access and use the database. For each remote application or application server, determine whether communications between it and the DBMS are encrypted. If any are not encrypted, this is a finding.
Fix: F-21437r306989_fix
Configure communications between the DBMS and remote applications/application servers to use DoD-approved encryption.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-023100
- Vuln IDs
-
- V-219714
- V-53999
- Rule IDs
-
- SV-219714r401224_rule
- SV-68239
Checks: C-21439r306991_chk
The DBMS_JOB PL/SQL package has been replaced by DBMS_SCHEDULER in Oracle versions 10.1 and higher, though it continues to be supported for backward compatibility. Run this query: select value from v$parameter where name = 'job_queue_processes'; Run this query: select value from all_scheduler_global_attribute where ATTRIBUTE_NAME = 'MAX_JOB_SLAVE_PROCESSES'; To understand the relationship between these settings, review: https://docs.oracle.com/cd/E11882_01/server.112/e25494/appendix_a.htm#ADMIN11002 Review documented and implemented procedures for monitoring the Oracle DBMS job/batch queues for unauthorized submissions. If procedures for job queue review are not defined, documented or evidence of implementation does not exist, this is a Finding. Job queue information is available from the DBA_JOBS view. The following command lists jobs submitted to the queue. DBMS_JOB does not generate a 'history' of previous job executions. Run this query: select job, next_date, next_sec, failures, broken from dba_jobs; Scheduler queue information is available from the DBA_SCHEDULER_JOBS view. The following command lists jobs submitted to the queue. Run this query: select owner, job_name, state, job_class, job_type, job_action from dba_scheduler_jobs;
Fix: F-21438r306992_fix
Develop, document and implement procedures to monitor the database job queues for unauthorized job submissions. Develop, document and implement a formal migration plan to convert jobs using DBMS_JOB to use DBMS_SCHEDULER instead for Oracle versions 10.1 and higher. (This does not apply to DBMS_JOB jobs generated by Oracle itself, such as those for refreshing materialized views.) Set the value of the job_queue_processes parameter to a low value to restrict concurrent DBMS_JOB executions. Use auditing to capture use of the DBMS_JOB package in the audit trail. Review the audit trail for unauthorized use of the DBMS_JOB package.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-023200
- Vuln IDs
-
- V-219715
- V-54001
- Rule IDs
-
- SV-219715r401224_rule
- SV-68241
Checks: C-21440r306994_chk
From SQL*Plus: select db_link||': '||host from dba_db_links; If no links are returned, this check is Not a Finding. Review documentation for definitions of authorized database links to external interfaces. The documentation should include: - Any remote access to the database - The purpose or function of the remote connection - Any access to data or procedures stored externally to the local DBMS - Any network ports or protocols used by remote connections, whether the remote connection is to a production, test, or development system - Any security accounts used by DBMS to access remote resources or objects If any unauthorized database links are defined or the definitions do not match the documentation, this is a Finding. NOTE: Findings for production-development links under this check are assigned to the production database only. If any database links are defined between the production database and any test or development databases, this is a Finding. If remote interface documentation does not exist or is incomplete, this is a Finding.
Fix: F-21439r306995_fix
Document all remote or external interfaces used by the DBMS to connect to or allow connections from remote or external sources. Include with the documentation as appropriate, any network ports or protocols, security accounts, and the sensitivity of any data exchanged. Do not define or configure database links between production databases and test or development databases.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-023300
- Vuln IDs
-
- V-219716
- V-54003
- Rule IDs
-
- SV-219716r401224_rule
- SV-68243
Checks: C-21441r306997_chk
If the database being reviewed is a production database, this check is Not a Finding. Review policy, procedures and restrictions for data imports of production data containing sensitive information into development databases. If data imports of production data are allowed, review procedures for protecting any sensitive data included in production exports. If sensitive data is included in the exports and no procedures are in place to remove or modify the data to render it not sensitive prior to import into a development database or policy and procedures are not in place to ensure authorization of development personnel to access sensitive information contained in production data, this is a Finding.
Fix: F-21440r306998_fix
Develop, document and implement policy, procedures and restrictions for production data import. Require any users assigned privileges that allow the export of production data from the database to acknowledge understanding of import policies, procedures and restrictions. Restrict permissions of development personnel requiring use or access to production data imported into development databases containing sensitive information to authorized users. Implement policy and procedures to modify or remove sensitive information in production exports prior to import into development databases.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-023600
- Vuln IDs
-
- V-219719
- V-54009
- Rule IDs
-
- SV-219719r401224_rule
- SV-68249
Checks: C-21444r307006_chk
Run the query: select property_name, property_value from database_properties where property_name in ('DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESPACE'); If either value is set to SYSTEM, this is a finding. Run the query: select username from dba_users where (default_tablespace = 'SYSTEM' or temporary_tablespace = 'SYSTEM') and username not in ('LBACSYS','OUTLN','SYS','SYSTEM'); If any non-default account records are returned, this is a finding.
Fix: F-21443r307007_fix
Create and dedicate tablespaces to support only one application. Do not share tablespaces between applications. Do not grant quotas to application object owners on tablespaces not dedicated to their associated application. Run the queries: alter database default tablespace <tablespace_name>; alter database default temporary tablespace <temporary_tablespace_name>; alter user <username> default tablespace <tablespace_name> temporary tablespace <temporary_tablespace_name>; Replace <username> with the named user account. Replace <tablespace_name> with the new default tablespace name. Replace <temporary_tablespace_name> with the new default temporary tablespace name (typically TEMP). Repeat the "alter user" for each affected user account.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-023700
- Vuln IDs
-
- V-219720
- V-54011
- Rule IDs
-
- SV-219720r401224_rule
- SV-68251
Checks: C-21445r307009_chk
Run the SQL query: select distinct owner, tablespace_name from dba_SEGMENTS where owner not in (<list of non-applicable accounts>) order by tablespace_name; (With respect to the list of special accounts that are excluded from this requirement, it is expected that the DBA will maintain the list to suit local circumstances, adding special accounts as necessary and removing any that are not supposed to be in use in the Oracle deployment that is under review.) Review the list of returned table owners with the tablespace used. If any of the owners listed are not default Oracle accounts and use the SYSTEM or any other tablespace not dedicated for the application’s use, this is a Finding. Look for multiple applications that may share a tablespace. If no records were returned, ask the DBA if any applications use this database. If no applications use the database, this is not a Finding. If there are applications that do use the database or if the application uses the SYS or other default account and SYSTEM tablespace to store its objects, this is a Finding.
Fix: F-21444r307010_fix
Create and assign dedicated tablespaces for the storage of data by each application using the CREATE TABLESPACE command.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-023800
- Vuln IDs
-
- V-219721
- V-54013
- Rule IDs
-
- SV-219721r401224_rule
- SV-68253
Checks: C-21446r307012_chk
From SQL*Plus: select log_mode from v$database; select value from v$parameter where name = 'log_archive_dest'; select value from v$parameter where name = 'log_archive_duplex_dest'; select name, value from v$parameter where name LIKE 'log_archive_dest_%'; If the value returned for LOG_MODE is NOARCHIVELOG, this check is Not a Finding. If a value is not returned for LOG_ARCHIVE_DEST and no values are returned for any of the LOG_ARCHIVE_DEST_[1-10] parameters, this is a Finding. NOTE: LOG_ARCHIVE_DEST and LOG_ARCHIVE_DUPLEX_DEST are incompatible with the LOG_ARCHIVE_DEST_n parameters, and must be defined as the null string (' ') when any LOG_ARCHIVE_DEST_n parameter has a value other than a null string. On UNIX Systems: ls -ld [pathname] Substitute [pathname] with the directory paths listed from the above SQL statements for log_archive_dest and log_archive_duplex_dest. If permissions are granted for world access, this is a Finding. On Windows Systems (From Windows Explorer): Browse to the directory specified. Select and right-click on the directory, select Properties, select the Security tab. If permissions are granted to everyone, this is a Finding. If any account other than the Oracle process and software owner accounts, Administrators, DBAs, System group or developers authorized to write and debug applications on this database are listed, this is a Finding.
Fix: F-21445r307013_fix
Specify a valid and protected directory for archive log files. Restrict access to the Oracle process and software owner accounts, DBAs, and backup operator accounts.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-023900
- Vuln IDs
-
- V-219722
- V-54015
- Rule IDs
-
- SV-219722r401224_rule
- SV-68255
Checks: C-21447r307015_chk
From SQL*Plus: select value from v$parameter where name = '_trace_files_public'; If the value returned is TRUE, this is a Finding. If the parameter does not exist or is set to FALSE, this is Not a Finding.
Fix: F-21446r307016_fix
From SQL*Plus (shutdown database instance): shutdown immediate From SQL*Plus (create a pfile from spfile): create pfile='[PATH]init[SID].ora' from spfile; Edit the init[SID].ora file and remove the following line: *._trace_files_public=TRUE From SQL*Plus (update the spfile using the pfile): create spfile from pfile='[PATH]init[SID].ora'; From SQL*Plus (start the database instance): startup NOTE: [PATH] depends on the platform (Windows or UNIX). Ensure the file is directed to a writable location. [SID] is equal to the oracle SID or database instance ID.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-024000
- Vuln IDs
-
- V-219723
- V-54017
- Rule IDs
-
- SV-219723r401224_rule
- SV-68257
Checks: C-21448r307018_chk
Run the SQL query: select distinct o.owner from dba_objects o, dba_users u where o.owner not in ( <list of non-applicable accounts> ) and o.object_type <> 'SYNONYM' and o.owner = username and upper(account_status) not like '%LOCKED%'; (With respect to the list of special accounts that are excluded from this requirement, it is expected that the DBA will maintain the list to suit local circumstances, adding special accounts as necessary and removing any that are not supposed to be in use in the Oracle deployment that is under review.) To obtain a list of users assigned DBA privileges, run the query: select grantee from dba_role_privs where granted_role = ’DBA’; If any records are returned, then verify the account is an authorized application object owner account or a default account installed to support an Oracle product. Verify that any objects owned by custom DBA accounts are for the personal use of that DBA. If any objects are used to support applications or any functions other than DBA functions, this is a Finding. Any unauthorized object owner accounts are not a finding under this check as they are noted as findings under check O112-C2-011000. Any other accounts listed are a Finding.
Fix: F-21447r307019_fix
Disable any application object owner accounts. From SQL*Plus: alter user [username] account lock; Enable application object owner accounts only for installation and maintenance. DBA are special purpose accounts and do not require disabling although they may own objects. For application objects that require routine maintenance, e.g. index objects, to maintain performance, consider allowing a special purpose account to own the index or enable the application owner account for the duration of the routine maintenance function only.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-024100
- Vuln IDs
-
- V-219724
- V-54019
- Rule IDs
-
- SV-219724r401224_rule
- SV-68259
Checks: C-21449r307021_chk
If the DBMS or DBMS host is not shared by production and development activities, this check is Not a Finding. Review OS DBA group membership. If any developer accounts as identified in the System Security Plan have been assigned DBA privileges, this is a Finding. NOTE: Though shared production/non-production DBMS installations was allowed under previous database STIG guidance, doing so may place it in violation of OS, Application, Network or Enclave STIG guidance. Ensure that any shared production/non-production DBMS installations meets STIG guidance requirements at all levels or mitigate any conflicts in STIG guidance with your DAA.
Fix: F-21448r307022_fix
Create separate DBMS host OS groups for developer and production DBAs. Do not assign production DBA OS group membership to accounts used for development. Remove development accounts from production DBA OS group membership. Recommend establishing a dedicated DBMS host for production DBMS installations (See Checks O112-BP-025000 and O112-BP-025300). A dedicated host system in this case refers to an instance of the operating system at a minimum. The operating system may reside on a virtual host machine where supported by the DBMS vendor.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-024200
- Vuln IDs
-
- V-219725
- V-54021
- Rule IDs
-
- SV-219725r401224_rule
- SV-68261
Checks: C-21450r307024_chk
Review documented and implemented procedures for monitoring the use of the DBMS software installation account in the System Security Plan. If use of this account is not monitored or procedures for monitoring its use do not exist or are incomplete, this is a Finding. NOTE: On Windows systems, The Oracle DBMS software is installed using an account with administrator privileges. Ownership should be reassigned to a dedicated OS account used to operate the DBMS software. If monitoring does not include all accounts with administrator privileges on the DBMS host, this is a Finding.
Fix: F-21449r307025_fix
Develop, document and implement a logging procedure for use of the DBMS software installation account that provides accountability to individuals for any actions taken by the account. Host system audit logs should be included in the DBMS account usage log along with an indication of the person who accessed the account and an explanation for the access. Ensure all accounts with administrator privileges are monitored for DBMS host on Windows OS platforms.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-025101
- Vuln IDs
-
- V-219733
- V-57615
- Rule IDs
-
- SV-219733r401224_rule
- SV-72025
Checks: C-21458r307048_chk
From SQL*Plus: select value from v$parameter where name = 'audit_trail'; select value from v$parameter where name = 'audit_file_dest'; If audit_trail is NOT set to OS, XML, or XML EXTENDED, this is not applicable (NA). If audit_trail is set to OS, but the audit records are routed directly to a separate log server without writing to the local file system, this is not a finding. On UNIX Systems: ls -ld [pathname] Replace [pathname] with the directory path listed from the above SQL command for audit_file_dest. If permissions are granted for world access, this is a finding. If any groups that include members other than the Oracle process and software owner accounts, DBAs, auditors, or backup accounts are listed, this is a finding. Compare path to $ORACLE_HOME. If audit_file_dest is a subdirectory of $ORACLE_HOME, this is a finding. On Windows Systems (From Windows Explorer): Browse to the directory specified. Select and right-click on the directory, select Properties, select the Security tab. On Windows hosts, records are also written to the Windows application event log. The location of the application event log is listed under Properties for the log under the Windows console. The default location is C:\WINDOWS\system32\config\EventLogs\AppEvent.Evt. If permissions are granted to everyone, this is a Finding. If any accounts other than the Administrators, DBAs, System group, auditors or backup operators are listed, this is a finding. Compare path to %ORACLE_HOME%. If audit_file_dest is a subdirectory of %ORACLE_HOME%, this is a finding.
Fix: F-21457r307049_fix
Alter host system permissions to the AUDIT_FILE_DEST directory to the Oracle process and software owner accounts, DBAs, backup accounts, SAs (if required), and auditors. Authorize and document user access requirements to the directory outside of the Oracle, DBA, and SA account list in the System Security Plan.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-025400
- Vuln IDs
-
- V-219736
- V-54043
- Rule IDs
-
- SV-219736r401224_rule
- SV-68283
Checks: C-21461r307057_chk
For UNIX Systems: Log in using the Oracle software owner account and enter the command: umask If the value returned is 022 or more restrictive, this is not a Finding. If the value returned is less restrictive than 022, this is a Finding. The first number sets the mask for user/owner file permissions. The second number sets the mask for group file permissions. The third number sets file permission mask for other users. The list below shows the available settings: 0 = read/write/execute 1 = read/write 2 = read/execute 3 = read 4 = write/execute 5 = write 6 = execute 7 = no permissions Setting the umask to 022 effectively sets files for user/owner to read/write, group to read and other to read. Directories are set for user/owner to read/write/execute, group to read/execute and other to read/execute. For Windows Systems: Review the permissions that control access to the Oracle installation software directories (e.g. \Program Files\Oracle\). DBA accounts, the DBMS process account, the DBMS software installation/maintenance account, SA accounts if access by them is required for some operational level of support such as backups, and the host system itself require access. Compare the access control employed with that documented in the System Security Plan. If access controls do not match the documented requirement, this is a Finding. If access controls appear excessive without justification, this is a Finding.
Fix: F-21460r307058_fix
For UNIX Systems: Set the umask of the Oracle software owner account to 022. Determine the shell being used for the Oracle software owner account: env | grep -i shell Startup files for each shell are as follows (located in users $HOME directory): C-Shell (CSH) = .cshrc Bourne Shell (SH) = .profile Korn Shell (KSH) = .kshrc TC Shell (TCS) = .tcshrc BASH Shell = .bash_profile or .bashrc Edit the shell startup file for the account and add or modify the line: umask 022 Log off and login, then enter the umask command to confirm the setting. NOTE: To effect this change for all Oracle processes, a reboot of the DBMS server may be required. For Windows Systems: Product-specific fix is pending development. Use Generic Fix listed below: Restrict access to the DBMS software libraries to the fewest accounts that clearly require access based on job function. Document authorized access control and justify any access grants that do not fall under DBA, DBMS process, ownership, or SA accounts.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-025500
- Vuln IDs
-
- V-219737
- V-54045
- Rule IDs
-
- SV-219737r401224_rule
- SV-68285
Checks: C-21462r307060_chk
If a review of the System Security Plan confirms the use of replication is not required, not permitted and the database is not configured for replication, this check is Not a Finding. If any replication accounts are assigned DBA roles or roles with DBA privileges, this is a Finding.
Fix: F-21461r307061_fix
Restrict privileges assigned to replication accounts to the fewest possible privileges. Remove DBA roles from replication accounts. Create and use custom replication accounts assigned least privileges for supporting replication operations.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-025600
- Vuln IDs
-
- V-219738
- V-54047
- Rule IDs
-
- SV-219738r401224_rule
- SV-68287
Checks: C-21463r307063_chk
IP address restriction may be defined for the database listener, by use of the Oracle Connection Manager or by an external network device. Identify the method used to enforce address restriction (interview or System Security Plan review). If enforced by the database listener, then review the SQLNET.ORA file located in the ORACLE_HOME/network/admin directory (note: this assumes that a single sqlnet.ora file, in the default location, is in use; please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files) or the directory indicated by the TNS_ADMIN environment variable or registry setting. If the following entries do not exist, then restriction by IP address is not configured and is a Finding. tcp.validnode_checking=YES tcp.invited_nodes=(IP1, IP2, IP3) If enforced by an Oracle Connection Manager, then review the CMAN.ORA file for the Connection Manager (located in the TNS_ADMIN or ORACLE_HOME/network/admin directory for the connection manager). If a RULE entry allows all addresses ("/32") or does not match the address range specified in the System Security Plan, this is a Finding. (rule=(src=[IP]/27)(dst=[IP])(srv=*)(act=accept)) NOTE: an IP address with a "/" indicates acceptance by subnet mask where the number after the "/" is the left most number of bits in the address that must match for the rule to apply. If this rule is database-specific, then determine if the SERVICE_NAME parameter is set: From SQL*PLUS: select value from v$parameter where name = 'service_names'; If SERVICE_NAME is set in the initialization file for the database instance, use (srv=[service name]), else, use (srv=*) if not set or rule applies to all databases on the DBMS server. If network access restriction is performed by an external device, validate ACLs are in place to prohibit unauthorized access to the DBMS. To do this, find the IP address of the database server (destination address) and source address (authorized IPs) in the System Security Plan. Confirm only authorized IPs from the System Security Plan are allowed access to the DBMS.
Fix: F-21462r307064_fix
Configure the database listener to restrict access by IP address or set up an external device to restrict network access to the DBMS.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-025800
- Vuln IDs
-
- V-219739
- V-54051
- Rule IDs
-
- SV-219739r401224_rule
- SV-68291
Checks: C-21464r307066_chk
From SQL*Plus: select value from v$parameter where name = 'audit_sys_operations'; If the value returned is FALSE, this is a Finding.
Fix: F-21463r307067_fix
From SQL*Plus: alter system set audit_sys_operations = TRUE scope = spfile; The above SQL*Plus command will set the parameter to take effect at next system startup.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-026200
- Vuln IDs
-
- V-219742
- V-54069
- Rule IDs
-
- SV-219742r401224_rule
- SV-68309
Checks: C-21467r307075_chk
If no data is identified as being sensitive or classified by the Information Owner, in the System Security Plan or in the AIS Functional Architecture documentation, this is not a finding. If security labeling is not required, this is not a finding. If no sensitive or classified data is identified by the Information Owner as requiring labeling in the System Security Plan and/or AIS Functional Architecture documentation, this is not a finding. Run the SQL statement: select * from dba_sa_audit_options; If no records are returned or if output from the SQL statement above does not show classification labels being audited as required in the System Security Plan, this is a finding.
Fix: F-21466r307076_fix
Define the policy for auditing changes to security labels defined for the data. Document the audit requirements in the System Security Plan and configure database auditing in accordance with the policy.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-026300
- Vuln IDs
-
- V-219743
- V-54071
- Rule IDs
-
- SV-219743r401224_rule
- SV-68311
Checks: C-21468r307078_chk
From SQL*Plus: select value from v$parameter where name = 'global_names'; If the value returned is FALSE, this is a Finding.
Fix: F-21467r307079_fix
From SQL*Plus: alter system set global_names = TRUE scope = spfile; NOTE: This parameter, if changed, will affect all currently defined Oracle database links. The above SQL*Plus command will set the parameter to take effect at next system startup.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-026400
- Vuln IDs
-
- V-219744
- V-54073
- Rule IDs
-
- SV-219744r401224_rule
- SV-68313
Checks: C-21469r307081_chk
From SQL*Plus: select value from v$parameter where name='diagnostic_dest'; On UNIX Systems: ls -ld [pathname]/diag Substitute [pathname] with the directory path listed from the above SQL command, and append "/diag" to it, as shown. If permissions are granted for world access, this is a Finding. If any groups that include members other than the Oracle process and software owner accounts, DBAs, auditors, or backup accounts are listed, this is a Finding. On Windows Systems (From Windows Explorer): Browse to the \diag directory under the directory specified. Select and right-click on the directory, select Properties, select the Security tab. If permissions are granted to everyone, this is a Finding. If any account other than the Oracle process and software owner accounts, Administrators, DBAs, System group or developers authorized to write and debug applications on this database are listed, this is a Finding.
Fix: F-21468r307082_fix
Alter host system permissions to the <DIAGNOSTIC_DEST>/diag directory to the Oracle process and software owner accounts, DBAs, SAs (if required) and developers or other users that may specifically require access for debugging or other purposes. Authorize and document user access requirements to the directory outside of the Oracle, DBA and SA account list.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-026500
- Vuln IDs
-
- V-219745
- V-54075
- Rule IDs
-
- SV-219745r401224_rule
- SV-68315
Checks: C-21470r307084_chk
View the cman.ora file in the ORACLE_HOME/network/admin directory. If the file does not exist, the database is not accessed via Oracle Connection Manager and this check is Not a Finding. If the entry and value for REMOTE_ADMIN is not listed or is not set to a value of NO (REMOTE_ADMIN = NO), this is a Finding.
Fix: F-21469r307085_fix
View the cman.ora file in the ORACLE_HOME/network/admin directory of the Connection Manager. Include the following line in the file: REMOTE_ADMIN = NO
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-BP-026600
- Vuln IDs
-
- V-219746
- V-54077
- Rule IDs
-
- SV-219746r401224_rule
- SV-68317
Checks: C-21471r307087_chk
View the SQLNET.ORA file in the ORACLE_HOME/network/admin directory or the directory specified in the TNS_ADMIN environment variable. (Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.) Locate the following entry: SQLNET.ALLOWED_LOGON_VERSION = 12 If the parameter does not exist, this is a finding. Determine whether the Oracle DBMS software is at version 11.2.0.4 with the January 2014 CPU (or above). If it is not, this is a finding. If the parameter is not set to a value of 12 or higher, this is a finding.
Fix: F-21470r307088_fix
: Deploy Oracle 11.2.0.4 with the January 2014 CPU patch. Edit the SQLNET.ORA file to add or edit the entry: SQLNET.ALLOWED_LOGON_VERSION = 12 Set the value to 12 or higher. For more information on sqlnet.ora parameters refer to the following document: "Database Net Services Reference" https://docs.oracle.com/cd/E11882_01/network.112/e10835/sqlnet.htm#NETRF006
- RMF Control
- IA-5
- Severity
- H
- CCI
- CCI-000186
- Version
- O112-C1-015400
- Vuln IDs
-
- V-219747
- V-52331
- Rule IDs
-
- SV-219747r397597_rule
- SV-66547
Checks: C-21472r307090_chk
If PKI is not enabled in Oracle Database, this is not a finding. Review DBMS configuration to determine whether appropriate access controls exist to protect the DBMS’s private key. If strong access controls do not exist to enforce authorized access to the private key, this is a finding. The database supports authentication by using digital certificates over TLS in addition to the native encryption and data integrity capabilities of these protocols. An Oracle Wallet is a container that is used to store authentication and signing credentials, including private keys, certificates, and trusted certificates needed by TLS. In an Oracle environment, every entity that communicates over TLS must have a wallet containing an X.509 version 3 certificate, private key, and list of trusted certificates, with the exception of Diffie-Hellman. If the $ORACLE_HOME/network/admin/sqlnet.ora contains the following entries, TLS is installed. (Note: This assumes that a single sqlnet.ora file, in the default location, is in use. Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.) WALLET_LOCATION = (SOURCE= (METHOD = FILE) (METHOD_DATA = DIRECTORY=/wallet) SSL_CIPHER_SUITES=(SSL_cipher_suiteExample) SSL_VERSION = 1.2 SSL_CLIENT_AUTHENTICATION=FALSE/TRUE
Fix: F-21471r307091_fix
Implement strong access and authentication controls to protect the database’s private key. Configure the database to support Transport Layer Security (TLS) protocols and the Oracle Wallet to store authentication and signing credentials including private keys.
- RMF Control
- AC-10
- Severity
- M
- CCI
- CCI-000054
- Version
- O112-C2-000100
- Vuln IDs
-
- V-219748
- V-52337
- Rule IDs
-
- SV-219748r395442_rule
- SV-66553
Checks: C-21473r307093_chk
Retrieve the settings for concurrent sessions for each profile with the query: SELECT * FROM SYS.DBA_PROFILES WHERE RESOURCE_NAME = 'SESSIONS_PER_USER'; If the DBMS settings for concurrent sessions for each profile are greater than the organizationally defined maximum number of sessions, this is a finding.
Fix: F-21472r307094_fix
Limit concurrent connections for each system account to a number less than or equal to the organization-defined number of sessions using the following SQL. Create profiles that conform to the DoD requirements. Assign users to the appropriate profile. Change the value of SESSIONS_PER_USER (along with the other parameters, where relevant) from UNLIMITED to DoD-compliant, site-specific requirements and then assign users to the profile (the name PPPPP is an example; use a name appropriate to your circumstance): CREATE PROFILE "PPPPPP" LIMIT CPU_PER_SESSION UNLIMITED CPU_PER_CALL UNLIMITED CONNECT_TIME UNLIMITED IDLE_TIME UNLIMITED SESSIONS_PER_USER UNLIMITED LOGICAL_READS_PER_SESSION UNLIMITED LOGICAL_READS_PER_CALL UNLIMITED PRIVATE_SGA UNLIMITED COMPOSITE_LIMIT UNLIMITED PASSWORD_LIFE_TIME 180 PASSWORD_GRACE_TIME 7 PASSWORD_REUSE_MAX UNLIMITED PASSWORD_REUSE_TIME UNLIMITED PASSWORD_LOCK_TIME 1 FAILED_LOGIN_ATTEMPTS 10 PASSWORD_VERIFY_FUNCTION NULL To assign the user to the profile do the following: ALTER USER user1 PROFILE PPPPPP;
- RMF Control
- AC-2
- Severity
- M
- CCI
- CCI-000015
- Version
- O112-C2-001800
- Vuln IDs
-
- V-219749
- V-52349
- Rule IDs
-
- SV-219749r395475_rule
- SV-66565
Checks: C-21474r307096_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, this is not a finding. If an Oracle feature/product, an OS feature, a third-party product, or custom code is used to automate account management, this is not a finding. Determine what the site-defined definition of an acceptably small level of manual account-management activity is. If the site has established the definition, documented it, and obtained ISSO-ISSM-AO approval, use that definition. If not, use the following rule of thumb as the definition: no more than 12 such accounts exist or are expected to exist; no more than 100 manual account-management actions (account creation, modification, locking, unlocking, removal and the like) are expected to occur in the course of a year. If the amount of account management activity is small, as defined in the preceding paragraph, this is not a finding. Otherwise, this is a finding.
Fix: F-21473r307097_fix
Utilize an Oracle feature/product, an OS feature, a third-party product, or custom code to automate some or all account maintenance functionality. - - - - - Roles and Profiles are two Oracle features that should be employed in account management. (Indeed, other requirements mandate the use of Roles.) Following are some notes from Oracle on the use of Profiles. A profile is a named set of resource limits and password parameters that restrict database usage and instance resources for a user. You can assign a profile to each user, and a default profile to all others. Each user can have only one profile, and creating a new one supersedes any earlier one. Profile resource limits are enforced only when you enable resource limitation for the associated database. Enabling such limitation can occur either before starting up the database (the RESOURCE_LIMIT initialization parameter) or while it is open (using an ALTER SYSTEM statement). While password parameters reside in profiles, they are unaffected by RESOURCE_LIMIT or ALTER SYSTEM and password management is always enabled.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- O112-C2-002700
- Vuln IDs
-
- V-219750
- V-52365
- Rule IDs
-
- SV-219750r395499_rule
- SV-66581
Checks: C-21475r307099_chk
Check DBMS settings to determine whether users are restricted from accessing objects and data they are not authorized to access. If appropriate access controls are not implemented to restrict access to authorized users and to restrict the access of those users to objects and data they are authorized to see, this is a finding. The easiest way to isolate access is by using the Oracle Database Vault. To check to see if the Oracle Database Vault is installed issue the following query: SQL> SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault'; If Oracle Database Vault is installed, review its settings for appropriateness and completeness of the access it permits and denies to each type of user. If appropriate and complete, this is not a finding. If Oracle Database Vault is not installed, review the roles and profiles in the database and the assignment of users to these, for appropriateness and completeness of the access permitted and denied each type of user. If appropriate and complete, this is not a finding. If the access permitted and denied each type of user is inappropriate or incomplete, this is a finding. Following are code examples for reviewing roles, profiles, etc. Find out what role the users have: select * from dba_role_privs where granted_role = '@role' List all roles given to a user: select * from dba_role_privs where grantee = '@username'; Use the following query to list all privileges given to a user: select lpad(' ', 2*level) || granted_role "User roles and privileges" from ( /* THE USERS */ select null grantee, username granted_role from dba_users where username like upper('&enter_username') /* THE ROLES TO ROLES RELATIONS */ union select grantee, granted_role from dba_role_privs /* THE ROLES TO PRIVILEGE RELATIONS */ union select grantee, privilege from dba_sys_privs ) start with grantee is null connect by grantee = prior granted_role; List which tables a certain role gives SELECT access to using the query: select * from role_tab_privs where role='@role' and privilege = 'SELECT'; List all tables a user can SELECT from using the query: select * from dba_tab_privs where GRANTEE ='@username' and privilege = 'SELECT'; List all users who can SELECT on a particular table (either through being given a relevant role or through a direct grant - e.g., grant select on a table to Joe). The result of this query should also show through which role the user has this access or whether it was a direct grant. select Grantee,'Granted Through Role' as Grant_Type, role, table_name from role_tab_privs rtp, dba_role_privs drp where rtp.role = drp.granted_role and table_name = '@TABLENAME' union select Grantee, 'Direct Grant' as Grant_type, null as role, table_name from dba_tab_privs where table_name = '@TABLENAME' ;
Fix: F-21474r307100_fix
If Oracle Database Vault is in use, use it to configure the correct access privileges for each type of user. If Oracle Database Vault is not in use, configure the correct access privileges for each type of user using Roles and Profiles.
- RMF Control
- AU-12
- Severity
- M
- CCI
- CCI-000169
- Version
- O112-C2-006800
- Vuln IDs
-
- V-219751
- V-52463
- Rule IDs
-
- SV-219751r395706_rule
- SV-66679
Checks: C-21476r307102_chk
Verify, using vendor and system documentation if necessary, that the DBMS is configured to use Oracle's auditing features, or that a third-party product or custom code is deployed and configured to satisfy this requirement. If a third-party product or custom code is used, compare its current configuration with the audit requirements. If any of the requirements is not covered by the configuration, this is a finding. The remainder of this Check is applicable specifically where Oracle auditing is in use. To see if Oracle is configured to capture audit data, enter the following SQLPlus command: SHOW PARAMETER AUDIT_TRAIL or the following SQL query: SELECT * FROM SYS.V$PARAMETER WHERE NAME = 'audit_trail'; If Oracle returns the value 'NONE', this is a finding. To confirm that Oracle audit is capturing information on the required events, review the contents of the SYS.AUD$ table or the audit file, whichever is in use. If auditable events are not listed, this is a finding.
Fix: F-21475r307103_fix
Configure the DBMS's auditing to audit organization-defined auditable events. If preferred, use a third-party tool. The tool must provide the minimum capability to audit the required events. If using a third-party product, proceed in accordance with the product documentation. If using Oracle's capabilities, proceed as follows. Use this query to ensure auditable events are captured: ALTER SYSTEM SET AUDIT_TRAIL=<audit trail type> SCOPE=SPFILE; Audit trail type can be 'OS', 'DB', 'DB,EXTENDED', 'XML' or 'XML,EXTENDED'. After executing this statement, it may be necessary to shut down and restart the Oracle database. For more information on the configuration of auditing, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm If the organization-defined audit requirements are not covered by the default audit options, deploy and configure Fine-Grained Auditing. For details, refer to Oracle documentation, at the locations above.
- RMF Control
- AU-12
- Severity
- M
- CCI
- CCI-000171
- Version
- O112-C2-006900
- Vuln IDs
-
- V-219752
- V-52467
- Rule IDs
-
- SV-219752r395709_rule
- SV-66683
Checks: C-21477r307105_chk
Check DBMS settings and documentation to determine whether designated personnel are able to select which auditable events are being audited. If designated personnel are not able to configure auditable events, this is a finding.
Fix: F-21476r307106_fix
Configure the DBMS's settings to allow designated personnel to select which auditable events are audited. Note the following: In Oracle, any user can configure auditing for the objects in his or her own schema by using the AUDIT statement. To undo the audit configuration for an object, the user can use the NOAUDIT statement. No additional privileges are needed to perform this task. To audit objects in another schema, the user must have the AUDIT ANY system privilege. To audit system privileges, the user must have the AUDIT SYSTEM privilege. For more information on the configuration of auditing, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm
- RMF Control
- AU-12
- Severity
- M
- CCI
- CCI-000172
- Version
- O112-C2-007000
- Vuln IDs
-
- V-219753
- V-52469
- Rule IDs
-
- SV-219753r395712_rule
- SV-66685
Checks: C-21478r307108_chk
Check DBMS and OS settings to determine if auditing is being performed on the events on the DoD-selected list of auditable events. If auditing is not being performed for any of the events on the DoD-selected list of auditable events, this is a finding.
Fix: F-21477r307109_fix
Configure the DBMS's auditing settings to include auditing of events on the DoD-selected list of auditable events. For more information on the configuration of auditing in the DBMS, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm
- RMF Control
- AU-3
- Severity
- M
- CCI
- CCI-000130
- Version
- O112-C2-007400
- Vuln IDs
-
- V-219754
- V-52471
- Rule IDs
-
- SV-219754r395721_rule
- SV-66687
Checks: C-21479r307111_chk
Verify, using vendor and system documentation if necessary, that the DBMS is configured to use Oracle's auditing features, or that a third-party product or custom code is deployed and configured to satisfy this requirement. If a third-party product or custom code is used, compare its current configuration with the audit requirements. If any of the requirements is not covered by the configuration, this is a finding. The remainder of this Check is applicable specifically where Oracle auditing is in use. To see if Oracle is configured to capture audit data, enter the following SQLPlus command: SHOW PARAMETER AUDIT_TRAIL or the following SQL query: SELECT * FROM SYS.V$PARAMETER WHERE NAME = 'audit_trail'; If Oracle returns the value "NONE", this is a finding. To confirm that Oracle audit is capturing sufficient information to establish the identity of the user/subject or process, perform a successful auditable action and an auditable action that results in an SQL error, and then view the results in the SYS.AUD$ table or the audit file, whichever is in use. If no ACTION#, or the wrong value, is returned for the auditable actions just performed, this is a finding.
Fix: F-21478r307112_fix
Configure the DBMS's auditing to audit standard and organization-defined auditable events, the audit record to include what type of event occurred. If preferred, use a third-party or custom tool. If using a third-party product, proceed in accordance with the product documentation. If using Oracle's capabilities, proceed as follows. Use this query to ensure auditable events are captured: ALTER SYSTEM SET AUDIT_TRAIL=<audit trail type> SCOPE=SPFILE; Audit trail type can be 'OS', 'DB', 'DB,EXTENDED', 'XML' or 'XML,EXTENDED'. After executing this statement, it may be necessary to shut down and restart the Oracle database. For more information on the configuration of auditing, please refer to 'Auditing Database Activity' in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and 'Verifying Security Access with Auditing' in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and '27 DBMS_AUDIT_MGMT' in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm
- RMF Control
- AU-3
- Severity
- M
- CCI
- CCI-000131
- Version
- O112-C2-007500
- Vuln IDs
-
- V-219755
- V-52473
- Rule IDs
-
- SV-219755r395724_rule
- SV-66689
Checks: C-21480r307114_chk
Verify, using vendor and system documentation if necessary, that the DBMS is configured to use Oracle's auditing features, or that a third-party product or custom code is deployed and configured to satisfy this requirement. If a third-party product or custom code is used, compare its current configuration with the audit requirements. If any of the requirements is not covered by the configuration, this is a finding. The remainder of this Check is applicable specifically where Oracle auditing is in use. To see if Oracle is configured to capture audit data, enter the following SQLPlus command: SHOW PARAMETER AUDIT_TRAIL or the following SQL query: SELECT * FROM SYS.V$PARAMETER WHERE NAME = 'audit_trail'; If Oracle returns the value 'NONE', this is a finding. To confirm that Oracle audit is capturing sufficient information to establish when events occurred, perform a successful auditable action and an auditable action that results in an SQL error, and then view the results in the SYS.AUD$ table or the audit file, whichever is in use. If no timestamp, or the wrong value, is returned for the auditable actions just performed, this is a finding.
Fix: F-21479r307115_fix
Configure the DBMS's auditing to audit standard and organization-defined auditable events, the audit record to include the date and time of any user/subject or process associated with the event. If preferred, use a third-party or custom tool. If using a third-party product, proceed in accordance with the product documentation. If using Oracle's capabilities, proceed as follows. Use this query to ensure auditable events are captured: ALTER SYSTEM SET AUDIT_TRAIL=<audit trail type> SCOPE=SPFILE; Audit trail type can be 'OS', 'DB', 'DB,EXTENDED', 'XML' or 'XML,EXTENDED'. After executing this statement, it may be necessary to shut down and restart the Oracle database. For more information on the configuration of auditing, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm
- RMF Control
- AU-3
- Severity
- M
- CCI
- CCI-000132
- Version
- O112-C2-007600
- Vuln IDs
-
- V-219756
- V-52475
- Rule IDs
-
- SV-219756r395727_rule
- SV-66691
Checks: C-21481r307117_chk
Verify, using vendor and system documentation if necessary, that the DBMS is configured to use Oracle's auditing features, or that a third-party product or custom code is deployed and configured to satisfy this requirement. If a third-party product or custom code is used, compare its current configuration with the audit requirements. If any of the requirements is not covered by the configuration, this is a finding. The remainder of this Check is applicable specifically where Oracle auditing is in use. To see if Oracle is configured to capture audit data, enter the following SQLPlus command: SHOW PARAMETER AUDIT_TRAIL or the following SQL query: SELECT * FROM SYS.V$PARAMETER WHERE NAME = 'audit_trail'; If Oracle returns the value 'NONE', this is a finding. To confirm that Oracle audit is capturing sufficient information to establish where events occurred, perform a successful auditable action and an auditable action that results in an SQL error, and then view the results in the SYS.AUD$ table or the audit file, whichever is in use. If no DB ID or Object Creator or Object Name, or the wrong values, are returned for the auditable actions just performed, this is a finding. If correct values for User Host and Terminal are not returned when applicable, this is a finding.
Fix: F-21480r307118_fix
Configure the DBMS's auditing to audit standard and organization-defined auditable events, the audit record to include where the event occurred. If preferred, use a third-party or custom tool. If using a third-party product, proceed in accordance with the product documentation. If using Oracle's capabilities, proceed as follows. Use this query to ensure auditable events are captured: ALTER SYSTEM SET AUDIT_TRAIL=<audit trail type> SCOPE=SPFILE; Audit trail type can be 'OS', 'DB', 'DB,EXTENDED', 'XML' or 'XML,EXTENDED'. After executing this statement, it may be necessary to shut down and restart the Oracle database. For more information on the configuration of auditing, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm
- RMF Control
- AU-3
- Severity
- M
- CCI
- CCI-000133
- Version
- O112-C2-007700
- Vuln IDs
-
- V-219757
- V-52477
- Rule IDs
-
- SV-219757r395730_rule
- SV-66693
Checks: C-21482r307120_chk
Verify, using vendor and system documentation if necessary, that the DBMS is configured to use Oracle's auditing features, or that a third-party product or custom code is deployed and configured to satisfy this requirement. If a third-party product or custom code is used, compare its current configuration with the audit requirements. If any of the requirements is not covered by the configuration, this is a finding. The remainder of this Check is applicable specifically where Oracle auditing is in use. To see if Oracle is configured to capture audit data, enter the following SQLPlus command: SHOW PARAMETER AUDIT_TRAIL or the following SQL query: SELECT * FROM SYS.V$PARAMETER WHERE NAME = 'audit_trail'; If Oracle returns the value 'NONE', this is a finding. To confirm that Oracle audit is capturing sufficient information to establish the source of events, perform a successful auditable action and an auditable action that results in an SQL error, and then view the results in the SYS.AUD$ table or the audit file, whichever is in use. If correct values for User ID, User Host, and Terminal are not returned when applicable, this is a finding.
Fix: F-21481r307121_fix
Configure the DBMS's auditing to audit standard and organization-defined auditable events, the audit record to include the source of the event. If preferred, use a third-party or custom tool. If using a third-party product, proceed in accordance with the product documentation. If using Oracle's capabilities, proceed as follows. Use this query to ensure auditable events are captured: ALTER SYSTEM SET AUDIT_TRAIL=<audit trail type> SCOPE=SPFILE; Audit trail type can be 'OS', 'DB', 'DB,EXTENDED', 'XML' or 'XML,EXTENDED'. After executing this statement, it may be necessary to shut down and restart the Oracle database. For more information on the configuration of auditing, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm
- RMF Control
- AU-3
- Severity
- M
- CCI
- CCI-000134
- Version
- O112-C2-007800
- Vuln IDs
-
- V-219758
- V-52479
- Rule IDs
-
- SV-219758r395733_rule
- SV-66695
Checks: C-21483r307123_chk
Verify, using vendor and system documentation if necessary, that the DBMS is configured to use Oracle's auditing features, or that a third-party product or custom code is deployed and configured to satisfy this requirement. If a third-party product or custom code is used, compare its current configuration with the audit requirements. If any of the requirements is not covered by the configuration, this is a finding. The remainder of this Check is applicable specifically where Oracle auditing is in use. To see if Oracle is configured to capture audit data, enter the following SQLPlus command: SHOW PARAMETER AUDIT_TRAIL or the following SQL query: SELECT * FROM SYS.V$PARAMETER WHERE NAME = 'audit_trail'; If Oracle returns the value 'NONE', this is a finding. To confirm that Oracle audit is capturing sufficient information to establish outcomes, perform a successful auditable action and an auditable action that results in an SQL error, and then view the results in the SYS.AUD$ table or the audit file, whichever is in use. If no return code or other outcome information is returned for the auditable action just performed, this is a finding. If error is indicated for the successful action, this is a finding. If no error is indicated for the unsuccessful action, this is a finding.
Fix: F-21482r307124_fix
Configure the DBMS's auditing to audit standard and organization-defined auditable events, the audit record to include the outcome. If preferred, use a third-party or custom tool. If using a third-party product, proceed in accordance with the product documentation. If using Oracle's capabilities, proceed as follows. Use this query to ensure auditable events are captured: ALTER SYSTEM SET AUDIT_TRAIL=<audit trail type> SCOPE=SPFILE; Audit trail type can be 'OS', 'DB', 'DB,EXTENDED', 'XML' or 'XML,EXTENDED'. After executing this statement, it may be necessary to shut down and restart the Oracle database. For more information on the configuration of auditing, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm
- RMF Control
- AU-3
- Severity
- M
- CCI
- CCI-001487
- Version
- O112-C2-007900
- Vuln IDs
-
- V-219759
- V-52151
- Rule IDs
-
- SV-219759r395736_rule
- SV-66367
Checks: C-21484r307126_chk
Verify, using vendor and system documentation if necessary, that the DBMS is configured to use Oracle's auditing features, or that a third-party product or custom code is deployed and configured to satisfy this requirement. If a third-party product or custom code is used, compare its current configuration with the audit requirements. If any of the requirements is not covered by the configuration, this is a finding. The remainder of this Check is applicable specifically where Oracle auditing is in use. To see if Oracle is configured to capture audit data, enter the following SQLPlus command: SHOW PARAMETER AUDIT_TRAIL or the following SQL query: SELECT * FROM SYS.V$PARAMETER WHERE NAME = 'audit_trail'; If Oracle returns the value "NONE", this is a finding. To confirm that Oracle audit is capturing sufficient information to establish the identity of the user/subject or process, perform a successful auditable action and an auditable action that results in an SQL error, and then view the results in the SYS.AUD$ table or the audit file, whichever is in use. If no user ID, or the wrong value, is returned for the auditable actions just performed, this is a finding.
Fix: F-21483r307127_fix
Configure the DBMS's auditing to audit standard and organization-defined auditable events, the audit record to include the identity of any user/subject or process associated with the event. If preferred, use a third-party or custom tool. If using a third-party product, proceed in accordance with the product documentation. If using Oracle's capabilities, proceed as follows. Use this query to ensure auditable events are captured: ALTER SYSTEM SET AUDIT_TRAIL=<audit trail type> SCOPE=SPFILE; Audit trail type can be 'OS', 'DB', 'DB,EXTENDED', 'XML' or 'XML,EXTENDED'. After executing this statement, it may be necessary to shut down and restart the Oracle database. For more information on the configuration of auditing, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm
- RMF Control
- AU-3
- Severity
- M
- CCI
- CCI-000135
- Version
- O112-C2-008000
- Vuln IDs
-
- V-219760
- V-52155
- Rule IDs
-
- SV-219760r395739_rule
- SV-66371
Checks: C-21485r307129_chk
Verify, using vendor and system documentation if necessary, that the DBMS is configured to use Oracle's auditing features, or that a third-party product or custom code is deployed and configured to satisfy this requirement. If a third-party product or custom code is used, compare its current configuration with the audit requirements. If any of the requirements is not covered by the configuration, this is a finding. The remainder of this Check is applicable specifically where Oracle auditing is in use. To see if Oracle is configured to capture audit data, enter the following SQLPlus command: SHOW PARAMETER AUDIT_TRAIL or the following SQL query: SELECT * FROM SYS.V$PARAMETER WHERE NAME = 'audit_trail'; If Oracle returns the value "NONE", this is a finding. Compare the organization-defined auditable events with the Oracle documentation to determine whether standard auditing covers all the requirements. If it does, this is not a finding. Compare those organization-defined auditable events that are not covered by the standard auditing, with the existing Fine-Grained Auditing (FGA) specifications returned by the following query: SELECT * FROM SYS.DBA_FGA_AUDIT_TRAIL; If any such auditable event is not covered by the existing FGA specifications, this is a finding.
Fix: F-21484r307130_fix
Either configure the DBMS's auditing to audit organization-defined auditable events; or if preferred, use a third-party or custom tool. The tool must provide the minimum capability to audit the required events. If using a third-party product, proceed in accordance with the product documentation. If using Oracle's capabilities, proceed as follows. Use this query to ensure auditable events are captured: ALTER SYSTEM SET AUDIT_TRAIL=<audit trail type> SCOPE=SPFILE; Audit trail type can be "OS", "DB", "DB,EXTENDED", "XML" or "XML,EXTENDED". After executing this statement, it may be necessary to shut down and restart the Oracle database. If the organization-defined additional audit requirements are not covered by the default audit options, deploy and configure Fine-Grained Auditing. For details, refer to Oracle documentation, at the location above. For more information on the configuration of auditing, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000162
- Version
- O112-C2-009300
- Vuln IDs
-
- V-219761
- V-52179
- Rule IDs
-
- SV-219761r395820_rule
- SV-66395
Checks: C-21486r307132_chk
Review locations of audit logs, both internal to the database and database audit logs located at the operating system-level. Verify there are appropriate controls and permissions to protect the audit information from unauthorized access. If appropriate controls and permissions do not exist, this is a finding. - - - - - DBA_TAB_PRIVS describes all object grants in the database. Check to see who has permissions on the AUD$ table. Related View DBA_TAB_PRIVS describes the object grants for which the current user is the object owner, grantor, or grantee. Column Datatype NULL Description GRANTEE VARCHAR2(30) NOT NULL Name of the user to whom access was granted OWNER VARCHAR2(30) NOT NULL Owner of the object TABLE_NAME VARCHAR2(30) NOT NULL Name of the object GRANTOR VARCHAR2(30) NOT NULL Name of the user who performed the grant PRIVILEGE VARCHAR2(40) NOT NULL Privilege on the object GRANTABLE VARCHAR2(3) Indicates whether the privilege was granted with the GRANT OPTION (YES) or not (NO) HIERARCHY VARCHAR2(3) Indicates whether the privilege was granted with the HIERARCHY OPTION (YES) or not (NO) sqlplus connect as sysdba; SQL> SELECT * FROM DBA_TAB_PRIVS where table_name = 'AUD$'; SQL> SELECT * FROM DBA_COL_PRIVS where table_name = 'AUD$';
Fix: F-21485r307133_fix
Add controls and modify permissions to protect database audit log data from unauthorized access, whether stored in the database itself or at the OS level. Revoke access to the AUD$ table to anyone who should not have access to it.
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000163
- Version
- O112-C2-009400
- Vuln IDs
-
- V-219762
- V-52185
- Rule IDs
-
- SV-219762r395823_rule
- SV-66401
Checks: C-21487r307135_chk
Review locations of audit logs, both internal to the database and database audit logs located at the operating system-level. Verify there are appropriate controls and permissions to protect the audit information from unauthorized modification. If appropriate controls and permissions do not exist, this is a finding. - - - - - - DBA_TAB_PRIVS describes all object grants in the database. Check to see who has permissions on the AUD$ table. Related View DBA_TAB_PRIVS describes the object grants for which the current user is the object owner, grantor, or grantee. Column Datatype NULL Description GRANTEE VARCHAR2(30) NOT NULL Name of the user to whom access was granted OWNER VARCHAR2(30) NOT NULL Owner of the object TABLE_NAME VARCHAR2(30) NOT NULL Name of the object GRANTOR VARCHAR2(30) NOT NULL Name of the user who performed the grant PRIVILEGE VARCHAR2(40) NOT NULL Privilege on the object GRANTABLE VARCHAR2(3) Indicates whether the privilege was granted with the GRANT OPTION (YES) or not (NO) HIERARCHY VARCHAR2(3) Indicates whether the privilege was granted with the HIERARCHY OPTION (YES) or not (NO) sqlplus connect as sysdba; SQL> SELECT GRANTEE, TABLE_NAME, COLUMN_NAME, PRIVILEGE FROM DBA_COL_PRIVS where table_name = 'AUD$';
Fix: F-21486r307136_fix
Add controls and modify permissions to protect database audit log data from unauthorized modification, whether stored in the database itself or at the OS level. - - - - - Revoke access to the AUD$ table to anyone who you do not want to have access to the AUD$ table. In the check we looked for all users who had access to the AUD$ table. To fix this, use the REVOKE command to revoke access to users who should not have access to the audit data. REVOKE statement Use the REVOKE statement to remove permissions from a specific user or from all users to perform actions on database objects. The following types of permissions can be revoked: Delete data from a specific table. Insert data into a specific table. Create a foreign key reference to the named table or to a subset of columns from a table. Select data from a table, view, or a subset of columns in a table. Create a trigger on a table. Update data in a table or in a subset of columns in a table. Run a specified routine (function or procedure). If a user named FRED had access to the AUD$ table and you want to revoke that access, use the following command. The syntax that you use for the REVOKE statement for tables is as follows: REVOKE privilege-type ON [ TABLE ] { table-Name | view-Name } FROM grantees SQL>REVOKE SELECT ON TABLE AUD$ FROM FRED; Revoking a privilege without specifying a column list revokes the privilege for all of the columns in the table. Syntax for routines table-privileges include DELETE | INSERT | REFERENCES [column list] | SELECT [column list] | TRIGGER | UPDATE [column list] column list ( column-identifier {, column-identifier}* ) Use the ALL PRIVILEGES privilege type to revoke all of the permissions from the user for the specified table. You can also revoke one or more table privileges by specifying a privilege-list. Use the DELETE privilege type to revoke permission to delete rows from the specified table. Use the INSERT privilege type to revoke permission to insert rows into the specified table. Use the REFERENCES privilege type to revoke permission to create a foreign key reference to the specified table. If a column list is specified with the REFERENCES privilege, the permission is revoked on only the foreign key reference to the specified columns. Use the SELECT privilege type to revoke permission to perform SELECT statements on a table or view. If a column list is specified with the SELECT privilege, the permission is revoked on only those columns. If no column list is specified, then the privilege is valid on all of the columns in the table. Use the TRIGGER privilege type to revoke permission to create a trigger on the specified table. Use the UPDATE privilege type to revoke permission to use the UPDATE statement on the specified table. If a column list is specified, the permission is revoked only on the specified columns. grantees { authorization ID | PUBLIC } [,{ authorization ID | PUBLIC } ] * You can revoke the privileges from specific users or from all users. Use the keyword PUBLIC to specify all users. The privileges revoked from PUBLIC and from individual users are independent privileges. For example, a SELECT privilege on table t is granted to both PUBLIC and to the authorization ID harry. The SELECT privilege is later revoked from the authorization ID 'Harry', but the authorization ID 'Harry' can access the table through the PUBLIC privilege. Restriction: You cannot revoke the privileges of the owner of an object. routine-designator { qualified-name [ signature ] } Cascading object dependencies For views, triggers, and constraints, if the privilege on which the object depends on is revoked, the object is automatically dropped. Derby does not try to determine if you have other privileges that can replace the privileges that are being revoked. For more information, see "SQL standard authorization" in the Java DB Developer's Guide. Limitations The following limitations apply to the REVOKE statement: Table-level privileges All of the table-level privilege types for a specified grantee and table ID are stored in one row in the SYSTABLEPERMS system table. For example, when user2 is granted the SELECT and DELETE privileges on table user1.t1, a row is added to the SYSTABLEPERMS table. The GRANTEE field contains user2 and the TABLEID contains user1.t1. The SELECTPRIV and DELETEPRIV fields are set to Y. The remaining privilege type fields are set to N. When a grantee creates an object that relies on one of the privilege types, the Derby engine tracks the dependency of the object on the specific row in the SYSTABLEPERMS table. For example, user2 creates the view v1 by using the statement SELECT * FROM user1.t1; the dependency manager tracks the dependency of view v1 on the row in SYSTABLEPERMS for GRANTEE(user2), TABLEID(user1.t1). The dependency manager knows only that the view is dependent on a privilege type in that specific row but does not track exactly which privilege type the view is dependent on. When a REVOKE statement for a table-level privilege is issued for a grantee and table ID, all of the objects that are dependent on the grantee and table ID are dropped. For example, if user1 revokes the DELETE privilege on table t1 from user2, the row in SYSTABLEPERMS for GRANTEE(user2), TABLEID(user1.t1) is modified by the REVOKE statement. The dependency manager sends a revoke invalidation message to the view user2.v1, and the view is dropped, even though the view is not dependent on the DELETE privilege for GRANTEE(user2), TABLEID(user1.t1). Column-level privileges Only one type of privilege for a specified grantee and table ID are stored in one row in the SYSCOLPERMS system table. For example, when user2 is granted the SELECT privilege on table user1.t1 for columns c12 and c13, a row is added to the SYSCOLPERMS. The GRANTEE field contains user2, the TABLEID contains user1.t1, the TYPE field contains S, and the COLUMNS field contains c12, c13. When a grantee creates an object that relies on the privilege type and the subset of columns in a table ID, the Derby engine tracks the dependency of the object on the specific row in the SYSCOLPERMS table. For example, user2 creates the view v1 by using the statement SELECT c11 FROM user1.t1; the dependency manager tracks the dependency of view v1 on the row in SYSCOLPERMS for GRANTEE(user2), TABLEID(user1.t1), TYPE(S). The dependency manager knows that the view is dependent on the SELECT privilege type but does not track exactly which columns the view is dependent on. When a REVOKE statement for a column-level privilege is issued for a grantee, table ID, and type, all of the objects that are dependent on the grantee, table ID, and type are dropped. For example, if user1 revokes the SELECT privilege on column c12 on table user1.t1 from user2, the row in SYSCOLPERMS for GRANTEE(user2), TABLEID(user1.t1), TYPE(S) is modified by the REVOKE statement. The dependency manager sends a revoke invalidation message to the view user2.v1, and the view is dropped, even though the view is not dependent on the column c12 for GRANTEE(user2), TABLEID(user1.t1), TYPE(S). Revoke examples To revoke the SELECT privilege on table t from the authorization IDs 'Maria' and 'Harry', use the following syntax: SQL>REVOKE SELECT ON TABLE t FROM maria,harry To revoke the UPDATE and TRIGGER privileges on table t from the authorization IDs 'Anita' and 'Zhi', use the following syntax: SQL>REVOKE UPDATE, TRIGGER ON TABLE t FROM anita,zhi To revoke the SELECT privilege on table s.v from all users, use the following syntax: SQL>REVOKE SELECT ON TABLE s.v FROM PUBLIC To revoke the UPDATE privilege on columns c1 and c2 of table s.v from all users, use the following syntax: SQL>REVOKE UPDATE (c1,c2) ON TABLE s.v FROM PUBLIC To revoke the EXECUTE privilege on procedure p from the authorization ID 'George', use the following syntax: SQL>REVOKE EXECUTE ON PROCEDURE p FROM george RESTRICT
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-000164
- Version
- O112-C2-009500
- Vuln IDs
-
- V-219763
- V-52189
- Rule IDs
-
- SV-219763r395826_rule
- SV-66405
Checks: C-21488r307138_chk
Review locations of audit logs, both internal to the database and database audit logs located at the operating system-level. Verify there are appropriate controls and permissions to protect the audit information from unauthorized deletion. If appropriate controls and permissions do not exist, this is a finding. - - - - - DBA_TAB_PRIVS describes all object grants in the database. Check to see who has permissions on the AUD$ table. Related View DBA_TAB_PRIVS describes the object grants for which the current user is the object owner, grantor, or grantee. Column Datatype NULL Description GRANTEE VARCHAR2(30) NOT NULL Name of the user to whom access was granted OWNER VARCHAR2(30) NOT NULL Owner of the object TABLE_NAME VARCHAR2(30) NOT NULL Name of the object GRANTOR VARCHAR2(30) NOT NULL Name of the user who performed the grant PRIVILEGE VARCHAR2(40) NOT NULL Privilege on the object GRANTABLE VARCHAR2(3) Indicates whether the privilege was granted with the GRANT OPTION (YES) or not (NO) HIERARCHY VARCHAR2(3) Indicates whether the privilege was granted with the HIERARCHY OPTION (YES) or not (NO) sqlplus connect as sysdba; SQL> SELECT GRANTEE, TABLE_NAME, COLUMN_NAME, PRIVILEGE FROM DBA_COL_PRIVS where table_name = 'AUD$';
Fix: F-21487r307139_fix
Add controls and modify permissions to protect database audit log data from unauthorized deletion, whether stored in the database itself or at the OS level. - - - - - Revoke access to the AUD$ table to anyone who you do not want to have access to the AUD$ table. In the check we looked for all users who had access to the AUD$ table. To fix this, use the REVOKE command to revoke access to users who should not have access to the audit data. REVOKE statement Use the REVOKE statement to remove permissions from a specific user or from all users to perform actions on database objects. The following types of permissions can be revoked: Delete data from a specific table. Insert data into a specific table. Create a foreign key reference to the named table or to a subset of columns from a table. Select data from a table, view, or a subset of columns in a table. Create a trigger on a table. Update data in a table or in a subset of columns in a table. Run a specified routine (function or procedure). If a user named FRED had access to the AUD$ table and you want to revoke that access use the following command. The syntax that you use for the REVOKE statement for tables is as follows: REVOKE privilege-type ON [ TABLE ] { table-Name | view-Name } FROM grantees SQL>REVOKE SELECT ON TABLE AUD$ FROM FRED; Revoking a privilege without specifying a column list revokes the privilege for all of the columns in the table. Syntax for routines table-privileges include DELETE | INSERT | REFERENCES [column list] | SELECT [column list] | TRIGGER | UPDATE [column list] column list ( column-identifier {, column-identifier}* ) Use the ALL PRIVILEGES privilege type to revoke all of the permissions from the user for the specified table. You can also revoke one or more table privileges by specifying a privilege-list. Use the DELETE privilege type to revoke permission to delete rows from the specified table. Use the INSERT privilege type to revoke permission to insert rows into the specified table. Use the REFERENCES privilege type to revoke permission to create a foreign key reference to the specified table. If a column list is specified with the REFERENCES privilege, the permission is revoked on only the foreign key reference to the specified columns. Use the SELECT privilege type to revoke permission to perform SELECT statements on a table or view. If a column list is specified with the SELECT privilege, the permission is revoked on only those columns. If no column list is specified, then the privilege is valid on all of the columns in the table. Use the TRIGGER privilege type to revoke permission to create a trigger on the specified table. Use the UPDATE privilege type to revoke permission to use the UPDATE statement on the specified table. If a column list is specified, the permission is revoked only on the specified columns. grantees { authorization ID | PUBLIC } [,{ authorization ID | PUBLIC } ] * You can revoke the privileges from specific users or from all users. Use the keyword PUBLIC to specify all users. The privileges revoked from PUBLIC and from individual users are independent privileges. For example, a SELECT privilege on table t is granted to both PUBLIC and to the authorization ID harry. The SELECT privilege is later revoked from the authorization ID 'Harry', but the authorization ID 'Harry' can access the table through the PUBLIC privilege. Restriction: You cannot revoke the privileges of the owner of an object. routine-designator { qualified-name [ signature ] } Cascading object dependencies For views, triggers, and constraints, if the privilege on which the object depends on is revoked, the object is automatically dropped. Derby does not try to determine if you have other privileges that can replace the privileges that are being revoked. For more information, see "SQL standard authorization" in the Java DB Developer's Guide. Limitations The following limitations apply to the REVOKE statement: Table-level privileges All of the table-level privilege types for a specified grantee and table ID are stored in one row in the SYSTABLEPERMS system table. For example, when user2 is granted the SELECT and DELETE privileges on table user1.t1, a row is added to the SYSTABLEPERMS table. The GRANTEE field contains user2 and the TABLEID contains user1.t1. The SELECTPRIV and DELETEPRIV fields are set to Y. The remaining privilege type fields are set to N. When a grantee creates an object that relies on one of the privilege types, the Derby engine tracks the dependency of the object on the specific row in the SYSTABLEPERMS table. For example, user2 creates the view v1 by using the statement SELECT * FROM user1.t1; the dependency manager tracks the dependency of view v1 on the row in SYSTABLEPERMS for GRANTEE(user2), TABLEID(user1.t1). The dependency manager knows only that the view is dependent on a privilege type in that specific row but does not track exactly which privilege type the view is dependent on. When a REVOKE statement for a table-level privilege is issued for a grantee and table ID, all of the objects that are dependent on the grantee and table ID are dropped. For example, if user1 revokes the DELETE privilege on table t1 from user2, the row in SYSTABLEPERMS for GRANTEE(user2), TABLEID(user1.t1) is modified by the REVOKE statement. The dependency manager sends a revoke invalidation message to the view user2.v1, and the view is dropped, even though the view is not dependent on the DELETE privilege for GRANTEE(user2), TABLEID(user1.t1). Column-level privileges Only one type of privilege for a specified grantee and table ID are stored in one row in the SYSCOLPERMS system table. For example, when user2 is granted the SELECT privilege on table user1.t1 for columns c12 and c13, a row is added to the SYSCOLPERMS. The GRANTEE field contains user2, the TABLEID contains user1.t1, the TYPE field contains S, and the COLUMNS field contains c12, c13. When a grantee creates an object that relies on the privilege type and the subset of columns in a table ID, the Derby engine tracks the dependency of the object on the specific row in the SYSCOLPERMS table. For example, user2 creates the view v1 by using the statement SELECT c11 FROM user1.t; the dependency manager tracks the dependency of view v1 on the row in SYSCOLPERMS for GRANTEE(user2), TABLEID(user1.t1), TYPE(S). The dependency manager knows that the view is dependent on the SELECT privilege type but does not track exactly which columns the view is dependent on. When a REVOKE statement for a column-level privilege is issued for a grantee, table ID, and type, all of the objects that are dependent on the grantee, table ID, and type are dropped. For example, if user1 revokes the SELECT privilege on column c12 on table user1.t1 from user2, the row in SYSCOLPERMS for GRANTEE(user2), TABLEID(user1.t1), TYPE(S) is modified by the REVOKE statement. The dependency manager sends a revoke invalidation message to the view user2.v1, and the view is dropped, even though the view is not dependent on the column c12 for GRANTEE(user2), TABLEID(user1.t1), TYPE(S). Revoke examples To revoke the SELECT privilege on table t from the authorization IDs 'Maria' and 'Harry', use the following syntax: SQL>REVOKE SELECT ON TABLE t FROM maria,harry To revoke the UPDATE and TRIGGER privileges on table t from the authorization IDs 'Anita' and 'Zhi', use the following syntax: SQL>REVOKE UPDATE, TRIGGER ON TABLE t FROM anita,zhi To revoke the SELECT privilege on table s.v from all users, use the following syntax: SQL>REVOKE SELECT ON TABLE s.v FROM PUBLIC To revoke the UPDATE privilege on columns c1 and c2 of table s.v from all users, use the following syntax: SQL>REVOKE UPDATE (c1,c2) ON TABLE s.v FROM PUBLIC To revoke the EXECUTE privilege on procedure p from the authorization ID 'George', use the following syntax: SQL>REVOKE EXECUTE ON PROCEDURE p FROM george RESTRICT
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-001493
- Version
- O112-C2-009600
- Vuln IDs
-
- V-219764
- V-52193
- Rule IDs
-
- SV-219764r395829_rule
- SV-66409
Checks: C-21489r307141_chk
Review access permissions to tools used to view or modify audit log data. These tools may include the DBMS itself or tools external to the database. If appropriate permissions and access controls to prevent unauthorized access are not applied to these tools, this is a finding.
Fix: F-21488r307142_fix
Add or modify access controls and permissions to tools used to view or modify audit log data. Tools must be accessible by authorized personnel only.
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-001494
- Version
- O112-C2-009700
- Vuln IDs
-
- V-219765
- V-52197
- Rule IDs
-
- SV-219765r395832_rule
- SV-66413
Checks: C-21490r307144_chk
Review access permissions to tools used to view or modify audit log data. These tools may include the DBMS itself or tools external to the database. If appropriate permissions and access controls are not applied to prevent unauthorized modification of these tools, this is a finding.
Fix: F-21489r307145_fix
Add or modify access controls and permissions to tools used to view or modify audit log data. Tools must be modifiable by authorized personnel only.
- RMF Control
- AU-9
- Severity
- M
- CCI
- CCI-001495
- Version
- O112-C2-009800
- Vuln IDs
-
- V-219766
- V-52201
- Rule IDs
-
- SV-219766r395835_rule
- SV-66417
Checks: C-21491r307147_chk
Review access permissions to tools used to view or modify audit log data. These tools may include the DBMS itself or tools external to the database. If appropriate permissions and access controls are not applied to prevent unauthorized deletion of these tools, this is a finding.
Fix: F-21490r307148_fix
Add or modify access controls and permissions to tools used to view or modify audit log data. Only authorized personnel must be able to delete these tools.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-C2-011000
- Vuln IDs
-
- V-219767
- V-52223
- Rule IDs
-
- SV-219767r395850_rule
- SV-66439
Checks: C-21492r307150_chk
Review system documentation to identify accounts authorized to own database objects. Review accounts in DBMS that own objects. If any database objects are found to be owned by users not authorized to own database objects, this is a finding. Query the object DBA_OBJECTS to show the users who own objects in the database. The query below will return all of the users who own objects. sqlplus connect as sysdba SQL>select owner, object_type, count(*) from dba_objects group by owner, object_type order by owner, object_type; If these owners are not authorized owners, select all of the objects these owners have generated and decide who they should belong to. To make a list of all of the objects, the unauthorized owner has to perform the following query. SQL>select * from dba_objects where owner =&unauthorized_owner;
Fix: F-21491r307151_fix
Update system documentation to include list of accounts authorized for object ownership. Re-assign ownership of authorized objects to authorized object owner accounts.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- O112-C2-011500
- Vuln IDs
-
- V-219768
- V-52231
- Rule IDs
-
- SV-219768r395853_rule
- SV-66447
Checks: C-21493r307153_chk
If Oracle is hosted on a server that does not support production systems, and is designated for the deployment of samples and demonstrations, this is not applicable (NA). Review documentation and websites from Oracle and any other relevant vendors for vendor-provided demonstration or sample databases, database applications, schemas, objects, and files. Review the Oracle DBMS to determine if any of the demonstration and sample databases, schemas, database applications, or files are installed in the database or are included with the DBMS application. If any are present in the database or are included with the DBMS application, this is a finding. The Oracle Default Sample Schema User Accounts are: BI Owns the Business Intelligence schema included in the Oracle Sample Schemas. HR Manages the Human Resources schema. Schema stores information about the employees and the facilities of the company. OE Manages the Order Entry schema. Schema stores product inventories and sales of the company's products through various channels. PM Manages the Product Media schema. Schema contains descriptions and detailed information about each product sold by the company. IX Manages the Information Exchange schema. Schema manages shipping through business-to-business (B2B) applications database. SH Manages the Sales schema. Schema stores statistics to facilitate business decisions. SCOTT A demonstration account with a simple schema.
Fix: F-21492r307154_fix
Remove any demonstration and sample databases, database applications, objects, and files from the DBMS. To remove an account and all objects owned by that account (using BI as an example): DROP USER BI CASCADE; To remove objects without removing their owner, use the appropriate DROP statement (DROP TABLE, DROP VIEW, etc.).
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- O112-C2-011600
- Vuln IDs
-
- V-219769
- V-52233
- Rule IDs
-
- SV-219769r395853_rule
- SV-66449
Checks: C-21494r307156_chk
Run this query to produce a list of components and features installed with the database: SELECT comp_id, comp_name, version, status from dba_registry where comp_id not in ('CATALOG','CATPROC'); Review the list. If unused components are installed and are not documented and authorized, this is a finding. Starting with releases 11.1.0.7.x and above all products are installed by default and the option to customize the product/component selection is no longer possible with the exception of those listed here: Oracle JVM, Oracle Text, Oracle Multimedia, Oracle OLAP, Oracle Spatial, Oracle Label Security, Oracle Application Express, Oracle Database Vault
Fix: F-21493r307157_fix
If any components are required for operation of applications that will be accessing the DBMS, include them in the system documentation. You cannot remove components, either via Database Configuration Assistant (DBCA) or manually once the database has been created. You can, however, use DBCA to create a database and remove components during the creation process, before you create the database. When using DBCA to create a custom database, select Database Template = Custom/Database Components. Components that can be selected or de-selected are: Oracle Text, Oracle OLAP, Oracle Spatial, Oracle Label Security, Sample Schemas, Enterprise Manager Repository, Oracle Warehouse Builder, Oracle Database Vault
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- O112-C2-011700
- Vuln IDs
-
- V-219770
- V-52235
- Rule IDs
-
- SV-219770r395853_rule
- SV-66451
Checks: C-21495r307159_chk
Run this query to check to see what integrated components are installed in the database: SELECT parameter, value from v$option where parameter in ( 'Data Mining', 'Oracle Database Vault', 'OLAP', 'Oracle Label Security', 'Oracle Database Extensions for .NET', 'Partitioning', 'Real Application Testing' ); This will return all of the relevant database options and their status. TRUE means that the option is installed. If the option is not installed, the option will be set to FALSE. Review the options and check the system documentation to see what is required. If all listed components are authorized to be in use, this is not a finding. If any unused components or features are listed by the query as TRUE, this is a finding.
Fix: F-21494r307160_fix
In the system documentation list the integrated components required for operation of applications that will be accessing the DBMS. For Oracle Database 11g Release 2, only the following components can be enabled/disabled: Oracle Data Mining (dm) Oracle Database Vault (dv) Oracle OLAP (olap) Oracle Label Security (lbac) Oracle Database Extensions for .NET (ode_net_2) Oracle Partitioning (partitioning) Real Application Testing (rat) Use the chopt utility (an Oracle-supplied operating system command that resides in the <Oracle Home path>/bin directory) to disable each option that should not be available. The command format is chopt <enable|disable> <option> where <option> is any of the abbreviatons in parentheses in the list above. For example, to disable Real Application Testing, issue the following command at an OS prompt: chopt disable rat Restart the Oracle service. (See My Oracle Support Document 948061.1 for more on the chopt command.)
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- O112-C2-011800
- Vuln IDs
-
- V-219771
- V-52237
- Rule IDs
-
- SV-219771r395853_rule
- SV-66453
Checks: C-21496r307162_chk
Review the database for definitions of application executable objects stored external to the database. Determine if there are methods to disable use or access, or to remove definitions for external executable objects. Verify any application executable objects listed are authorized by the ISSO. If any are not, this is a finding. If the external executables or libraries are owned by ''SYS'' this is not a finding. To check for external procedures, execute the following query, which will provide the libraries containing external procedures, the owners of those libraries, users that have been granted access to those libraries, and the privileges they have been granted. If there are owners other than the owners that Oracle provides, there may be executable objects stored either in the database or external to the database that are called by objects in the database. Check to see that those owners are authorized to access those libraries. If there are users that have been granted access to libraries provided by Oracle, check to see that they are authorized to access those libraries. (connect as sysdba) set linesize 130 column library_name format a25 column name format a15 column owner format a15 column grantee format a15 column privilege format a15 select library_name,owner, '' grantee, '' privilege from dba_libraries where file_spec is not null minus ( select library_name,o.name owner, '' grantee, '' privilege from dba_libraries l, sys.user$ o, sys.user$ ge, sys.obj$ obj, sys.objauth$ oa where l.owner=o.name and obj.owner#=o.user# and obj.name=l.library_name and oa.obj#=obj.obj# and ge.user#=oa.grantee# and l.file_spec is not null ) union all select library_name,o.name owner, --obj.obj#,oa.privilege#, ge.name grantee, tpm.name privilege from dba_libraries l, sys.user$ o, sys.user$ ge, sys.obj$ obj, sys.objauth$ oa, sys.table_privilege_map tpm where l.owner=o.name and obj.owner#=o.user# and obj.name=l.library_name and oa.obj#=obj.obj# and ge.user#=oa.grantee# and tpm.privilege=oa.privilege# and l.file_spec is not null /
Fix: F-21495r307163_fix
Disable use of or remove any external application executable object definitions that are not authorized. Disable access to operating system commands from within the DBMS, or document the need for this capability.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- O112-C2-011810
- Vuln IDs
-
- V-219772
- V-60141
- Rule IDs
-
- SV-219772r395853_rule
- SV-74571
Checks: C-21497r307165_chk
Review the System Security Plan to determine if the use of the external procedure agent is authorized. Review the ORACLE_HOME/bin directory or search the ORACLE_BASE path for the executable extproc (UNIX) or extproc.exe (Windows). If external procedure agent is not authorized for use in the System Security Plan and the executable file does not exist or is restricted, this is not a finding. If external procedure agent is not authorized for use in the System Security Plan and the executable file exists and is not restricted, this is a finding. If use of the external procedure agent is authorized, ensure extproc is restricted to execution of authorized applications. External jobs are run using the account nobody by default. Review the contents of the file ORACLE_HOME/rdbms/admin/externaljob.ora for the lines run_user= and run_group=. If the user assigned to these parameters is not "nobody", this is a finding. For versions 11.1 and later, the external procedure agent (extproc executable) is available directly from the database and does not require definition in the listener.ora file for use. Review the contents of the file ORACLE_HOME/hs/admin/extproc.ora. If external processes are allowed, but the file does not exist, this is a finding. If the following entry does not appear in the file, this is a finding: EXTPROC_DLLS=ONLY:[dll full file name1]:[dll full file name2]:.. [dll full file name] represents a full path and file name. This list of file names is separated by ":". If "ONLY" is specified, then the list is restricted to allow execution of only the DLLs specified in the list and is not a finding. If "ANY" is specified, then there are no restrictions for execution except what is controlled by operating system permissions and is a finding. If no specification is made, any files located in the %ORACLE_HOME%\bin directory on Windows systems or $ORACLE_HOME/lib directory on UNIX systems can be executed (the default) and is a finding. Ensure that EXTPROC is not accessible from the listener. Review the listener.ora file. If any entries reference "extproc", this is a finding. Determine if the external procedure agent is in use per Oracle 10.x conventions. Review the listener.ora file. If any entries reference "extproc", then the agent is in use. If external procedure agent is not authorized for use in the System Security Plan and references to "extproc" exist, this is a finding. Sample listener.ora entries with extproc included: LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) EXTLSNR = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = /home/oracle/app/oracle/product/11.1.0/db_1) (SID_NAME = ORCL) ) ) SID_LIST_EXTLSNR = (SID_LIST = (SID_DESC = (PROGRAM = extproc) (SID_NAME = PLSExtProc) (ORACLE_HOME = /home/oracle/app/oracle/product/11.1.0/db_1) (ENVS="EXTPROC_DLLS=ONLY:/home/app1/app1lib.so:/home/app2/app2lib.so, LD_LIBRARY_PATH=/private/app2/lib:/private/app1, MYPATH=/usr/fso:/usr/local/packages") ) ) Sample tnsnames.ora entries with extproc included: ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = extproc)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PLSExtProc) ) ) If EXTPROC is in use, confirm that a listener is dedicated to serving the external procedure agent (as shown above). View the protocols configured for the listener. For the listener to be dedicated, the only entries will be to specify extproc. If there is not a dedicated listener in use for the external procedure agent, this is a finding. If the PROTOCOL= specified is other than IPC, this is a finding. Verify and ensure extproc is restricted executing authorized external applications only and extproc is restricted to execution of authorized applications. Review the listener.ora file. If the following entry does not exist, this is a finding: EXTPROC_DLLS=ONLY:[dll full file name1]:[dll full file name2]:... [dll full file name] represents a full path and file name. This list of file names is separated by ":". If "ONLY" is specified, then the list is restricted to allow execution of only the DLLs specified in the list and is not a finding. If "ANY" is specified, then there are no restrictions for execution except what is controlled by operating system permissions and is a finding. If no specification is made, any files located in the %ORACLE_HOME%\bin directory on Windows systems or $ORACLE_HOME/lib directory on UNIX systems can be executed (the default) and is a finding. View the listener.ora file (usually in ORACLE_HOME/network/admin or directory specified by the TNS_ADMIN environment variable). If multiple listener processes are running, then the listener.ora file for each must be viewed. For each process, determine the directory specified in the ORACLE_HOME or TNS_ADMIN environment variable defined for the process account to locate the listener.ora file.
Fix: F-21496r307166_fix
If the use of external procedure agent is required, then authorize and document the requirement in the System Security Plan. If the external procedure agent must be accessible to the Oracle listener, then specify this and authorize it in the System Security Plan. If use of the Oracle External Procedure agent is not required: - Stop the Oracle Listener process - Remove all references to extproc in the listener.ora and tnsnames.ora files - Alter the permissions on the executable files: UNIX - Remove read/write/execute permissions from owner, group and world Windows - Remove Groups/Users from the executable (except groups SYSTEM and ADMINISTRATORS) and allow READ [only] for SYSTEM and ADMINISTRATORS groups If required: - Restrict extproc execution to only authorized applications. - Specify EXTPROC_DLLS=ONLY: [list of authorized DLLS] in the extproc.ora and the listener.ora files - Create a separate, dedicated listener for use by the external procedure agent Please see the Oracle Net Services Administrators Guides, External Procedures section for detailed configuration information.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000382
- Version
- O112-C2-011900
- Vuln IDs
-
- V-219773
- V-52239
- Rule IDs
-
- SV-219773r395856_rule
- SV-66455
Checks: C-21498r307168_chk
Review the DBMS settings for functions, ports, protocols, and services that are not approved. If any are found, this is a finding. (For definitive information on Ports, Protocols and Services Management (PPSM), refer to http://iase.disa.mil/ppsm/index.html.) - - - - - In the Oracle database, the communications with the database and incoming requests are performed by the Oracle Listener. The Oracle Listener listens on a specific port or ports for connections to a specific database. The Oracle Listener has configuration files located in the $ORACLE_HOME/network/admin directory. To check the ports and protocols in use, go to that directory and review the SQLNET.ora, LISTENER.ora, and the TNSNAMES.ora. If protocols or ports are in use that are not authorized, this is a finding.
Fix: F-21497r307169_fix
Disable functions, ports, protocols, and services that are not approved. - - - - - Change the SQLNET.ora, LISTENER.ora, and TNSNAMES.ora files to reflect the proper use of ports, protocols and services that are approved at the site. If changes to the Listener are made, the files associated with the Listener must be reloaded. Do that by issuing the following commands at the Unix/Linux or Windows prompt. First - issue the command to see what the current status is $ lsnrctl stat Then load the new file that was corrected to reflect site-specific requirements. $ lsnrctl reload Then check the status again to see that the changes have taken place $ lsnrctl stat
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000196
- Version
- O112-C2-014600
- Vuln IDs
-
- V-219774
- V-52285
- Rule IDs
-
- SV-219774r397522_rule
- SV-66501
Checks: C-21499r307171_chk
(Oracle stores and displays its passwords in encrypted form. Nevertheless, this should be verified by reviewing the relevant system views, along with the other items to be checked here.) Ask the DBA to review the list of DBMS database objects, database configuration files, associated scripts, and applications defined within and external to the DBMS that access the database. The list should also include files, tables or settings used to configure the operational environment for the DBMS and for interactive DBMS user accounts. Ask the DBA and/or IAO to determine if any DBMS database objects, database configuration files, associated scripts, and applications defined within or external to the DBMS that access the database, and DBMS/user environment files/settings/tables, contain database passwords. If any do, confirm that DBMS passwords stored internally or externally to the DBMS are encoded or encrypted. If any passwords are stored in clear text, this is a finding. Ask the DBA/SA/Application Support staff if they have created an external password store for applications, batch jobs, and scripts to use. Verify that all passwords stored there are encrypted. If a password store is used and any password is not encrypted, this is a finding. The following are notes on implementing a Secure External Password Store using Oracle Wallet: You can store password credentials for connecting to databases by using a client-side Oracle wallet. An Oracle wallet is a secure software container that stores authentication and signing credentials. This wallet usage can simplify large-scale deployments that rely on password credentials for connecting to databases. When this feature is configured, application code, batch jobs, and scripts no longer need embedded user names and passwords. This reduces risk because the passwords are no longer exposed, and password management policies are more easily enforced without changing application code whenever user names or passwords change. The external password store of the wallet is separate from the area where public key infrastructure (PKI) credentials are stored. Consequently, you cannot use Oracle Wallet Manager to manage credentials in the external password store of the wallet. Instead, use the command-line utility mkstore to manage these credentials. How Does the External Password Store Work? Typically, users (and applications, batch jobs, and scripts) connect to databases by using a standard CONNECT statement that specifies a database connection string. This string can include a user name and password, and an Oracle Net service name identifying the database on an Oracle Database network. If the password is omitted, the connection prompts the user for the password. For example, the service name could be the URL that identifies that database, or a TNS alias you entered in the tnsnames.ora file in the database. Another possibility is a host:port:sid string. The following examples are standard CONNECT statements that could be used for a client that is not configured to use the external password store: CONNECT salesapp@sales_db.us.example.com Enter password: password CONNECT salesapp@orasales Enter password: password CONNECT salesapp@ourhost37:1527:DB17 Enter password: password In these examples, salesapp is the user name, with the unique connection string for the database shown as specified in three different ways. You could use its URL sales_db.us.example.com, or its TNS alias, orasales, from the tnsnames.ora file, or its host:port:sid string. However, when clients are configured to use the secure external password store, applications can connect to a database with the following CONNECT statement syntax, without specifying database logon credentials: CONNECT /@db_connect_string CONNECT /@db_connect_string AS SYSDBA CONNECT /@db_connect_string AS SYSOPER In this specification, db_connect_string is a valid connection string to access the intended database, such as the service name, URL, or alias as shown in the earlier examples. Each user account must have its own unique connection string; you cannot create one connection string for multiple users. In this case, the database credentials, user name and password, are securely stored in an Oracle wallet created for this purpose. The autologin feature of this wallet is turned on, so the system does not need a password to open the wallet. From the wallet, it gets the credentials to access the database for the user they represent.
Fix: F-21498r307172_fix
Develop, document, and maintain a list of DBMS database objects, database configuration files, associated scripts, and applications defined within or external to the DBMS that access the database, and DBMS/user environment files/settings in the System Security Plan. Record whether they do or do not contain DBMS passwords. If passwords are present, ensure they are encoded or encrypted and protected by host system security. The following are notes on implementing a Secure External Password Store using Oracle Wallet: Oracle provides the capability to provide for a secure external password facility. Use the Oracle mkstore to create a secure storage area for passwords for applications, batch jobs, and scripts to use, or deploy a site-authorized facility to perform this function. Check to see what has been stored in the Oracle External Password Store. To view all contents of a client wallet external password store, check specific credentials by viewing them. Listing the external password store contents provides information you can use to decide whether to add or delete credentials from the store. To list the contents of the external password store, enter the following command at the command line: $ mkstore -wrl wallet_location -listCredential For example: $ mkstore -wrl c:\oracle\product\11.2.0\db_1\wallets -listCredential The wallet_location specifies the path to the directory where the wallet, whose external password store contents you want to view, is located. This command lists all of the credential database service names (aliases) and the corresponding user name (schema) for that database. Passwords are not listed. Configuring Clients to use the External Password Store: If your client is already configured to use external authentication, such as Windows native authentication or Transport Layer Security (TLS), then Oracle Database uses that authentication method. The same credentials used for this type of authentication are typically also used to log in to the database. For clients not using such authentication methods or wanting to override them for database authentication, you can set the SQLNET.WALLET_OVERRIDE parameter in sqlnet.ora to TRUE. The default value for SQLNET.WALLET_OVERRIDE is FALSE, allowing standard use of authentication credentials as before. If you want a client to use the secure external password store feature, then perform the following configuration task: 1. Create a wallet on the client by using the following syntax at the command line: mkstore -wrl wallet_location -create For example: mkstore -wrl c:\oracle\product\11.2.0\db_1\wallets -create Enter password: password The wallet_location is the path to the directory where you want to create and store the wallet. This command creates an Oracle wallet with the autologin feature enabled at the location you specify. The autologin feature enables the client to access the wallet contents without supplying a password. The mkstore utility -create option uses password complexity verification. 2. Create database connection credentials in the wallet by using the following syntax at the command line: mkstore -wrl wallet_location -createCredential db_connect_string username Enter password: password For example: mkstore -wrl c:\oracle\product\11.2.0\db_1\wallets -createCredential oracle system Enter password: password In this specification the wallet_location is the path to the directory where you created the wallet. The db_connect_string used in the CONNECT /@db_connect_string statement must be identical to the db_connect_string specified in the -createCredential command. The db_connect_string is the TNS alias you use to specify the database in the tnsnames.ora file or any service name you use to identify the database on an Oracle network. By default, tnsnames.ora is located in the $ORACLE_HOME/network/admin directory on UNIX systems and in ORACLE_HOME\network\admin on Windows. The username is the database logon credential. When prompted, enter the password for this user. 3. In the client sqlnet.ora file, enter the WALLET_LOCATION parameter and set it to the directory location of the wallet you created in Step 1. For example, if you created the wallet in $ORACLE_HOME/network/admin and your Oracle home is set to /private/ora11, then you need to enter the following into your client sqlnet.ora file: WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /private/ora11/network/admin) ) ) 4. In the client sqlnet.ora file, enter the SQLNET.WALLET_OVERRIDE parameter and set it to TRUE as follows: SQLNET.WALLET_OVERRIDE = TRUE This setting causes all CONNECT /@db_connect_string statements to use the information in the wallet at the specified location to authenticate to databases. When external authentication is in use, an authenticated user with such a wallet can use the CONNECT /@db_connect_string syntax to access the previously specified databases without providing a user name and password. However, if a user fails that external authentication, then these connect statements also fail. Below is a sample sqlnet.ora file with the WALLET_LOCATION and the SQLNET.WALLET_OVERRIDE parameters set as described in Steps 3 and 4. WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /private/ora11/network/admin) ) ) SQLNET.WALLET_OVERRIDE = TRUE SSL_CLIENT_AUTHENTICATION = FALSE SSL_VERSION = 1.2 (Note: This assumes that a single sqlnet.ora file, in the default location, is in use. Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.)
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000185
- Version
- O112-C2-015300
- Vuln IDs
-
- V-219775
- V-52293
- Rule IDs
-
- SV-219775r397594_rule
- SV-66509
Checks: C-21500r307174_chk
If PKI is not enabled in the Oracle Database, this is not a finding. Review DBMS configuration to verify the certificates being accepted by the DBMS have a valid certification path with status information to an accepted trust anchor. If certification paths are not being validated back to a trust anchor, this is a finding. The database supports PKI-based authentication by using digital certificates over TLS in addition to the native encryption and data integrity capabilities of these protocols. Oracle provides a complete PKI that is based on RSA Security, Inc., Public-Key Cryptography Standards, and which interoperates with Oracle servers and clients. The database uses a wallet which is a container that is used to store authentication and signing credentials, including private keys, certificates, and trusted certificates needed by TLS. In an Oracle environment, every entity that communicates over TLS must have a wallet containing an X.509 version 3 certificate, private key, and list of trusted certificates. If the $ORACLE_HOME/network/admin/sqlnet.ora contains the following entries, TLS is installed. WALLET_LOCATION = (SOURCE= (METHOD = FILE) (METHOD_DATA = DIRECTORY=/wallet) SSL_CIPHER_SUITES=(SSL_cipher_suiteExample) SSL_VERSION = 1.2 SSL_CLIENT_AUTHENTICATION=TRUE (Note: This assumes that a single sqlnet.ora file, in the default location, is in use. Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.)
Fix: F-21499r307175_fix
Configure the DBMS to validate certificates by constructing a certification path with status information to an accepted trust anchor. Configure the database to support Transport Layer Security (TLS) protocols and the Oracle Wallet to store authentication and signing credentials including private keys.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000187
- Version
- O112-C2-015500
- Vuln IDs
-
- V-219776
- V-52295
- Rule IDs
-
- SV-219776r397600_rule
- SV-66511
Checks: C-21501r307177_chk
Review DBMS configuration to verify DBMS user accounts are being mapped directly to authenticated identity information being passed via the PKI. If user accounts are not being mapped to authenticated identity information being passed via the PKI, this is a finding. The database supports PKI-based authentication by using digital certificates over TLS in addition to the native encryption and data integrity capabilities of these protocols. Oracle provides a complete PKI that is based on RSA Security, Inc., Public-Key Cryptography Standards, and which interoperates with Oracle servers and clients. The database uses a wallet which is a container that is used to store authentication and signing credentials, including private keys, certificates, and trusted certificates needed by TLS. In an Oracle environment, every entity that communicates over TLS must have a wallet containing an X.509 version 3 certificate, private key, and list of trusted certificates. Security administrators use Oracle Wallet Manager to manage security credentials on the server. If the $ORACLE_HOME/network/admin/sqlnet.ora contains the following entries, TLS is installed. (Note: This assumes that a single sqlnet.ora file, in the default location, is in use. Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.) WALLET_LOCATION = (SOURCE= (METHOD = FILE) (METHOD_DATA = DIRECTORY=/wallet) SSL_CIPHER_SUITES=(SSL_cipher_suiteExample) SSL_VERSION = 1.2 SSL_CLIENT_AUTHENTICATION=FALSE/TRUE
Fix: F-21500r307178_fix
Configure the DBMS to map the authenticated identity directly to the DBMS user account.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000187
- Version
- O112-C2-015501
- Vuln IDs
-
- V-219777
- V-53281
- Rule IDs
-
- SV-219777r397600_rule
- SV-67497
Checks: C-21502r307180_chk
Review configuration to confirm that accounts used by processes to connect to the DBMS are authenticated using valid, current DoD-issued PKI certificates. If any such account, other than SYS, is not certificate-based, this is a finding.
Fix: F-21501r307181_fix
For each such account, use DoD certificate-based authentication.
- RMF Control
- IA-7
- Severity
- M
- CCI
- CCI-000803
- Version
- O112-C2-015700
- Vuln IDs
-
- V-219778
- V-52297
- Rule IDs
-
- SV-219778r397606_rule
- SV-66513
Checks: C-21503r307183_chk
Check the following settings to see if FIPS 140-2 authentication/encryption is configured. If encryption is required but not configured, check with the DBA and SYSTEM Administrator to see if other mechanisms or third-party cryptography products are deployed for authentication. To see if Oracle is configured for FIPS 140-2 SSL/TLS authentication and/or Encryption: Open the fips.ora file in a browser or editor. (The default location for fips.ora is $ORACLE_HOME/ldap/admin/ but alternate locations are possible. An alternate location, if it is in use, is specified in the FIPS_HOME environment variable.) If the line "SSLFIPS_140=TRUE" is not found in fips.ora, or the file does not exist, this is a finding.
Fix: F-21502r307184_fix
Utilize NIST-validated FIPS 140-2-compliant cryptography for all authentication mechanisms. The strength requirements are dependent upon data classification. For unclassified data, where cryptography is required: AES 128 for encryption SHA 256 for hashing NSA has established the suite B encryption requirements for protecting National Security Systems (NSS) as follows: AES 128 for Secret AES 256 for Top Secret SHA 256 for Secret SHA 384 for Top Secret National Security System is defined as: (OMB Circular A-130) Any telecommunications or information system operated by the United States Government, the function, operation, or use of which (1) involves intelligence activities; (2) involves cryptologic activities related to national security; (3) involves command and control of military forces; (4) involves equipment that is an integral part of a weapon or weapons system; or (5) is critical to the direct fulfillment of military or intelligence missions, but excluding any system that is to be used for routine administrative and business applications (including payroll, finance, logistics, and personnel management applications). There is more information on this topic in the Oracle Database 11.2g Advanced Security Administrator's Guide, which may be found at https://docs.oracle.com/database/112/DBSEG/E48135-11.pdf. Note: because of changes in Oracle's licensing policy, it is no longer necessary to purchase Oracle Advanced Security to use network encryption and advanced authentication. FIPS 140-2 documentation can be downloaded from http://csrc.nist.gov/publications/PubsFIPS.html#140-2
- RMF Control
- SC-23
- Severity
- M
- CCI
- CCI-001185
- Version
- O112-C2-017600
- Vuln IDs
-
- V-219779
- V-52135
- Rule IDs
-
- SV-219779r397729_rule
- SV-66351
Checks: C-21504r307186_chk
Review DBMS settings and vendor documentation to verify user sessions are terminated upon user logout. If they are not, this is a finding. Review system documentation and organization policy to identify other events that should result in session terminations. If other session termination events are defined, review DBMS settings to verify occurrences of these events would cause session termination. If occurrences of defined session-terminating events do not cause session terminations, this is a finding. When a user logs out of an Oracle session gracefully or has the session terminated for an idle timeout or any other reason, the session is terminated, and the resources are returned to the system. Check with the DBA to see what mechanism is used to disconnect the session and what events the site uses to determine if a connection needs to be terminated. To test for timeout, open a connection and leave it idle for a period greater than the defined idle timeout setting enforced by the system. Then try to use the connection. If the connection is no longer active, then the mechanism deployed to terminate the connection is active and working.
Fix: F-21503r307187_fix
Configure DBMS settings to terminate sessions upon user logout. Configure DBMS settings to terminate sessions upon the occurrence of any organization or policy-defined session termination event. - - - - - To configure specific session termination processes we need to define the organization or policy-defined session termination event. Below are some examples. Oracle has several ways to disconnect idle sessions, both from within SQL*Plus via resources profiles (connect_time, idle_time) and with the SQL*net expire time parameter. You can use profiles to set the connect time and idle time with "alter profile" statements: alter profile senior_claim_analyst limit connect_time 180000 sessions_per_user 2 ldle_time 1800; Profiles comprise a named set of resource limits. By default, when you create users, they are given the default profile, which provides unlimited use of all resources. The syntax to create a profile follows: CREATE PROFILE LIMIT resource_parameters|password_parameters; Resource_parameters: [SESSIONS_PER_USER n|UNLIMITED|DEFAULT] [CPU_PER_SESSION n|UNLIMITED|DEFAULT] [CPU_PER_CALL n|UNLIMITED|DEFAULT] [CONNECT_TIME n|UNLIMITED|DEFAULT] [IDLE_TIME n|UNLIMITED|DEFAULT] By setting resource limits, you can prevent users from performing operations that will tie up the system and prevent other users from performing operations. You can use resource limits for security, to ensure that users log off the system, so as not to leave the session connected for long periods of time. The system resource limits can be enforced at the session-level, the call level, or both. The session-level is calculated from the time the user logs in to the database until the user exits. The call level applies to each SQL command issued. Session-level limits are enforced for each connection. When a session-level limit is exceeded, only the last SQL command issued is rolled back; no further work can be performed until a commit, rollback, or exit is performed. Using SQLNET.EXPIRE_TIME The sqlnet.expire_time parameter is used to set a time interval, in minutes, to determine how often a probe should be sent verifying that client/server connections are active. If you need to ensure that connections are not left open indefinitely (or up to the time set by operating system-specific parameters), you should set a value that is greater than 0. This protects the system from connections left open due to an abnormal client termination. When the probe detects a terminated connection or a connection no longer in use, it signals an error, causing the server process to exit. This setting is intended for use on the database server side of the connection, which usually handles multiple connections at any one time. Limitations on using this terminated (dead) connection detection feature are: sqlnet.expire_time cannot be used on bequeathed connections. The SQL*Net expire_time probe packet will generate additional network traffic that may downgrade the network's performance, depending on the number of connections. Depending on the operating system that is in use, additional server processing may need to be performed to distinguish the connection probe from other events that occur. This overhead for detection of probe events can result in downgraded network performance. Turning-on expire_time To set up these advanced features, simply edit your sqlnet.ora file. If you are a beginner, follow this procedure: Start the Oracle Network Manager GUI. In the GUI navigator pane, expand the icons Local > Profile. From the list on the right hand pane, select General. Click on the Advanced tab. Next, enter the values for the fields or options you want to set. When you are finished, choose File > Save Network Configuration to write your changes to the sqlnet.ora file. (Note: This assumes that a single sqlnet.ora file, in the default location, is in use. Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.) The sqlnet.ora inbound_connect_timeout parameter The sqlnet.ora inbound_connect_timeout parameter is used to limit the time, set in seconds, for a client to connect with the database server and provide the required authentication information. Also see sqlnet.inbound_connect_timeout tips. To limit consumption of Oracle resources by unauthorized users and enable an audit trail, you should set time-limit values for the sqlnet.inbound_connect_timeout parameter in wall-clock seconds. (This parameter does not have default values.) Failure resulting from sqlnet.inbound_connect_timeout will throw an ORA-03136 inbound connection timed out error.
- RMF Control
- SC-24
- Severity
- M
- CCI
- CCI-001665
- Version
- O112-C2-018200
- Vuln IDs
-
- V-219780
- V-52141
- Rule IDs
-
- SV-219780r397741_rule
- SV-66357
Checks: C-21505r307189_chk
If the database is used solely for transient data (such as one dedicated to Extract-Transform-Load (ETL)), and a clear plan exists for the recovery of the database by means other than archiving, this not a finding. If it has been determined that up-to-the second recovery is not necessary and this fact is recorded in the system documentation, with appropriate approval, this is not a finding. Check DBMS settings to determine whether system state information is being preserved in the event of a system failure. The necessary state information is defined as "information necessary to determine cause of failure and to return to operations with least disruption to mission/business processes". Oracle creates what is known as archive logs. Archive logs contain information required to replay a transaction should something happen. The redo logs are also used to copy transactions or pieces of transactions. Issue the following commands to check the status of archive log mode: $ sqlplus connect as sysdba --Check current archivelog mode in database SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination /home/oracle/app/oracle/arc2/ORCL Oldest online log sequence 433 Next log sequence to archive 435 Current log sequence 435 If archive log mode is not enabled, this is a finding.
Fix: F-21504r307190_fix
Configure DBMS settings to preserve all required system state information in the event of a system failure. If the database is not in archive log mode, issue the following commands to put the database in archive log mode. The database must be normally shutdown and restarted before it can be placed in archive log mode. $ sqlplus connect as sysdba -- stop and dismount database and shutdown instance. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; -- Restart instance. ORACLE instance started. Total System Global Area 1653518336 bytes Fixed Size 2228904 bytes Variable Size 1325403480 bytes Database Buffers 318767104 bytes Redo Buffers 7118848 bytes Database mounted. SQL> alter database archivelog; -- Enable ArchiveLog Database altered. SQL> alter database open; -- Re-open database Database altered. Issue the following command to see the new status: SQL> select log_mode from v$database; LOG_MODE ------------ ARCHIVELOG SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 294 Next log sequence to archive 296 Current log sequence 296 The database is now in archive log mode, and transactions are either being recorded to transport to another database or being re-applied if the database becomes corrupt and needs to be restored from the last backup. Use the redo logs to replay transactions not captured in the backup.
- RMF Control
- SC-28
- Severity
- M
- CCI
- CCI-001199
- Version
- O112-C2-018300
- Vuln IDs
-
- V-219781
- V-52143
- Rule IDs
-
- SV-219781r397744_rule
- SV-66359
Checks: C-21506r307192_chk
If the application owner and Authorizing Official have determined that encryption of data at rest is NOT required, this is not a finding. Review DBMS settings to determine whether controls exist to protect the confidentiality and integrity of data at rest in the database. If controls do not exist or are not enabled, this is a finding. To ensure that the appropriate controls are in place, discuss the precautions taken with the site Database Administrators and System Administrators and try to modify data at rest. Oracle recommends using Transparent Data Encryption to protect data. In order to check to see if the data is encrypted, for example, upon an auditor's request, Oracle provides views that document the encryption status of your database. For TDE column encryption, please use the view 'dba_encrypted_columns', which lists the owner, table name, column name, encryption algorithm, and salt, for all encrypted columns. For TDE tablespace encryption, the following SQL statement lists all encrypted tablespaces with their encryption algorithm and corresponding, encrypted, data files. Issue the following commands to check to see if the data at rest is encrypted. $ sqlplus connect as sysdba SQL> SELECT t.name "TSName", e.encryptionalg "Algorithm", d.file_name "File Name" FROM v$tablespace t, v$encrypted_tablespaces e, dba_data_files d WHERE t.ts# = e.ts# and t.name = d.tablespace_name; The next SQL statement lists the table owner, tables within encrypted tablespaces, and the encryption algorithm: SQL> SELECT a.owner "Owner", a.table_name "Table Name", e.encryptionalg "Algorithm", FROM dba_tables a, v$encrypted_tablespaces e WHERE a.tablespace_name in (select t.name from v$tablespace t, v$encrypted_tablespaces e where t.ts# = e.ts#);
Fix: F-21505r307193_fix
Apply appropriate controls to protect the confidentiality and integrity of data at rest in the database. If no site-specific precautions are in place, use Oracle Advanced Security Option to encrypt data at rest. If ASO is not an option, use site-specific procedures to secure data at rest.
- RMF Control
- SC-3
- Severity
- M
- CCI
- CCI-001084
- Version
- O112-C2-018500
- Vuln IDs
-
- V-219782
- V-52147
- Rule IDs
-
- SV-219782r397747_rule
- SV-66363
Checks: C-21507r307195_chk
Check DBMS settings to determine whether objects or code implementing security functionality are located in a separate security domain, such as a separate database or schema created specifically for security functionality. If security-related database objects or code are not kept separate, this is a finding. The Oracle elements of security functionality such as the roles, permissions and profiles along with password complexity requirements are stored in separate schemas in the database. Review any site-specific applications security modules built into the database and determine what schema they are located in and take appropriate action. The Oracle objects will be in the Oracle Data Dictionary.
Fix: F-21506r307196_fix
Locate security-related database objects and code in a separate database, schema, or other separate security domain from database objects and code implementing application logic. (This is the default behavior for Oracle.) Review any site-specific applications security modules built into the database: determine what schema they are located in and take appropriate action.
- RMF Control
- SC-4
- Severity
- M
- CCI
- CCI-001090
- Version
- O112-C2-018900
- Vuln IDs
-
- V-219783
- V-52157
- Rule IDs
-
- SV-219783r397765_rule
- SV-66373
Checks: C-21508r307198_chk
Verify there are proper procedures in place for the refreshing of development/test data from production. Review any scripts or code that exists for the movement of production data to development/test and verify copies of production data are not left in unprotected locations. If there is no documented procedure for data movement from production to development/test, this is a finding. If the code that exists for data movement does not remove any copies of production data from unprotected locations, this is a finding.
Fix: F-21507r307199_fix
Create and document a process for moving data from production to development/test systems, and follow the process. Modify any code used for moving data from production to development/test systems to ensure copies of production data are not left in non-secured locations. Moving data is only a part of the challenge of protecting the data. When the data is moved, it should also be changed so sensitive information is not made available in development environments. With the Oracle Data Masking Pack for Oracle Enterprise Manager, organizations can comply with data privacy and protection mandates that restrict the use of actual customer data. With Oracle Data Masking Pack, sensitive information such as credit card or social security numbers can be replaced with realistic values, allowing production data to be safely used for development, testing, or sharing with out-source or off-shore partners for other nonproduction purposes. When used in conjunction with Oracle Enterprise Manager, it is easy to develop a secure process which is capable of obfuscating the data during the movement process. If the Oracle Data Masking Pack and Enterprise Manager are not available, develop site-specific procedures to manage and obfuscate sensitive data.
- RMF Control
- SI-10
- Severity
- M
- CCI
- CCI-001310
- Version
- O112-C2-019500
- Vuln IDs
-
- V-219784
- V-52165
- Rule IDs
-
- SV-219784r397834_rule
- SV-66381
Checks: C-21509r307201_chk
Review DBMS code, settings, field definitions, constraints and triggers to determine whether or not data being input into the database is validated. If code exists that allows invalid data to be acted upon or input into the database, this is a finding. If field definitions do not exist in the database, this is a finding. If fields do not contain enabled constraints where required, this is a finding. - - - - - Oracle provides built-in processes to keep data and its integrity intact by using constraints. Integrity Constraint States You can specify that a constraint is enabled (ENABLE) or disabled (DISABLE). If a constraint is enabled, data is checked as it is entered or updated in the database, and data that does not conform to the constraint is prevented from being entered. If a constraint is disabled, then data that does not conform can be allowed to enter the database. Additionally, you can specify that existing data in the table must conform to the constraint (VALIDATE). Conversely, if you specify NOVALIDATE, you are not ensured that existing data conforms. An integrity constraint defined on a table can be in one of the following states: ENABLE, VALIDATE ENABLE, NOVALIDATE DISABLE, VALIDATE DISABLE, NOVALIDATE For details about the meaning of these states and an understanding of their consequences, see the Oracle Database SQL Language Reference. Some of these consequences are discussed here. Disabling Constraints To enforce the rules defined by integrity constraints, the constraints should always be enabled. However, consider temporarily disabling the integrity constraints of a table for the following performance reasons: - When loading large amounts of data into a table - When performing batch operations that make massive changes to a table (for example, changing every employee's number by adding 1000 to the existing number) - When importing or exporting one table at a time In all three cases, temporarily disabling integrity constraints can improve the performance of the operation, especially in data warehouse configurations. It is possible to enter data that violates a constraint while that constraint is disabled. Thus, you should always enable the constraint after completing any of the operations listed in the preceding bullet list. Enabling Constraints While a constraint is enabled, no row violating the constraint can be inserted into the table. However, while the constraint is disabled, such a row can be inserted. This row is known as an exception to the constraint. If the constraint is in the enable nonvalidated state, violations resulting from data entered while the constraint was disabled remain. The rows that violate the constraint must be either updated or deleted in order for the constraint to be put in the validated state. You can identify exceptions to a specific integrity constraint while attempting to enable the constraint. See "Reporting Constraint Exceptions". All rows violating constraints are noted in an EXCEPTIONS table, which you can examine. Enable Nonvalidate Constraint State When a constraint is in the enable nonvalidate state, all subsequent statements are checked for conformity to the constraint. However, any existing data in the table is not checked. A table with enable nonvalidated constraints can contain invalid data, but it is not possible to add new invalid data to it. Enabling constraints in the nonvalidated state is most useful in data warehouse configurations that are uploading valid OLTP data. Enabling a constraint does not require validation. Enabling a constraint nonvalidate is much faster than enabling and validating a constraint. Also, validating a constraint that is already enabled does not require any DML locks during validation (unlike validating a previously disabled constraint). Enforcement guarantees that no violations are introduced during the validation. Hence, enabling without validating enables you to reduce the downtime typically associated with enabling a constraint. Efficient Use of Integrity Constraints: A Procedure Using integrity constraint states in the following order can ensure the best benefits: Disable state. Perform the operation (load, export, import). Enable nonvalidate state. Enable state. Some benefits of using constraints in this order are: No locks are held. All constraints can go to enable state concurrently. Constraint enabling is done in parallel. Concurrent activity on table is permitted. Setting Integrity Constraints Upon Definition When an integrity constraint is defined in a CREATE TABLE or ALTER TABLE statement, it can be enabled, disabled, or validated or not validated as determined by your specification of the ENABLE/DISABLE clause. If the ENABLE/DISABLE clause is not specified in a constraint definition, the database automatically enables and validates the constraint. Disabling Constraints Upon Definition The following CREATE TABLE and ALTER TABLE statements both define and disable integrity constraints: CREATE TABLE emp ( empno NUMBER(5) PRIMARY KEY DISABLE, . . . ; ALTER TABLE emp ADD PRIMARY KEY (empno) DISABLE; An ALTER TABLE statement that defines and disables an integrity constraint never fails because of rows in the table that violate the integrity constraint. The definition of the constraint is allowed because its rule is not enforced. Enabling Constraints Upon Definition The following CREATE TABLE and ALTER TABLE statements both define and enable integrity constraints: CREATE TABLE emp ( empno NUMBER(5) CONSTRAINT emp.pk PRIMARY KEY, . . . ; ALTER TABLE emp ADD CONSTRAINT emp.pk PRIMARY KEY (empno); An ALTER TABLE statement that defines and attempts to enable an integrity constraint can fail because rows of the table violate the integrity constraint. If this case, the statement is rolled back, and the constraint definition is not stored and not enabled. When you enable a UNIQUE or PRIMARY KEY constraint an associated index is created.
Fix: F-21508r307202_fix
Modify database code to properly validate data before it is put into the database or acted upon by the database. Modify database to contain field definitions for each field in the database. Modify database to contain constraints on database columns and tables that require them for data validity. Review the application schemas implemented on the system. Check the DDL for the tables that are created for the applications to see if constraints have been enabled. - - - - - Enabling Constraints Upon Definition The following CREATE TABLE and ALTER TABLE statements both define and enable integrity constraints: CREATE TABLE emp ( empno NUMBER(5) CONSTRAINT emp.pk PRIMARY KEY, . . . ) ; ALTER TABLE emp ADD CONSTRAINT emp.pk PRIMARY KEY (empno); An ALTER TABLE statement that defines and attempts to enable an integrity constraint can fail because existing rows of the table violate the integrity constraint. In this case, the statement is rolled back, and the constraint definition is not stored and not enabled. When you enable a UNIQUE or PRIMARY KEY constraint, an associated index is created.
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001312
- Version
- O112-C2-019900
- Vuln IDs
-
- V-219785
- V-52177
- Rule IDs
-
- SV-219785r397843_rule
- SV-66393
Checks: C-21510r307204_chk
Check DBMS settings and custom database and application code to verify error messages do not contain information beyond what is needed for troubleshooting the issue. If database errors contain PII data, sensitive business data, or information useful for identifying the host system, this is a finding. (Notes on Oracle's approach to this issue: Out of the box, Oracle covers this. For example, if a user does not have access to a table, the error is just that the table or view does not exist. The Oracle database is not going to display a Social Security Number in an error code unless an application is programmed to do so. Oracle applications will not expose the actual transactional data to a screen. The only way Oracle will capture this information is to enable specific logging levels. Custom code would require a review to ensure compliance.)
Fix: F-21509r307205_fix
Configure DBMS and custom database and application code not to divulge sensitive information or information useful for system identification in error information.
- RMF Control
- SI-11
- Severity
- M
- CCI
- CCI-001314
- Version
- O112-C2-020000
- Vuln IDs
-
- V-219786
- V-52181
- Rule IDs
-
- SV-219786r397846_rule
- SV-66397
Checks: C-21511r307207_chk
Check DBMS settings and custom database code to determine if error messages are ever displayed to unauthorized individuals: i) Review all end-user-facing applications that use the database, to determine whether they display any DBMS-generated error messages to general users. If they do, this is a finding. ii) Review whether the database is accessible to users who are not authorized system administrators or database administrators, via the following types of software: iia) Oracle SQL*Plus iib) Reporting and analysis tools iic) Database management and/or development tools, such as, but not limited to, Toad. iid) Application development tools, such as, but not limited to, Oracle JDeveloper, Microsoft Visual Studio, PowerBuilder, or Eclipse. If the answer to the preceding question (ii through iid) is Yes, inquire whether, for each role or individual with respect to each tool, this access is required to enable the user(s) to perform authorized job duties. If No, this is a finding. If Yes, continue: For each tool in use, determine whether it is capable of suppressing DBMS-generated error messages, and if it is, whether it is configured to do so. Determine whether the role or individual, with respect to each tool, needs to see detailed DBMS-generated error messages. If No, and if the tool is not configured to suppress such messages, this is a finding. If Yes, determine whether the role/user's need to see such messages is documented in the System Security Plan. If so, this is not a finding. If not, this is a finding.
Fix: F-21510r307208_fix
i) For each end-user-facing application that displays DBMS-generated error messages, configure or recode it to suppress these messages. (If the application is coded in Oracle PL/SQL, the EXCEPTION block can be used to suppress or divert error messages. Most other programming languages provide comparable facilities, such as TRY ... CATCH.) ii) For each unauthorized user of each tool, remove the ability to access it. For each tool where access to DBMS error messages is not required and can be configured, suppress the messages. For each role/user that needs access to the error messages, or needs a tool where the messages cannot be suppressed, document the need in the system security plan.
- RMF Control
- IA-6
- Severity
- H
- CCI
- CCI-000206
- Version
- O112-N1-015601
- Vuln IDs
-
- V-219787
- V-52395
- Rule IDs
-
- SV-219787r397603_rule
- SV-66611
Checks: C-21512r307210_chk
Interview the DBA to determine if any applications that access the database allow for entry of the account name and password on the command line. If any do, determine whether these applications obfuscate authentication data. If they do not, this is a finding.
Fix: F-21511r307211_fix
Configure or modify applications to prohibit display of passwords in clear text on the command line.
- RMF Control
- IA-6
- Severity
- H
- CCI
- CCI-000206
- Version
- O112-N1-015602
- Vuln IDs
-
- V-219788
- V-52397
- Rule IDs
-
- SV-219788r397603_rule
- SV-66613
Checks: C-21513r307213_chk
For Oracle SQL*Plus, which cannot be configured not to accept a plain-text password, and any other essential tool with the same limitation, verify that the system documentation explains the need for the tool, who uses it, and any relevant mitigations; and that AO approval has been obtained. If not, this is a finding. Request evidence that all users of the tool are trained in the importance of not using the plain-text password option, and in how to keep the password hidden; and that they adhere to this practice. If not, this is a finding.
Fix: F-21512r307214_fix
For Oracle SQL*Plus, which cannot be configured not to accept a plain-text password, and any other essential tool with the same limitation: 1) Document the need for it, who uses it, and any relevant mitigations, and obtain AO approval. 2) Train all users of the tool in the importance of not using the plain-text password option, and in how to keep the password hidden. - - - - - Consider wrapping the startup command with a shell or wrapper and using an Oracle external password store. Oracle provides the capability to provide for a secure external password facility. Use the Oracle mkstore to create a secure storage area for passwords for applications, batch jobs and scripts to use or deploy a site-authorized facility to perform this function. Check to see what has been stored in the Oracle External Password Store. To view all contents of a client wallet external password store, check specific credentials by viewing them. Listing the external password store contents provides information you can use to decide whether to add or delete credentials from the store. To list the contents of the external password store, enter the following command at the command line: $ mkstore -wrl wallet_location -listCredential For example: $ mkstore -wrl c:\oracle\product\11.2.0\db_1\wallets -listCredential The wallet_location specifies the path to the directory where the wallet, whose external password store contents you want to view, is located. This command lists all of the credential database service names (aliases) and the corresponding user name (schema) for that database. Passwords are not listed. Configuring Clients to Use the External Password Store: If your client is already configured to use external authentication, such as Windows native authentication or Transport Layer Security (TLS), then Oracle Database uses that authentication method. The same credentials used for this type of authentication are typically also used to log in to the database. For clients not using such authentication methods or wanting to override them for database authentication, you can set the SQLNET.WALLET_OVERRIDE parameter in sqlnet.ora to TRUE. The default value for SQLNET.WALLET_OVERRIDE is FALSE, allowing standard use of authentication credentials as before. If you want a client to use the secure external password store feature, then perform the following configuration task: 1. Create a wallet on the client by using the following syntax at the command line: mkstore -wrl wallet_location -create For example: mkstore -wrl c:\oracle\product\12.1.0\db_1\wallets -create Enter password: password The wallet_location is the path to the directory where you want to create and store the wallet. This command creates an Oracle wallet with the autologin feature enabled at the location you specify. The autologin feature enables the client to access the wallet contents without supplying a password. The mkstore utility -create option uses password complexity verification. 2. Create database connection credentials in the wallet by using the following syntax at the command line: mkstore -wrl wallet_location -createCredential db_connect_string username Enter password: password For example: mkstore -wrl c:\oracle\product\11.2.0\db_1\wallets -createCredential oracle system Enter password: password In this specification: The wallet_location is the path to the directory where you created the wallet. The db_connect_string used in the CONNECT /@db_connect_string statement must be identical to the db_connect_string specified in the -createCredential command. The db_connect_string is the TNS alias you use to specify the database in the tnsnames.ora file or any service name you use to identify the database on an Oracle network. By default, tnsnames.ora is located in the $ORACLE_HOME/network/admin directory on UNIX systems and in ORACLE_HOME\network\admin on Windows. The username is the database logon credential. When prompted, enter the password for this user. 3. In the client sqlnet.ora file, enter the WALLET_LOCATION parameter and set it to the directory location of the wallet you created in Step 1. For example, if you created the wallet in $ORACLE_HOME/network/admin and your Oracle home is set to /private/ora11, then you need to enter the following into your client sqlnet.ora file: WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /private/ora11/network/admin) ) ) 4. In the client sqlnet.ora file, enter the SQLNET.WALLET_OVERRIDE parameter and set it to TRUE as follows: SQLNET.WALLET_OVERRIDE = TRUE This setting causes all CONNECT /@db_connect_string statements to use the information in the wallet at the specified location to authenticate to databases. When external authentication is in use, an authenticated user with such a wallet can use the CONNECT /@db_connect_string syntax to access the previously specified databases without providing a user name and password. However, if a user fails that external authentication, then these connect statements also fail. Below is a sample sqlnet.ora file with the WALLET_LOCATION and the SQLNET.WALLET_OVERRIDE parameters set as described in Steps 3 and 4. Below is a sample SQLNET.ORA File with Wallet Parameters set: WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /private/ora12/network/admin) ) ) SQLNET.WALLET_OVERRIDE = TRUE SSL_CLIENT_AUTHENTICATION = FALSE SSL_VERSION =1.2 (Note: This assumes that a single sqlnet.ora file, in the default location, is in use. Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.)
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-000140
- Version
- O112-N2-008601
- Vuln IDs
-
- V-219789
- V-52409
- Rule IDs
-
- SV-219789r395805_rule
- SV-66625
Checks: C-21514r307216_chk
Interview the database administrator: review the procedures, manual and/or automated, for monitoring the space used by audit trail(s), and for offloading audit records to a centralized log management system. If the procedures do not exist, this is a finding. If the procedures exist, request evidence that they are followed. If the evidence indicates that the procedures are not followed, this is a finding. If the procedures exist, inquire if the system has ever run out of audit trail space in the last two years or since the last system upgrade, whichever is more recent. If it has run out of space in this period, and the procedures have not been updated to compensate, this is a finding.
Fix: F-21513r307217_fix
Institute procedures, manual and/or automated, for monitoring the space used by audit trail(s), and for offloading audit records to a centralized log management system.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-OS-010700
- Vuln IDs
-
- V-219790
- V-52427
- Rule IDs
-
- SV-219790r395850_rule
- SV-66643
Checks: C-21515r307219_chk
Review monitoring procedures and implementation evidence to verify that monitoring of changes to database software libraries, related applications, and configuration files is done. Verify that the list of files and directories being monitored is complete. If monitoring does not occur or is not complete, this is a finding.
Fix: F-21514r307220_fix
Implement procedures to monitor for unauthorized changes to DBMS software libraries, related software application libraries, and configuration files. If a third-party automated tool is not employed, an automated job that reports file information on the directories and files of interest and compares them to the baseline report for the same will meet the requirement. File hashes or checksums should be used for comparisons since file dates may be manipulated by malicious users.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-OS-010710
- Vuln IDs
-
- V-219791
- V-68861
- Rule IDs
-
- SV-219791r395850_rule
- SV-83465
Checks: C-21516r307222_chk
Review monitoring procedures and implementation evidence to verify that monitoring of changes to database logic modules is done. Verify the list of objects (packages, procedures, functions, and triggers) being monitored is complete. If monitoring does not occur or is not complete, this is a finding.
Fix: F-21515r307223_fix
Implement procedures to monitor for unauthorized changes to database logic modules. If a third-party automated tool is not employed, an automated job that reports on the objects of interest and compares them to the baseline report for the same will meet the requirement.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-P2-010800
- Vuln IDs
-
- V-219792
- V-52437
- Rule IDs
-
- SV-219792r395850_rule
- SV-66653
Checks: C-21517r307225_chk
Review procedures for controlling and granting access to use of the DBMS software installation account. If access or use of this account is not restricted to the minimum number of personnel required, or if unauthorized access to the account has been granted, this is a finding.
Fix: F-21516r307226_fix
Develop, document, and implement procedures to restrict use of the DBMS software installation account.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-P2-010900
- Vuln IDs
-
- V-219793
- V-52441
- Rule IDs
-
- SV-219793r395850_rule
- SV-66657
Checks: C-21518r307228_chk
Review the DBMS software library directory and note other root directories located on the same disk directory or any subdirectories. If any non-DBMS software directories exist on the disk directory, examine or investigate their use. If any of the directories are used by other applications, including third-party applications that use the DBMS, this is a finding. Only applications that are required for the functioning and administration, not use, of the DBMS should be located on the same disk directory as the DBMS software libraries. For databases located on mainframes, confirm that the database and its configuration files are isolated in their own DASD pools. If database software and database configuration files share DASD with other applications, this is a finding.
Fix: F-21517r307229_fix
Install all applications on directories, or pools, separate from the DBMS software library directory. Re-locate any directories or re-install other application software that currently shares the DBMS software library directory to separate directories. For mainframe-based databases, locate database software and configuration files in separate DASD pools from other mainframe applications.
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000764
- Version
- O112-P2-012800
- Vuln IDs
-
- V-219794
- V-52451
- Rule IDs
-
- SV-219794r395859_rule
- SV-66667
Checks: C-21519r307231_chk
Review DBMS settings, OS settings, and/or enterprise-level authentication/access mechanism settings, and site practices, to determine whether organizational users are uniquely identified and authenticated when logging onto the system. If organizational users are not uniquely identified and authenticated, this is a finding.
Fix: F-21518r307232_fix
Configure DBMS, OS and/or enterprise-level authentication/access mechanism to uniquely identify and authenticate all organizational users who log onto the system. Ensure that each user has a separate account from all other users. (This is the default behavior of Oracle.)
- RMF Control
- IA-8
- Severity
- M
- CCI
- CCI-000804
- Version
- O112-P2-015800
- Vuln IDs
-
- V-219795
- V-52455
- Rule IDs
-
- SV-219795r397609_rule
- SV-66671
Checks: C-21520r307234_chk
Review DBMS settings to determine whether non-organizational users are uniquely identified and authenticated when logging onto the system. If non-organizational users are not uniquely identified and authenticated, this is a finding.
Fix: F-21519r307235_fix
Configure DBMS settings to uniquely identify and authenticate all non-organizational users who log onto the system.
- RMF Control
- SC-2
- Severity
- M
- CCI
- CCI-001082
- Version
- O112-P2-017300
- Vuln IDs
-
- V-219796
- V-52459
- Rule IDs
-
- SV-219796r397711_rule
- SV-66675
Checks: C-21521r307237_chk
Check DBMS settings and vendor documentation to verify administrative functionality is separate from user functionality. If administrator and general user functionality is not separated either physically or logically, this is a finding.
Fix: F-21520r307238_fix
Configure DBMS settings to separate database administration and general user functionality. Provide those who have both administrative and general-user responsibilities with separate accounts for these separate functions.
- RMF Control
- AU-10
- Severity
- L
- CCI
- CCI-000166
- Version
- O112-P3-006200
- Vuln IDs
-
- V-219797
- V-52465
- Rule IDs
-
- SV-219797r395691_rule
- SV-66681
Checks: C-21522r307240_chk
If there are no group accounts available to more than one user, this is not a finding. If a group account is used by an application to interact with the database, review the System Security Plan, the tables in the database, and the application source code/documentation to determine whether the application captures the individual user's identity and stores that identity along with all data inserted and updated (also with all records of reads and/or deletions, if these are required to be logged). If there are gaps in the application's ability to do this, and the gaps and the risk are not defined in the system documentation and accepted by the AO, this is a finding. If users are sharing a group account to log on to Oracle tools or third-party products that access the database, this is a finding. To ensure that user activities other than SELECT, INSERT, UPDATE and DELETE are also monitored and attributed to individuals, verify that Oracle auditing is enabled. To see if Oracle is configured to capture audit data, enter the following SQLPlus command: SHOW PARAMETER AUDIT_TRAIL or the following SQL query: SELECT * FROM SYS.V$PARAMETER WHERE NAME = 'audit_trail'; If Oracle returns the value 'NONE', this is a finding.
Fix: F-21521r307241_fix
Use accounts assigned to individual users where feasible. Configure DBMS to provide individual accountability at the DBMS level, and in audit logs, for actions performed under a shared database account. Modify applications and data tables that are not capturing individual user identity to do so. Create and enforce the use of individual user IDs for logging on to Oracle tools and third-party products. If Oracle (or third-party) auditing is not already enabled, enable it. For Oracle auditing, use this query: ALTER SYSTEM SET AUDIT_TRAIL=<audit trail type> SCOPE=SPFILE; Audit trail type can be 'OS', 'DB', 'DB,EXTENDED', 'XML' or 'XML,EXTENDED'. After executing this statement, it may be necessary to shut down and restart the Oracle database. For more information on the configuration of auditing, please refer to "Auditing Database Activity" in the Oracle Database 2 Day + Security Guide: http://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_auditing.htm and "Verifying Security Access with Auditing" in the Oracle Database Security Guide: http://docs.oracle.com/cd/E11882_01/network.112/e36292/auditing.htm#DBSEG006 and "27 DBMS_AUDIT_MGMT" in the Oracle Database PL/SQL Packages and Types Reference: http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_audit_mgmt.htm If the site-specific audit requirements are not covered by the default audit options, deploy and configure Fine-Grained Auditing. For details, refer to Oracle documentation, at the locations above. If this level of auditing does not meet site-specific requirements, consider deploying the Oracle Audit Vault. The Audit Vault is a highly configurable option from Oracle made specifically for performing the audit functions. It has reporting capabilities as well as user-defined rules that provide additional flexibility for complex auditing requirements.
- RMF Control
- SI-2
- Severity
- M
- CCI
- CCI-002605
- Version
- O112-BP-024750
- Vuln IDs
-
- V-237753
- Rule IDs
-
- SV-237753r667296_rule
Checks: C-40971r667294_chk
Review the system documentation and interview the database administrator. Identify all database software components. Review the version and release information. From SQL*Plus: Select version from v$instance; Access the vendor website or use other means to verify the version is still supported. Oracle Release schedule: https://support.oracle.com/knowledge/Oracle%20Database%20Products/742060_1.html If the Oracle version or any of the software components are not supported by the vendor, this is a finding.
Fix: F-40933r667295_fix
Remove or decommission or all unsupported software products. Upgrade unsupported DBMS or unsupported components to a supported version of the product. Oracle recommends the following upgrade options: For product longevity and patching, Oracle strongly recommends upgrading to19c which is the Long Term Release with a support end date of April 30, 2027 (or April 30, 2024 if you choose not to pay Extended Support fees or purchase a ULA). If you are currently running 11.2.x you will need to upgrade to the terminal release (11.2.0.4) for the DB Release you are running and then continue the upgrade process by upgrading to the 19c.
- RMF Control
- CM-6
- Severity
- H
- CCI
- CCI-000366
- Version
- O112-C1-004500
- Vuln IDs
-
- V-238431
- V-52125
- Rule IDs
-
- SV-238431r667467_rule
- SV-66341
Checks: C-41642r667465_chk
Review host system privileges assigned to the Oracle DBA group and all individual Oracle DBA accounts. Note: Do not include the Oracle software installation account in any results for this check. For UNIX systems (as root): cat /etc/group | grep -i dba groups root If "root" is returned in the first list, this is a finding. If any accounts listed in the first list are also listed in the second list, this is a finding. Investigate any user account group memberships other than DBA or root groups that are returned by the following command (also as root): groups [dba user account] Replace [dba user account] with the user account name of each DBA account. If individual DBA accounts are assigned to groups that grant access or privileges for purposes other than DBA responsibilities, this is a finding. For Windows Systems (click or select): Start >> Settings >> Control Panel >> Administrative Tools >> Computer Management >> Local Users and Groups >> Groups >> ORA_DBA Start >> Settings >> Control Panel >> Administrative Tools >> Computer Management >> Local Users and Groups >> Groups >> ORA_[SID]_DBA (if present) Note: Users assigned DBA privileges on a Windows host are granted membership in the ORA_DBA and/or ORA_[SID]_DBA groups. The ORA_DBA group grants DBA privileges to any database on the system. The ORA_[SID]_DBA groups grant DBA privileges to specific Oracle instances only. Make a note of each user listed. For each user (click or select): Start >> Settings >> Control Panel >> Administrative Tools >> Computer Management >> Local Users and Groups >> Users >> [DBA user name] >> Member of If DBA users belong to any groups other than DBA groups and the Windows Users group, this is a finding. Examine User Rights assigned to DBA groups or group members: Start >> Settings >> Control Panel >> Administrative Tools >> Local Security Policy >> Security Settings >> Local Policies >> User Rights Assignments If any User Rights are assigned directly to the DBA group(s) or DBA user accounts, this is a finding.
Fix: F-41601r667466_fix
Revoke all host system privileges from the DBA group accounts and DBA user accounts not required for DBMS administration. Revoke all OS group memberships that assign excessive privileges to the DBA group accounts and DBA user accounts. Remove any directly applied permissions or user rights from the DBA group accounts and DBA user accounts. Document all DBA group accounts and individual DBA account assigned privileges in the System Security Plan.
- RMF Control
- SI-2
- Severity
- H
- CCI
- CCI-002605
- Version
- O112-C1-011100
- Vuln IDs
-
- V-238432
- V-52327
- Rule IDs
-
- SV-238432r667470_rule
- SV-66543
Checks: C-41643r667468_chk
Follow the vendor instruction for determining the product version number. View the vendor-provided list of supported versions. To be considered supported, the vendor must report that the version is supported by security patches to reported vulnerabilities. If the security patch support for the installed version cannot be determined or the version is not shown as supported, this is a finding. If the software does not contain the latest security patches, this is a finding. Oracle produces security patches on a quarterly basis on or about the fifteenth of the month. The first patch of a calendar year is delivered in January and then April, July and October respectively. There is an automated notice that is available to anyone with access to My Oracle Support. Check to see if the DBA or Administrator of the Oracle account at My Oracle Support is registered to receive the Oracle Security Patch notice. This notice is available to anyone with a valid My Oracle Support. The security notification contains information on the current security update and also the platforms and versions that will be supported by the next patch. For complete information on the availability of the security patch for your specific system, please refer to the Oracle Lifetime Support Policy. Check My Oracle Support for the latest Oracle Quarterly Patch Update patch number, and then check the inventory of the instance you are reviewing and see if the latest security patch is installed using the following command. Issue the following command: $ <ORACLE_HOME>/OPatch/opatch lsinventory -detail -oh <ORACLE_HOME> Check to see if the latest available patch is installed. If the latest available patch is not installed, this is a finding.
Fix: F-41602r667469_fix
Upgrade the DBMS to a vendor-supported version. Apply the latest DBMS patches.
- RMF Control
- CM-6
- Severity
- H
- CCI
- CCI-000366
- Version
- O112-C1-015000
- Vuln IDs
-
- V-238433
- V-52329
- Rule IDs
-
- SV-238433r667473_rule
- SV-66545
Checks: C-41644r667471_chk
Use this query to identify the Oracle-supplied accounts that still have their default passwords: SELECT * FROM SYS.DBA_USERS_WITH_DEFPWD; If any accounts other than XS$NULL are listed, this is a finding. (XS$NULL is an internal account that represents the absence of a user in a session. Because XS$NULL is not a user, this account can only be accessed by the Oracle Database instance. XS$NULL has no privileges and no one can authenticate as XS$NULL, nor can authentication credentials ever be assigned to XS$NULL.)
Fix: F-41603r667472_fix
Change passwords for DBMS accounts to non-default values. Where necessary, unlock or enable accounts to change the password, and then return the account to disabled or locked status.
- RMF Control
- SC-8
- Severity
- H
- CCI
- CCI-002420
- Version
- O112-C1-019700
- Vuln IDs
-
- V-238434
- V-52333
- Rule IDs
-
- SV-238434r667476_rule
- SV-66549
Checks: C-41645r667474_chk
Check DBMS settings to determine whether cryptographic mechanisms are used to prevent the unauthorized disclosure of information during transmission. Determine whether physical measures are being used instead of cryptographic mechanisms. If neither cryptographic nor physical measures are being utilized, this is a finding. To check that network encryption is enabled and using site-specified encryption procedures, look in SQLNET.ORA located at: $ORACLE_HOME/network/admin/sqlnet.ora. (Note: This assumes that a single sqlnet.ora file, in the default location, is in use. Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.) If encryption is set, entries like the following will be present: SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER= (SHA-1) SQLNET.ENCRYPTION_TYPES_SERVER= (AES256) SQLNET.CRYPTO_CHECKSUM_SERVER = required SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT= (SHA-1) SQLNET.ENCRYPTION_TYPES_CLIENT= (AES256) SQLNET.CRYPTO_CHECKSUM_CLIENT = requested (The values assigned to the parameters may be different, the combination of parameters may be different, and not all of the example parameters will necessarily exist in the file.)
Fix: F-41604r667475_fix
Configure DBMS and/or operating system to use cryptographic mechanisms to prevent unauthorized disclosure of information during transmission where physical measures are not being utilized.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000382
- Version
- O112-C2-001700
- Vuln IDs
-
- V-238435
- V-52347
- Rule IDs
-
- SV-238435r667479_rule
- SV-66563
Checks: C-41646r667477_chk
Review the PPSM Technical Assurance List to acquire an up-to-date list of network protocols deemed non-secure. (For definitive information on Ports, Protocols and Services Management (PPSM), refer to http://iase.disa.mil/ppsm/index.html.) Review DBMS settings to determine if the database is utilizing any network protocols deemed non-secure. If the DBMS is not using any network protocols deemed non-secure, this is not a finding.. If the database is utilizing protocols specified as non-secure in the PPSM, verify the protocols are explicitly identified in the System Security Plan and that they are in support of specific operational requirements. If they are not identified in the SSP or are not supporting specific operational requirements, this is a finding. If non-secure network protocols are not being used but are not disabled in the DBMS's configuration, this is a finding. After determining the site-specific operational requirements and which protocols are explicitly defined in the System Security Plan, check the $TNS_ADMIN setting for the location of the Oracle listener.ora file. The listener.ora file is a configuration file for Oracle Net Listener that identifies the following: A unique name for the listener, typically LISTENER A protocol address that it is accepting connection requests on, and A service it is listening for. If the listener.ora file shows a PROTOCOL= statement and the PROTOCOL is deemed non-secure, that is a finding. LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=sale-server)(PORT=1521)) (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))) SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBNAME=sales.us.example.com) (ORACLE_HOME=/oracle11g) (SID_NAME=sales)) (SID_DESC= (SID_NAME=plsextproc) (ORACLE_HOME=/oracle11g) (PROGRAM=extproc))) Protocol Parameters The Oracle Listener and the Oracle Connection Manager are identified by protocol addresses. The information below contains the "Protocol-Specific Parameters" used by the Oracle protocol support. Protocol-Specific Parameters Protocol: IPC Parameter: PROTOCOL Notes: Specify ipc as the value. Protocol: IPC Parameter: KEY Notes: Specify a unique name for the service. Oracle recommends using the service name or SID of the service. Example: (PROTOCOL=ipc)(KEY=sales) Protocol: Named Pipes Parameter: PROTOCOL Notes: Specify nmp as the value. Protocol: Named Pipes Parameter: SERVER Notes: Specify the name of the Oracle server. Protocol: Named Pipes Parameter: PIPE Notes: Specify the pipe name used to connect to the database server. This is the same PIPE keyword specified on the server with Named Pipes. This name can be any name. Example: (Protocol=nmp) (SERVER=USDOD) (PIPE=dbpipe01) Protocol: SDP Parameter: PROTOCOL Notes: Specify sdp as the value. Protocol: SDP Parameter: HOST Notes: Specify the host name or IP address of the computer. Protocol: SDP Parameter: PORT Notes: Specify the listening port number. Example: (PROTOCOL=sdp)(HOST=sales-server)(PORT=1521) (PROTOCOL=sdp)(HOST=192.168.2.204)(PORT=1521) Protocol: TCP/IP Parameter: PROTOCOL Notes: Specify TCP as the value. Protocol: TCP/IP Parameter: HOST Notes: Specify the host name or IP address of the computer. Protocol: TCP/IP Parameter: PORT Notes: Specify the listening port number. Example: (PROTOCOL=tcp)(HOST=sales-server)(PORT=1521) (PROTOCOL=tcp)(HOST=192.168.2.204)(PORT=1521) Protocol: TCP/IP with SSL Parameter: PROTOCOL Notes: Specify tcps as the value. Protocol: TCP/IP with SSL Parameter: HOST Notes: Specify the host name or IP address of the computer. Protocol: TCP/IP with SSL Parameter: PORT Notes: Specify the listening port number. Example: (PROTOCOL=tcps)(HOST=sales-server) (PORT=2484) (PROTOCOL=tcps)(HOST=192.168.2.204)(PORT=2484)
Fix: F-41605r667478_fix
Disable any network protocol listed as non-secure in the PPSM documentation. To disable the protocol deemed not secure, stop the listener by issuing the following command as the Oracle Software owner, typically Oracle. $ lsnrctl stop This will stop the listener. Edit the LISTENER.ORA file and remove the protocols deemed not secure and restart the listener. For example, if TCP was deemed as not secure and the listener.ora would need to be changed and the tcp entry would need to be removed. That would only allow the listener to listen for an IPC connection. LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=sale-server)(PORT=1521)) - remove this line and properly balance the parentheses - (ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))) SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (GLOBAL_DBNAME=sales.us.example.com) (ORACLE_HOME=/oracle11g) (SID_NAME=sales)) (SID_DESC= (SID_NAME=plsextproc) (ORACLE_HOME=/oracle11g) (PROGRAM=extproc))) Revise the client side TNSNAMES.ORA to align the PROTOCOL value in the PROTOCOL portion of the connect string. For example, if TCP was deemed as not secure and the listener.ora was changed to listen for an IPC connection the code below would be required: net_service_name= (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=sales1-svr)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=sales2-svr)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=sales.us.example.com)))
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-001900
- Vuln IDs
-
- V-238436
- V-52351
- Rule IDs
-
- SV-238436r667482_rule
- SV-66567
Checks: C-41647r667480_chk
If the organization has a policy, consistently enforced, forbidding the creation of emergency or temporary accounts, this is not a finding. If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, this is not a finding. If using database mechanisms to satisfy this requirement, look for a profile for use with temporary accounts. To obtain a list of profiles: SELECT PROFILE#, NAME FROM SYS.PROFNAME$; To obtain a list of users assigned a given profile (TEMPORARY_USERS, in this example): SELECT USERNAME, PROFILE FROM SYS.DBA_USERS WHERE PROFILE = 'TEMPORARY_USERS' ORDER BY USERNAME; To obtain a list of users that have NOT been assigned the DEFAULT (the resulting list of profiles can be quickly scanned for any profile like TEMPORARY, in this example): SELECT USERNAME, PROFILE FROM SYS.DBA_USERS WHERE PROFILE <> 'DEFAULT' ORDER BY PROFILE; If no profile for temporary accounts can be identified, this is not a finding.
Fix: F-41606r667481_fix
Use a profile with a distinctive name (for example, TEMPORARY_USERS), so that temporary users can be easily identified. Whenever a temporary user account is created, assign it to this profile. Set values in the profile as needed for temporary users - see below for further information. The values here are examples; set them to values appropriate to the situation: CREATE PROFILE TEMPORARY_USERS LIMIT SESSIONS_PER_USER <limit> CPU_PER_SESSION <limit> CPU_PER_CALL <limit> CONNECT_TIME <limit> LOGICAL_READS_PER_SESSION <limit> LOGICAL_READS_PER_CALL <limit> PRIVATE_SGA <limit> COMPOSITE_LIMIT <limit> FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 7 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX 5 PASSWORD_VERIFY_FUNCTION <verify_function> PASSWORD_LOCK_TIME UNLIMITED PASSWORD_GRACE_TIME 3; CREATE USER TEMP001 IDENTIFIED BY PassWord#TEMP01 PROFILE TEMPORARY_USERS; Resource Parameters: SESSIONS_PER_USER - Specify the number of concurrent sessions to which you want to limit the user. CPU_PER_SESSION - Specify the CPU time limit for a session, expressed in hundredths of seconds. CPU_PER_CALL - Specify the CPU time limit for a call (a parse, execute, or fetch), expressed in hundredths of seconds. CONNECT_TIME - Specify the total elapsed time limit for a session, expressed in minutes. IDLE_TIME - Specify the permitted periods of continuous inactive time during a session, expressed in minutes. Long-running queries and other operations are not subject to this limit. LOGICAL_READS_PER_SESSION - Specify the permitted number of data blocks read in a session, including blocks read from memory and disk. LOGICAL_READS_PER_CALL - Specify the permitted number of data blocks read for a call to process a SQL statement (a parse, execute, or fetch). PRIVATE_SGA - Specify the amount of private space a session can allocate in the shared pool of the system global area (SGA). Refer to size_clause for information on that clause. COMPOSITE_LIMIT - See Oracle documentation for more details. Password Parameters: Use the following clauses to set password parameters. Parameters that set lengths of time are interpreted in number of days. For testing purposes you can specify minutes (n/1440) or even seconds (n/86400). FAILED_LOGIN_ATTEMPTS - Specify the number of failed attempts to log in to the user account before the account is locked. PASSWORD_LIFE_TIME - Specify the number of days the same password can be used for authentication. If you also set a value for PASSWORD_GRACE_TIME, then the password expires if it is not changed within the grace period, and further connections are rejected. If you omit this clause, then the default is 180 days. PASSWORD_REUSE_TIME and PASSWORD_REUSE_MAX - These two parameters must be set in conjunction with each other. PASSWORD_REUSE_TIME specifies the number of days before which a password cannot be reused. PASSWORD_REUSE_MAX specifies the number of password changes required before the current password can be reused. For these parameters to have any effect, you must specify an integer for both of them. If you specify an integer for both of these parameters, then the user cannot reuse a password until the password has been changed the number of times specified for PASSWORD_REUSE_MAX during the number of days specified for PASSWORD_REUSE_TIME. For example, if you specify PASSWORD_REUSE_TIME to 30 and PASSWORD_REUSE_MAX to 10, then the user can reuse the password after 30 days if the password has already been changed 10 times. If you specify an integer for either of these parameters and specify UNLIMITED for the other, then the user can never reuse a password. If you specify DEFAULT for either parameter, then Oracle Database uses the value defined in the DEFAULT profile. By default, all parameters are set to UNLIMITED in the DEFAULT profile. If you have not changed the default setting of UNLIMITED in the DEFAULT profile, then the database treats the value for that parameter as UNLIMITED. If you set both of these parameters to UNLIMITED, then the database ignores both of them. This is the default if you omit both parameters. PASSWORD_LOCK_TIME - Specify the number of days an account will be locked after the specified number of consecutive failed logon attempts. If you omit this clause, then the default is 1 day. PASSWORD_GRACE_TIME - Specify the number of days after the grace period begins during which a warning is issued and logon is allowed. If you omit this clause, then the default is 7 days. PASSWORD_VERIFY_FUNCTION - lets a PL/SQL password complexity verification script be passed as an argument to the CREATE PROFILE statement. Oracle Database provides a default script, but you can create your own routine or use third-party software instead.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-002000
- Vuln IDs
-
- V-238437
- V-52353
- Rule IDs
-
- SV-238437r667485_rule
- SV-66569
Checks: C-41648r667483_chk
If the organization has a policy, consistently enforced, forbidding the creation of emergency or temporary accounts, this is not a finding. If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, this is not a finding. Check DBMS settings, OS settings, and/or enterprise-level authentication/access mechanisms settings to determine if the site utilizes a mechanism whereby temporary or emergency accounts can be terminated after an organization-defined time period. If not, this is a finding. Check the profiles to see what the password_life_time is set to in the table dba_profiles. The password_life_time is a value stored in the LIMIT column, and identified by the value PASSWORD_LIFE_TIME in the RESOURCE_NAME column. SQL>select profile, resource_name, resource_type, limit from dba_profiles where upper(resource_name) like 'PASSWORD_LIFE_TIME'; Verify that the user in question is assigned to a profile with the PASSWORD_LIFE_TIME set to the amount of time the user is expected to be using the password. If not, this is a finding.
Fix: F-41607r667484_fix
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, no fix to the DBMS is required. If using database mechanisms to satisfy this requirement, use a profile with a distinctive name (for example, TEMPORARY_USERS), so that temporary users can be easily identified. Whenever a temporary user account is created, assign it to this profile. Create a job to lock accounts under this profile that are more than n days old, where n is the organization-defined time period.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-002165
- Version
- O112-C2-003000
- Vuln IDs
-
- V-238438
- V-52367
- Rule IDs
-
- SV-238438r667488_rule
- SV-66583
Checks: C-41649r667486_chk
Check DBMS settings to determine if users are able to assign and revoke rights to the objects and information that they own. If users cannot assign or revoke rights to the objects and information that they own to groups, roles, or individual users, this is a finding.
Fix: F-41608r667487_fix
Modify DBMS settings to allow users to assign or revoke access rights to objects and information owned by the user. The ability to grant or revoke rights must include the ability to grant or revoke those rights down to the granularity of a single user. (Note: in most cases no fix will be necessary. This is default functionality for Oracle.)
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-000213
- Version
- O112-C2-003500
- Vuln IDs
-
- V-238439
- V-52371
- Rule IDs
-
- SV-238439r667491_rule
- SV-66587
Checks: C-41650r667489_chk
Obtain a list of privileges assigned to user accounts. If access to sensitive information is granted to roles not authorized to access sensitive information, this is a finding. If access to sensitive information is granted to individual accounts rather than to a role, this is a finding.
Fix: F-41609r667490_fix
Define application user roles based on privilege and job function requirements. Assign the required privileges to the role and assign the role to authorized application user accounts. Revoke any privileges to sensitive information directly assigned to application user accounts.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-003600
- Vuln IDs
-
- V-238440
- V-52373
- Rule IDs
-
- SV-238440r667494_rule
- SV-66589
Checks: C-41651r667492_chk
Review procedures for providing database connection information to users/user workstations. If procedures do not indicate or implement restrictions to connections required by the particular user, this is a finding. Note: This check is specific for the DBMS host system and not directed at client systems (client systems are included in the Application STIG/Checklist); however, detection of unauthorized client connections to the DBMS host system obtained through log files should be performed regularly and documented where authorized.
Fix: F-41610r667493_fix
Implement procedures to supply database connection information to only those databases authorized for the user.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-C2-003700
- Vuln IDs
-
- V-238441
- V-52375
- Rule IDs
-
- SV-238441r667497_rule
- SV-66591
Checks: C-41652r667495_chk
Check the production system to ensure no developer accounts have rights to modify the production database structure or alter production data. If developer accounts with these rights exist, ask for documentation that shows these accounts have formal approval and risk acceptance. If this documentation does not exist, this is a finding. If developer accounts exist with the right to create and maintain tables (or other database objects) in production tablespaces, this is a finding.
Fix: F-41611r667496_fix
Restrict developer privileges to production objects to only objects and data where those privileges are required and authorized. Document the approval and risk acceptance. Consider using separate accounts for a person's developer duties and production duties. At a minimum, use separate roles for developer privileges and production privileges. If developers need the ability to create and maintain tables (or other database objects) as part of their development activities, provide dedicated tablespaces, and revoke any rights that allowed them to use production tablespaces for this purpose.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-003800
- Vuln IDs
-
- V-238442
- V-52377
- Rule IDs
-
- SV-238442r667500_rule
- SV-66593
Checks: C-41653r667498_chk
Identify whether any hosts contain both development and production databases. If no hosts contain both production and development databases, this is NA. For any host containing both a development and a production database, determine if developers have been granted elevated privileges on the production database or on the OS. If they have, ask for documentation that shows these accounts have formal approval and risk acceptance. If this documentation does not exist, this is a finding. If developer accounts exist with the right to create and maintain tables (or other database objects) in production tablespaces, this is a finding. (Where applicable, to check the number of instances on the host machine, check the /etc/oratab. The /etc/oratab file is updated by the Oracle Installer when the database is installed when the root.sh file is executed. Each line in the represents an ORACLE_SID:ORACLE_HOME:Y or N. The ORACLE_SID and ORACLE_HOME are self-explanatory. The Y or N signals the DBSTART program to automatically start or not start that specific instance when the machine is restarted. Check with the system owner and application development team to see what each entry represents. If a system is deemed to be a production system review the system for development users.)
Fix: F-41612r667499_fix
Restrict developer privileges to production objects to only objects and data where those privileges are required and authorized. Document the approval and risk acceptance. Consider using separate accounts for a person's developer duties and production duties. At a minimum, use separate roles for developer privileges and production privileges. If developers need the ability to create and maintain tables (or other database objects) as part of their development activities, provide dedicated tablespaces, and revoke any rights that allowed them to use production tablespaces for this purpose.
- RMF Control
- SC-4
- Severity
- M
- CCI
- CCI-001090
- Version
- O112-C2-003900
- Vuln IDs
-
- V-238443
- V-52379
- Rule IDs
-
- SV-238443r667503_rule
- SV-66595
Checks: C-41654r667501_chk
Review user privileges to system tables and configuration data stored in the Oracle database. If non-DBA users are assigned privileges to access system tables and tables containing configuration data, this is a finding. To obtain a list of users and roles that have been granted access to any dictionary table, run the query: SELECT unique grantee from dba_tab_privs where table_name in (select table_name from dictionary) order by grantee; To obtain a list of dictionary tables and assigned privileges granted to a specific user or role, run the query: SELECT grantee, table_name, privilege from dba_tab_privs where table_name in (select table_name from dictionary) and grantee = '<applicable account>';
Fix: F-41613r667502_fix
Restrict accessibility of Oracle system tables and other configuration information or metadata to DBAs or other authorized users.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-C2-004000
- Vuln IDs
-
- V-238444
- V-52383
- Rule IDs
-
- SV-238444r667506_rule
- SV-66599
Checks: C-41655r667504_chk
Review accounts for direct assignment of administrative privilege. Connected as SYSDBA, run the query: SELECT grantee, privilege FROM dba_sys_privs WHERE grantee IN ( SELECT username FROM dba_users WHERE username NOT IN ( 'XDB', 'SYSTEM', 'SYS', 'LBACSYS', 'DVSYS', 'DVF', 'SYSMAN_RO', 'SYSMAN_BIPLATFORM', 'SYSMAN_MDS', 'SYSMAN_OPSS', 'SYSMAN_STB', 'DBSNMP', 'SYSMAN', 'APEX_040200', 'WMSYS', 'SYSDG', 'SYSBACKUP', 'SPATIAL_WFS_ADMIN_USR', 'SPATIAL_CSW_ADMIN_US', 'GSMCATUSER', 'OLAPSYS', 'SI_INFORMTN_SCHEMA', 'OUTLN', 'ORDSYS', 'ORDDATA', 'OJVMSYS', 'ORACLE_OCM', 'MDSYS', 'ORDPLUGINS', 'GSMADMIN_INTERNAL', 'MDDATA', 'FLOWS_FILES', 'DIP', 'CTXSYS', 'AUDSYS', 'APPQOSSYS', 'APEX_PUBLIC_USER', 'ANONYMOUS', 'SPATIAL_CSW_ADMIN_USR', 'SYSKM', 'SYSMAN_TYPES', 'MGMT_VIEW', 'EUS_ENGINE_USER', 'EXFSYS', 'SYSMAN_APM' ) ) AND privilege NOT IN ('UNLIMITED TABLESPACE') ORDER BY 1, 2; If any administrative privileges have been assigned directly to a database account, this is a finding. (The list of special accounts that are excluded from this requirement may not be complete. It is expected that the DBA will edit the list to suit local circumstances, adding other special accounts as necessary, and removing any that are not supposed to be in use in the Oracle deployment that is under review.)
Fix: F-41614r667505_fix
Create roles for administrative function assignments. Assign the necessary privileges for the administrative functions to a role.
- RMF Control
- SC-3
- Severity
- M
- CCI
- CCI-001084
- Version
- O112-C2-004100
- Vuln IDs
-
- V-238445
- V-52387
- Rule IDs
-
- SV-238445r667509_rule
- SV-66603
Checks: C-41656r667507_chk
Review permissions for objects owned by DBA or other administrative accounts. If any objects owned by administrative accounts can be accessed by non-DBA/non-administrative users, either directly or indirectly, this is a finding. Verify DBAs have separate administrative accounts. If DBAs do not have a separate account for database administration purposes, this is a finding. To list all objects owned by an administrative account that have had access granted to another account, run the query: SELECT grantee, table_name, grantor, privilege from dba_tab_privs where owner= '<applicable account>';
Fix: F-41615r667508_fix
Revoke DBA privileges, and privileges to administer DBA-owned objects, from non-DBA accounts. Provide separate accounts to DBA for database administration.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-004300
- Vuln IDs
-
- V-238446
- V-52393
- Rule IDs
-
- SV-238446r667512_rule
- SV-66609
Checks: C-41657r667510_chk
Review access permissions for objects owned by application owners or other non-administrative users. If DBA or administrative accounts have unauthorized application roles or permissions beyond those needed for administration, this is a finding. To obtain a list of privileges assigned to the DBMS user accounts, run the query: SELECT * from dba_sys_privs where grantee='DBA' order by privilege; To check to see what roles are assigned to a user, run the query: SELECT * from dba_role_privs where grantee = '<applicable account>'; To check to see what privileges are assigned to a role, run the query: SELECT * from role_sys_privs; To show privileges by object, run the query: SELECT table_name, grantee, MAX(DECODE(privilege, 'SELECT', 'SELECT')) AS select_priv, MAX(DECODE(privilege, 'DELETE', 'DELETE')) AS delete_priv, MAX(DECODE(privilege, 'UPDATE', 'UPDATE')) AS update_priv, MAX(DECODE(privilege, 'INSERT', 'INSERT')) AS insert_priv FROM dba_tab_privs WHERE grantee IN (SELECT role FROM dba_roles) GROUP BY table_name, grantee ORDER BY table_name, grantee; This query will list the system privileges assigned to a specific user: SELECT LPAD(' ', 2*level) || granted_role "USER PRIVS" FROM ( SELECT NULL grantee, username granted_role FROM dba_users WHERE username LIKE UPPER('%&uname%') UNION SELECT grantee, granted_role FROM dba_role_privs UNION SELECT grantee, privilege FROM dba_sys_privs ) START WITH grantee IS NULL CONNECT BY grantee = prior granted_role; To list all administrative privileges granted to users via roles, run the query: SELECT username, rp.granted_role, privilege FROM dba_users u, dba_role_privs rp, dba_sys_privs sp WHERE username = rp.grantee AND rp.granted_role = sp.grantee AND privilege NOT IN ( 'CREATE SEQUENCE', 'CREATE TRIGGER', 'SET CONTAINER', 'CREATE CLUSTER', 'CREATE PROCEDURE', 'CREATE TYPE', 'CREATE SESSION', 'CREATE OPERATOR', 'CREATE TABLE', 'CREATE INDEXTYPE' ) AND username NOT IN ( 'XDB', 'SYSTEM', 'SYS', 'LBACSYS', 'DVSYS', 'DVF', 'SYSMAN_RO', 'SYSMAN_BIPLATFORM', 'SYSMAN_MDS', 'SYSMAN_OPSS', 'SYSMAN_STB', 'DBSNMP', 'SYSMAN', 'APEX_040200', 'WMSYS', 'SYSDG', 'SYSBACKUP', 'SPATIAL_WFS_ADMIN_USR', 'SPATIAL_CSW_ADMIN_US','GSMCATUSER', 'OLAPSYS', 'SI_INFORMTN_SCHEMA', 'OUTLN', 'ORDSYS', 'ORDDATA', 'OJVMSYS', 'ORACLE_OCM', 'MDSYS', 'ORDPLUGINS', 'GSMADMIN_INTERNAL', 'MDDATA', 'FLOWS_FILES', 'DIP', 'CTXSYS', 'AUDSYS', 'APPQOSSYS', 'APEX_PUBLIC_USER', 'ANONYMOUS', 'SPATIAL_CSW_ADMIN_USR', 'SYSKM', 'SYSMAN_TYPES', 'MGMT_VIEW', 'EUS_ENGINE_USER', 'EXFSYS', 'SYSMAN_APM','IX','OWBSYS' ) ORDER by 1, 2, 3; (The list of special accounts that are excluded from this requirement may not be complete. It is expected that the DBA will edit the list to suit local circumstances, adding other special accounts as necessary, and removing any that are not supposed to be in use in the Oracle deployment that is under review. Similarly, the list of privileges excluded from the list may be modified according to circumstances.) Data Dictionary Objects Related To System Privileges: all_sys_privs session_privs user_sys_privs dba_sys_privs system_privilege_map
Fix: F-41616r667511_fix
Remove permissions from DBAs and other administrative users beyond those required for administrative functions.
- RMF Control
- CM-7
- Severity
- M
- CCI
- CCI-000381
- Version
- O112-C2-004400
- Vuln IDs
-
- V-238447
- V-52399
- Rule IDs
-
- SV-238447r667515_rule
- SV-66615
Checks: C-41658r667513_chk
Determine which OS accounts are used by the DBMS to run external procedures. Validate that these OS accounts have only the privileges necessary to perform the required functionality. If any OS accounts, utilized by the database for running external procedures, have privileges beyond those required for running the external procedures, this is a finding. System views providing privilege information are: DBA_SYS_PRIVS DBA_TAB_PRIVS DBA_ROLE_PRIVS
Fix: F-41617r667514_fix
Limit privileges to DBMS-related OS accounts to those required to perform their DBMS specific functionality.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-004900
- Vuln IDs
-
- V-238448
- V-52407
- Rule IDs
-
- SV-238448r667518_rule
- SV-66623
Checks: C-41659r667516_chk
The account lockout duration is defined in the profile assigned to a user. To see what profile is assigned to a user, enter the query: SELECT profile FROM dba_users WHERE username = '&USERNAME' This will return the profile name assigned to that user. Now check the values assigned to the profile returned from the query above: SELECT PROFILE, RESOURCE_NAME, LIMIT FROM DBA_PROFILES WHERE PROFILE LIKE '&PROFILE_NAME' Check the settings for password_lock_time - this specifies how long to lock the account after the number of consecutive failed logon attempts reaches the limit. If the value is not UNLIMITED, this is a finding.
Fix: F-41618r667517_fix
Configure the DBMS settings to specify indefinite lockout duration: ALTER PROFILE '&PROFILE_NAME' LIMIT PASSWORD_LOCK_TIME UNLIMITED;
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-005000
- Vuln IDs
-
- V-238449
- V-52431
- Rule IDs
-
- SV-238449r667521_rule
- SV-66647
Checks: C-41660r667519_chk
(This addresses both O112-C2-005000 and O112-C2-005200.) The limit on the number of consecutive failed logon attempts is defined in the profile assigned to a user. To see what profile is assigned to a user, enter the following query: SQL>SELECT profile FROM dba_users WHERE username = '&USERNAME' This will return the profile name assigned to that user. Now check the values assigned to the profile returned from the query above: SQL>SELECT PROFILE, RESOURCE_NAME, LIMIT FROM DBA_PROFILES WHERE PROFILE LIKE '&PROFILE_NAME' Check the settings for failed_login_attempts - this is the number of consecutive failed login attempts before locking the Oracle user account. If the value is greater than 3, this is a finding.
Fix: F-41619r667520_fix
(This addresses both O112-C2-005000 and O112-C2-005200.) Configure the DBMS settings to specify the maximum number of consecutive failed login attempts to 3 (or less): ALTER PROFILE '&PROFILE_NAME' LIMIT FAILED_LOGON_ATTEMPTS 3;
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-002165
- Version
- O112-C2-006600
- Vuln IDs
-
- V-238450
- V-52453
- Rule IDs
-
- SV-238450r667524_rule
- SV-66669
Checks: C-41661r667522_chk
Verify the DBMS has the ability to grant permissions without the grantee receiving the right to grant those same permissions to another user. Review organization policies regarding access propagation. If an access propagation policy limiting the propagation of rights does not exist, this is a finding. Review DBMS configuration to verify access propagation policies are enforced by the DBMS as configured. If the DBMS does not enforce the access propagation policy, this is a finding.
Fix: F-41620r667523_fix
Create and document an access propagation policy that limits the propagation of rights. Configure the DBMS to enforce the access propagation policy. When a user is granted access to an object they have access to the object. When a used is granted access to an object with the ADMIN option, then they can provide permissions to others. Without the ADMIN option, a user cannot grant access to an object. No configuration is required.
- RMF Control
- AC-3
- Severity
- M
- CCI
- CCI-002165
- Version
- O112-C2-006700
- Vuln IDs
-
- V-238451
- V-52457
- Rule IDs
-
- SV-238451r667527_rule
- SV-66673
Checks: C-41662r667525_chk
Check DBMS settings and documentation to determine if users are able to assign and revoke rights to the objects and information they own. If users cannot assign or revoke rights to the objects and information they own to the granularity of a single user, this is a finding. (This is default Oracle behavior.)
Fix: F-41621r667526_fix
Modify DBMS settings to allow users to assign or revoke access rights to objects and information owned by the user. The ability to grant or revoke rights must include the ability to grant or revoke those rights down to the granularity of a single user. (This is default Oracle behavior.)
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-001855
- Version
- O112-C2-008200
- Vuln IDs
-
- V-238452
- V-52159
- Rule IDs
-
- SV-238452r667530_rule
- SV-66375
Checks: C-41663r667528_chk
Review DBMS, OS, or third-party logging application settings to determine whether a warning will be provided when a specific percentage of log storage capacity is reached. If no warning will be provided, this is a finding.
Fix: F-41622r667529_fix
Modify DBMS, OS, or third-party logging application settings to alert appropriate personnel when a specific percentage of log storage capacity is reached. For ease of management, it is recommended that the audit tables be kept in a dedicated tablespace. If Oracle Enterprise Manager is in use, the capability to issue such an alert is built in and configurable via the console so an email can be sent to a designated administrator. If Enterprise Manager is unavailable, the following script can be used to monitor storage space; this can be combined with additional code to email the appropriate administrator so they can take action. sqlplus connect as sysdba SQL> set pagesize 300 SQL> set linesize 120 SQL> column sumb format 9,999,999,999,999 SQL> column extents format 999999 SQL> column bytes format 9,999,999,999,999 SQL> column largest format 9,999,999,999,999 SQL> column Tot_Size format 9,999,999,999,999 SQL> column Tot_Free format 9,999,999,999,999 SQL> column Pct_Free format 9,999,999,999,999 SQL> column Chunks_Free format 9,999,999,999,999 SQL> column Max_Free format 9,999,999,999,999 SQL> set echo off SQL> spool TSINFO.txt SQL> PROMPT SPACE AVAILABLE IN TABLESPACES SQL> select a.tablespace_name,sum(a.tots) Tot_Size, SQL> sum(a.sumb) Tot_Free, SQL> sum(a.sumb)*100/sum(a.tots) Pct_Free, SQL> sum(a.largest) Max_Free,sum(a.chunks) Chunks_Free SQL> from SQL> ( SQL> select tablespace_name,0 tots,sum(bytes) sumb, SQL> max(bytes) largest,count(*) chunks SQL> from dba_free_space a SQL> group by tablespace_name SQL> union SQL> select tablespace_name,sum(bytes) tots,0,0,0 from SQL> dba_data_files SQL> group by tablespace_name) a SQL> group by a.tablespace_name; Sample Output SPACE AVAILABLE IN TABLESPACES TABLESPACE_NAME TOT_SIZE TOT_FREE PCT_FREE MAX_FREE CHUNKS_FREE ------------------------------ ------------ ------------ ------------ ------------ ------------ DES2 41,943,040 30,935,040 74 30,935,040 1 DES2_I 31,457,280 23,396,352 74 23,396,352 1 RBS 60,817,408 57,085,952 94 52,426,752 16 SYSTEM 94,371,840 5,386,240 6 5,013,504 3 TEMP 563,200 561,152 100 133,120 5 TOOLS 120,586,240 89,407,488 74 78,190,592 12 USERS 1,048,576 26,624 3 26,624 1
- RMF Control
- AU-5
- Severity
- M
- CCI
- CCI-001858
- Version
- O112-C2-008300
- Vuln IDs
-
- V-238453
- V-52163
- Rule IDs
-
- SV-238453r667533_rule
- SV-66379
Checks: C-41664r667531_chk
Review Oracle Corp., OS, or third-party logging software settings to determine whether a real-time alert will be sent to the appropriate personnel when auditing fails for any reason. If real-time alerts are not sent upon auditing failure, this is a finding.
Fix: F-41623r667532_fix
Configure logging software to send a real-time alert to appropriate personnel when auditing fails for any reason. (Oracle recommends the use of Oracle Enterprise Manager.)
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001813
- Version
- O112-C2-010300
- Vuln IDs
-
- V-238454
- V-52219
- Rule IDs
-
- SV-238454r667536_rule
- SV-66435
Checks: C-41665r667534_chk
Review DBMS settings and vendor documentation to ensure the database supports and does not interfere with enforcement of logical access restrictions associated with changes to the DBMS configuration and to the database itself. If the DBMS software in any way restricts the implementation of logical access controls implemented to protect its integrity or availability, this is a finding.
Fix: F-41624r667535_fix
Configure the DBMS to allow implementation of logical access restrictions aimed at protecting the DBMS from unauthorized changes to its configuration and to the database itself. - - - - - When the Oracle Database is installed on a Unix-like operating system, the required umask is 022, and the file permissions are set so that any modifications to the startup files can only be performed by the owner of the software, a member of the group DBA or the root user. Changing the umask has caused problems when patching the environment. If changes are to be made, they should be reverted to the status they were in before the modification for patching and upgrades.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-012300
- Vuln IDs
-
- V-238455
- V-52247
- Rule IDs
-
- SV-238455r667539_rule
- SV-66463
Checks: C-41666r667537_chk
Review the database backup procedures and implementation evidence. Evidence of implementation includes records of backup events and physical review of backup media. Evidence should match the backup plan as recorded in the system documentation. If backup procedures do not exist or are not implemented in accordance with the procedures, this is a finding. - - - - - The Oracle recommended process for backup and recovery is Oracle RMAN. If Oracle RMAN is deployed, execute the following commands to ensure that the evidence of the implementation of the backup policy includes validating that the files are restorable: Validating Database Files with BACKUP VALIDATE --You can use the BACKUP VALIDATE command to do the following: -- Check datafiles for physical and logical block corruption -- Confirm that all database files exist and are in the correct locations --When you run BACKUP VALIDATE, RMAN reads the files to be backed up in their entirety, as it would during a real backup. RMAN does not, however, actually produce any backup sets or image copies. --You cannot use the BACKUPSET, MAXCORRUPT, or PROXY parameters with BACKUP VALIDATE. --To validate files with the BACKUP VALIDATE command: 1. Start RMAN and connect to a target database and recovery catalog (if used). 2. Run the BACKUP VALIDATE command. For example, you can validate that all database files and archived logs can be backed up by running a command as shown in the following example. This command checks for physical corruptions only. BACKUP VALIDATE DATABASE ARCHIVELOG ALL; To check for logical corruptions in addition to physical corruptions, run the following variation of the preceding command: BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL; In the preceding examples, the RMAN client displays the same output that it would if it were really backing up the files. If RMAN cannot back up one or more of the files, then it issues an error message. Validating Backups Before Restoring Them You can run RESTORE ... VALIDATE to test whether RMAN can restore a specific file or set of files from a backup. RMAN chooses which backups to use. The database must be mounted or open for this command. You do not have to take datafiles offline when validating the restore of datafiles, because validation of backups of the datafiles only reads the backups and does not affect the production datafiles. When validating files on disk or tape, RMAN reads all blocks in the backup piece or image copy. RMAN also validates offsite backups. The validation is identical to a real restore operation except that RMAN does not write output files. To validate backups with the RESTORE command: 1. Run the RESTORE command with the VALIDATE option. This following example illustrates validating the restore of the database and all archived redo logs: RESTORE DATABASE VALIDATE; RESTORE ARCHIVELOG ALL VALIDATE; If you do not see an RMAN error stack, then skip the subsequent steps. The lack of error messages means that RMAN had confirmed that it can use these backups successfully during a real restore and recovery. 2. If you see error messages in the output and the RMAN-06026 message, then investigate the cause of the problem. If possible, correct the problem that is preventing RMAN from validating the backups and retry the validation. The following error means that RMAN cannot restore one or more of the specified files from your available backups: RMAN-06026: some targets not found - aborting restore The following sample output shows that RMAN encountered a problem reading the specified backup: RMAN-03009: failure of restore command on c1 channel at 12-DEC-06 23:22:30 ORA-19505: failed to identify file "oracle/dbs/1fafv9gl_1_1" ORA-27037: unable to obtain file status SVR4 Error: 2: No such file or directory Additional information: 3
Fix: F-41625r667538_fix
Develop, document, and implement database backup procedures.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-012400
- Vuln IDs
-
- V-238456
- V-52249
- Rule IDs
-
- SV-238456r667542_rule
- SV-66465
Checks: C-41667r667540_chk
Review the testing and verification procedures documented in the system documentation. Review evidence of implementation of testing and verification procedures by reviewing logs from backup and recovery implementation. Logs may be in electronic form or hardcopy and may include email or other notification. If testing and verification of backup and recovery procedures is not documented in the system documentation, this is a finding. If evidence of testing and verification of backup and recovery procedures does not exist, this is a finding.
Fix: F-41626r667541_fix
Develop, document, and implement testing and verification procedures for database backup and recovery. Include requirements for documenting database backup and recovery testing and verification activities in the procedures.
- RMF Control
- SC-4
- Severity
- M
- CCI
- CCI-001090
- Version
- O112-C2-012500
- Vuln IDs
-
- V-238457
- V-52251
- Rule IDs
-
- SV-238457r667545_rule
- SV-66467
Checks: C-41668r667543_chk
Review file protections assigned to online backup and restoration files. Review access protections and procedures for offline backup and restoration files. If backup or restoration files are subject to unauthorized access, this is a finding. It may be necessary to review backup and restoration procedures to determine ownership and access during all phases of backup and recovery.
Fix: F-41627r667544_fix
Implement protection for backup and restoration files. Document personnel and the level of access authorized for each to the backup and restoration files in the system documentation.
- RMF Control
- IA-2
- Severity
- H
- CCI
- CCI-000765
- Version
- O112-C2-012900
- Vuln IDs
-
- V-238458
- V-52255
- Rule IDs
-
- SV-238458r667548_rule
- SV-66471
Checks: C-41669r667546_chk
If all user accounts are authenticated by the organization-level authentication/access mechanism and not by the DBMS, this is not a finding. Review DBMS settings, OS settings, and/or enterprise-level authentication/access mechanism settings to determine whether user accounts are required to use multifactor authentication. If user accounts are not required to use multifactor authentication, this is a finding. If the $ORACLE_HOME/network/admin/sqlnet.ora contains entries similar to the following, TLS is enabled. (Note: This assumes that a single sqlnet.ora file, in the default location, is in use. Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.) SQLNET.AUTHENTICATION_SERVICES= (BEQ, TCPS) SSL_VERSION = 1.2 SSL_CLIENT_AUTHENTICATION = TRUE WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /u01/app/oracle/product/12.1.0/dbhome_1/owm/wallets) ) ) SSL_CIPHER_SUITES= (SSL_RSA_WITH_AES_256_CBC_SHA384) ADR_BASE = /u01/app/oracle
Fix: F-41628r667547_fix
Configure DBMS, OS and/or enterprise-level authentication/access mechanism to require multifactor authentication for user accounts. If appropriate, enable support for Transport Layer Security (TLS) protocols and multifactor authentication through the use of Smart Cards (CAC/PIV). Oracle Database is capable of being configured to integrate users with an enterprise-level authentication/access mechanism. The directions are in the Oracle Database Security Guide, Section 6 https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/database-security-guide.pdf#page=318 This section will give detailed step-by-step directions to configure authentication using PKI Certificates for centrally managed users by configuring Secure Sockets Layer in the Oracle database and integrating with LDAP.
- RMF Control
- IA-2
- Severity
- M
- CCI
- CCI-000764
- Version
- O112-C2-013300
- Vuln IDs
-
- V-238459
- V-52263
- Rule IDs
-
- SV-238459r667551_rule
- SV-66479
Checks: C-41670r667549_chk
Review DBMS settings, OS settings, and/or enterprise-level authentication/access mechanism settings to determine whether group accounts exist. If group accounts do not exist, this is NA. Review DBMS settings to determine if individual authentication is required before group authentication. If group authentication does not require prior individual authentication, this is a finding. (Oracle Access Manager may be helpful in meeting this requirement. Notes on Oracle Access Manager follow.) Oracle Access Manager is used when there is a need for multifactor authentication of applications front-ending Oracle Datasets that may use group accounts. Oracle Access Manager supports using PKI-based smart cards (CAC, PIV) for multifactor authentication. When a user authenticates to a smart card application, the smart card engine produces a certificate-based authentication token. You can configure a certificate-based authentication scheme in Oracle Access Manager that uses information from the smart card certificate. Certificate-based authentication works with any smart card or similar device that presents an X.509 certificate. Check: First, check that the Authentication Module is set up properly: 1) Go to Oracle Access Manager Home Screen and click the Policy Configuration tab. Select the X509Scheme. 2) Make sure the Authentication Module option is set to X509Plugin. Second, check your Authentication policy is using the x509Scheme: 1) Go to Oracle Access Manager Home Screen and click the Policy Configuration tab. 2) Select Application Domains. Select Search. 3) Select the application domain protecting the Oracle Database. 4) Select the Authentication Polices tab and Click Protected Resource Policy. 5) Make sure the Authentication Scheme is set to x509Scheme.
Fix: F-41629r667550_fix
Configure DBMS, OS and/or enterprise-level authentication/access mechanism to require individual authentication prior to authentication for group account access. If appropriate, install Oracle Access Manager to provide multifactor authentication of applications front-ending Oracle Databases and using group accounts. After installation, use x509 Authentication modules provided out of the box.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-013800
- Vuln IDs
-
- V-238460
- V-52269
- Rule IDs
-
- SV-238460r667554_rule
- SV-66485
Checks: C-41671r667552_chk
If all user accounts are managed and authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, this is not a finding. For accounts managed by Oracle, check DBMS settings to determine if accounts can be automatically disabled by the system after 35 days of inactivity. Also, ask the DBA if an alternative method, such as a stored procedure run daily, to disable Oracle-managed accounts inactive for more than 35 days, has been deployed. If the ability to disable accounts after 35 days of inactivity, by either of these means, does not exist, this is a finding.
Fix: F-41630r667553_fix
For accounts managed by Oracle, create a script or store procedure that runs once a day. Write a SQL statement to determine accounts that have not logged in within 35 days: Example: select username from dba_audit_trail where action_name = 'LOGON' group by username having max(timestamp) < sysdate - 36 And then disable all accounts that have not logged in within 35 days.
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- O112-C2-013900
- Vuln IDs
-
- V-238461
- V-52271
- Rule IDs
-
- SV-238461r667557_rule
- SV-66487
Checks: C-41672r667555_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, stop here: this is not a finding against the DBMS. For each profile that can be applied to accounts where authentication is under Oracle's control, determine the password verification function, if any, that is in use: SELECT * FROM SYS.DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' [AND PROFILE NOT IN (<list of non-applicable profiles>)] ORDER BY PROFILE; Bearing in mind that a profile can inherit from another profile, and the root profile is called DEFAULT, determine the name of the password verification function effective for each profile. If, for any profile, the function name is null, this is a finding. For each password verification function, examine its source code. If it does not enforce the DoD-defined minimum length (15 unless otherwise specified), this is a finding.
Fix: F-41631r667556_fix
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, no fix to the DBMS is required. If any user accounts are managed by Oracle: Develop, test and implement a password verification function that enforces DoD requirements. (Oracle supplies a sample function called verify_function_11G, in the script file <oracle_home>/RDBMS/ADMIN/utlpwdmg.sql. This can be used as the starting point for a customized function.)
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- O112-C2-014000
- Vuln IDs
-
- V-238462
- V-52273
- Rule IDs
-
- SV-238462r667560_rule
- SV-66489
Checks: C-41673r667558_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, this is not a finding. For each profile that can be applied to accounts where authentication is under Oracle's control, determine the password reuse rule, if any, that is in effect: SELECT * FROM SYS.DBA_PROFILES WHERE RESOURCE_NAME IN ('PASSWORD_REUSE_MAX', 'PASSWORD_REUSE_TIME') [AND PROFILE NOT IN (<list of non-applicable profiles>)] ORDER BY PROFILE, RESOURCE_NAME; Bearing in mind that a profile can inherit from another profile, and the root profile is called DEFAULT, determine the value of the PASSWORD_REUSE_MAX effective for each profile. If, for any profile, the PASSWORD_REUSE_MAX value does not enforce the DoD-defined minimum number of password changes before a password may be repeated (5 or greater), this is a finding. PASSWORD_REUSE_MAX is effective if and only if PASSWORD_REUSE_TIME is specified, so if both are UNLIMITED, this is a finding.
Fix: F-41632r667559_fix
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, no fix to the DBMS is required. If any user accounts are managed by Oracle: For each profile, set the PASSWORD_REUSE_MAX to enforce the DoD-defined minimum number of password changes before a password may be repeated (5 or greater). PASSWORD_REUSE_MAX is effective if and only if PASSWORD_REUSE_TIME is specified, so ensure also that it has a meaningful value. Since the minimum password lifetime is 1 day, the smallest meaningful value is the same as the PASSWORD_REUSE_MAX value. Using PPPPPP as an example, the statement to do this is: ALTER PROFILE PPPPPP LIMIT PASSWORD_REUSE_MAX 5 PASSWORD_REUSE_TIME 5;
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- O112-C2-014100
- Vuln IDs
-
- V-238463
- V-52275
- Rule IDs
-
- SV-238463r667563_rule
- SV-66491
Checks: C-41674r667561_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, stop here: this is not a finding against the DBMS. For each profile that can be applied to accounts where authentication is under Oracle's control, determine the password verification function, if any, that is in use: SELECT * FROM SYS.DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' [AND PROFILE NOT IN (<list of non-applicable profiles>)] ORDER BY PROFILE; Bearing in mind that a profile can inherit from another profile, and the root profile is called DEFAULT, determine the name of the password verification function effective for each profile. If, for any profile, the function name is null, this is a finding. For each password verification function, examine its source code. If it does not enforce the organization-defined minimum number of upper-case characters (1 unless otherwise specified), this is a finding.
Fix: F-41633r667562_fix
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, no fix to the DBMS is required. If any user accounts are managed by Oracle: Develop, test and implement a password verification function that enforces DoD requirements. (Oracle supplies a sample function called verify_function_11G, in the script file <oracle_home>/RDBMS/ADMIN/utlpwdmg.sql. This can be used as the starting point for a customized function.)
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- O112-C2-014200
- Vuln IDs
-
- V-238464
- V-52277
- Rule IDs
-
- SV-238464r667566_rule
- SV-66493
Checks: C-41675r667564_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, stop here: this is not a finding against the DBMS. For each profile that can be applied to accounts where authentication is under Oracle's control, determine the password verification function, if any, that is in use: SELECT * FROM SYS.DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' [AND PROFILE NOT IN (<list of non-applicable profiles>)] ORDER BY PROFILE; Bearing in mind that a profile can inherit from another profile, and the root profile is called DEFAULT, determine the name of the password verification function effective for each profile. If, for any profile, the function name is null, this is a finding. For each password verification function, examine its source code. If it does not enforce the organization-defined minimum number of lower-case characters (1 unless otherwise specified), this is a finding.
Fix: F-41634r667565_fix
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, no fix to the DBMS is required. If any user accounts are managed by Oracle: Develop, test and implement a password verification function that enforces DoD requirements. (Oracle supplies a sample function called verify_function_11G, in the script file <oracle_home>/RDBMS/ADMIN/utlpwdmg.sql. This can be used as the starting point for a customized function.)
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- O112-C2-014300
- Vuln IDs
-
- V-238465
- V-52279
- Rule IDs
-
- SV-238465r667569_rule
- SV-66495
Checks: C-41676r667567_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, stop here: this is not a finding against the DBMS. For each profile that can be applied to accounts where authentication is under Oracle's control, determine the password verification function, if any, that is in use: SELECT * FROM SYS.DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' [AND PROFILE NOT IN (<list of non-applicable profiles>)] ORDER BY PROFILE; Bearing in mind that a profile can inherit from another profile, and the root profile is called DEFAULT, determine the name of the password verification function effective for each profile. If, for any profile, the function name is null, this is a finding. For each password verification function, examine its source code. If it does not enforce the organization-defined minimum number of numeric characters (1 unless otherwise specified), this is a finding.
Fix: F-41635r667568_fix
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, no fix to the DBMS is required. If any user accounts are managed by Oracle: Develop, test and implement a password verification function that enforces DoD requirements. (Oracle supplies a sample function called verify_function_11G, in the script file <oracle_home>/RDBMS/ADMIN/utlpwdmg.sql. This can be used as the starting point for a customized function.)
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- O112-C2-014400
- Vuln IDs
-
- V-238466
- V-52281
- Rule IDs
-
- SV-238466r667572_rule
- SV-66497
Checks: C-41677r667570_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, stop here: this is not a finding against the DBMS. For each profile that can be applied to accounts where authentication is under Oracle's control, determine the password verification function, if any, that is in use: SELECT * FROM SYS.DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' [AND PROFILE NOT IN (<list of non-applicable profiles>)] ORDER BY PROFILE; Bearing in mind that a profile can inherit from another profile, and the root profile is called DEFAULT, determine the name of the password verification function effective for each profile. If, for any profile, the function name is null, this is a finding. For each password verification function, examine its source code. If it does not enforce the organization-defined minimum number of special characters (1 unless otherwise specified), this is a finding.
Fix: F-41636r667571_fix
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, no fix to the DBMS is required. If any user accounts are managed by Oracle: Develop, test and implement a password verification function that enforces DoD requirements. (Oracle supplies a sample function called verify_function_11G, in the script file <oracle_home>/RDBMS/ADMIN/utlpwdmg.sql. This can be used as the starting point for a customized function.)
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- O112-C2-014500
- Vuln IDs
-
- V-238467
- V-52283
- Rule IDs
-
- SV-238467r667575_rule
- SV-66499
Checks: C-41678r667573_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, this is not a finding. For each profile that can be applied to accounts where authentication is under Oracle's control, determine the password verification function, if any, that is in use: SELECT * FROM SYS.DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' [AND PROFILE NOT IN (<list of non-applicable profiles>)] ORDER BY PROFILE; Bearing in mind that a profile can inherit from another profile, and the root profile is called DEFAULT, determine the name of the password verification function effective for each profile. If, for any profile, the function name is null, this is a finding. For each password verification function, examine its source code. If it does not enforce the organization-defined minimum number of characters by which the password must differ from the previous password (eight of the characters unless otherwise specified), this is a finding.
Fix: F-41637r667574_fix
If any user accounts are managed by Oracle: Develop, test and implement a password verification function that enforces DoD requirements. (Oracle supplies a sample function called verify_function_11G, in the script file <oracle_home>/RDBMS/ADMIN/utlpwdmg.sql. This can be used as the starting point for a customized function.)
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- O112-C2-014900
- Vuln IDs
-
- V-238468
- V-52287
- Rule IDs
-
- SV-238468r667578_rule
- SV-66503
Checks: C-41679r667576_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, stop here: this is not a finding against the DBMS. Where accounts are authenticated using passwords, review procedures and implementation evidence for creation of temporary passwords. If the procedures or evidence do not exist or do not enforce passwords to meet DoD password requirements, this is a finding.
Fix: F-41638r667577_fix
Implement procedures for assigning temporary passwords to user accounts. Procedures should include instructions to meet current DoD password length and complexity requirements and provide a secure method to relay the temporary password to the user.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-015100
- Vuln IDs
-
- V-238469
- V-52289
- Rule IDs
-
- SV-238469r667581_rule
- SV-66505
Checks: C-41680r667579_chk
Review application source code required to be encoded or encrypted for database accounts used by applications or batch jobs to access the database. Review source batch job code prior to compiling, encoding, or encrypting for database accounts used by applications or the batch jobs themselves to access the database. Determine if the compiled, encoded, or encrypted application source code or batch jobs contain passwords used for authentication to the database. If any of the identified compiled, encoded, or encrypted application source code or batch job code do contain passwords used for authentication to the database, this is a finding. The check would depend on the information provided by the DBA. In a default Oracle installation, all passwords are stored in an encrypted manner. Ask the DBA if they have created an External Password Store for applications, batch jobs, and scripts to use. Secure External Password Store: You can store password credentials for connecting to databases by using a client-side Oracle wallet. An Oracle wallet is a secure software container that stores authentication and signing credentials. This wallet usage can simplify large-scale deployments that rely on password credentials for connecting to databases. When this feature is configured, application code, batch jobs, and scripts no longer need embedded user names and passwords. This reduces risk because the passwords are no longer exposed, and password management policies are more easily enforced without changing application code whenever user names or passwords change. The external password store of the wallet is separate from the area where public key infrastructure (PKI) credentials are stored. Consequently, you cannot use Oracle Wallet Manager to manage credentials in the external password store of the wallet. Instead, use the command-line utility mkstore to manage these credentials. How Does the External Password Store Work? Typically, users (and as applications, batch jobs, and scripts) connect to databases by using a standard CONNECT statement that specifies a database connection string. This string can include a user name and password, and an Oracle Net service name identifying the database on an Oracle Database network. If the password is omitted, the connection prompts the user for the password. For example, the service name could be the URL that identifies that database, or a TNS alias you entered in the tnsnames.ora file in the database. Another possibility is a host:port:sid string. The following examples are standard CONNECT statements that could be used for a client that is not configured to use the external password store: CONNECT salesapp@sales_db.us.example.com Enter password: password CONNECT salesapp@orasales Enter password: password CONNECT salesapp@ourhost37:1527:DB17 Enter password: password In these examples, salesapp is the user name, with the unique connection string for the database shown as specified in three different ways. You could use its URL sales_db.us.example.com, or its TNS alias, orasales, from the tnsnames.ora file, or its host:port:sid string. However, when clients are configured to use the secure external password store, applications can connect to a database with the following CONNECT statement syntax, without specifying database logon credentials: CONNECT /@db_connect_string CONNECT /@db_connect_string AS SYSDBA CONNECT /@db_connect_string AS SYSOPER In this specification, db_connect_string is a valid connection string to access the intended database, such as the service name, URL, or alias as shown in the earlier examples. Each user account must have its own unique connection string; you cannot create one connection string for multiple users. In this case, the database credentials, user name and password, are securely stored in an Oracle wallet created for this purpose. The autologin feature of this wallet is turned on, so the system does not need a password to open the wallet. From the wallet, it gets the credentials to access the database for the user they represent.
Fix: F-41639r667580_fix
Design DBMS application code and batch job code that is compiled, encoded or encrypted, to NOT contain passwords. Oracle provides the capability to provide for a secure external password facility. Use the Oracle mkstore to create a secure storage area for passwords for applications, batch jobs, and scripts to use or deploy a site-authorized facility to perform this function. Check to see what has been stored in the Oracle External Password Store. To view all contents of a client wallet external password store, check specific credentials by viewing them. Listing the external password store contents provides information you can use to decide whether to add or delete credentials from the store. To list the contents of the external password store, enter the following command at the command line: $ mkstore -wrl wallet_location -listCredential For example: $ mkstore -wrl c:\oracle\product\11.2.0\db_1\wallets -listCredential The wallet_location specifies the path to the directory where the wallet, whose external password store contents you want to view, is located. This command lists all of the credential database service names (aliases) and the corresponding user name (schema) for that database. Passwords are not listed. Configuring Clients to use the External Password Store: If your client is already configured to use external authentication, such as Windows native authentication or Transport Layer Security (TLS), then Oracle Database uses that authentication method. The same credentials used for this type of authentication are typically also used to log in to the database. For clients not using such authentication methods or wanting to override them for database authentication, you can set the SQLNET.WALLET_OVERRIDE parameter in sqlnet.ora to TRUE. The default value for SQLNET.WALLET_OVERRIDE is FALSE, allowing standard use of authentication credentials as before. If you want a client to use the secure external password store feature, then perform the following configuration task: 1. Create a wallet on the client by using the following syntax at the command line: mkstore -wrl wallet_location -create For example: mkstore -wrl c:\oracle\product\11.2.0\db_1\wallets -create Enter password: password The wallet_location is the path to the directory where you want to create and store the wallet. This command creates an Oracle wallet with the autologin feature enabled at the location you specify. The autologin feature enables the client to access the wallet contents without supplying a password. The mkstore utility -create option uses password complexity verification. 2. Create database connection credentials in the wallet by using the following syntax at the command line: mkstore -wrl wallet_location -createCredential db_connect_string username Enter password: password For example: mkstore -wrl c:\oracle\product\11.2.0\db_1\wallets -createCredential oracle system Enter password: password In this specification: The wallet_location is the path to the directory where you created the wallet. The db_connect_string used in the CONNECT /@db_connect_string statement must be identical to the db_connect_string specified in the -createCredential command. The db_connect_string is the TNS alias you use to specify the database in the tnsnames.ora file or any service name you use to identify the database on an Oracle network. By default, tnsnames.ora is located in the $ORACLE_HOME/network/admin directory on UNIX systems and in ORACLE_HOME\network\admin on Windows. The username is the database logon credential. When prompted, enter the password for this user. 3. In the client sqlnet.ora file, enter the WALLET_LOCATION parameter and set it to the directory location of the wallet you created in Step 1. For example, if you created the wallet in $ORACLE_HOME/network/admin and your Oracle home is set to /private/ora11, then you need to enter the following into your client sqlnet.ora file: WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /private/ora11/network/admin) ) ) 4. In the client sqlnet.ora file, enter the SQLNET.WALLET_OVERRIDE parameter and set it to TRUE as follows: SQLNET.WALLET_OVERRIDE = TRUE This setting causes all CONNECT /@db_connect_string statements to use the information in the wallet at the specified location to authenticate to databases. When external authentication is in use, an authenticated user with such a wallet can use the CONNECT /@db_connect_string syntax to access the previously specified databases without providing a user name and password. However, if a user fails that external authentication, then these connect statements also fail. Below is a sample sqlnet.ora file with the WALLET_LOCATION and the SQLNET.WALLET_OVERRIDE parameters set as described in Steps 3 and 4. WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /private/ora12/network/admin) ) ) SQLNET.WALLET_OVERRIDE = TRUE SSL_CLIENT_AUTHENTICATION = FALSE SSL_VERSION = 1.2 (Note: This assumes that a single sqlnet.ora file, in the default location, is in use. Please see the supplemental file "Non-default sqlnet.ora configurations.pdf" for how to find multiple and/or differently located sqlnet.ora files.)
- RMF Control
- IA-5
- Severity
- M
- CCI
- CCI-000192
- Version
- O112-C2-015200
- Vuln IDs
-
- V-238470
- V-52291
- Rule IDs
-
- SV-238470r708144_rule
- SV-66507
Checks: C-41681r708142_chk
If all user accounts are authenticated by the OS or an enterprise-level authentication/access mechanism, and not by Oracle, this is not a finding. Review DBMS settings to determine if passwords must be changed periodically. If not, this is a finding: SELECT p1.profile, CASE p1.limit WHEN 'UNLIMITED' THEN 'UNLIMITED' ELSE CASE p2.limit WHEN 'UNLIMITED' THEN 'UNLIMITED' ELSE CASE p3.limit WHEN 'UNLIMITED' THEN 'UNLIMITED' ELSE CASE p4.limit WHEN 'UNLIMITED' THEN 'UNLIMITED' ELSE TO_CHAR(DECODE(p1.limit, 'DEFAULT', p3.limit, p1.limit) + DECODE(p2.limit, 'DEFAULT', p4.limit, p2.limit)) END END END END effective_life_time FROM dba_profiles p1, dba_profiles p2, dba_profiles p3, dba_profiles p4 WHERE p1.profile=p2.profile AND p3.profile='DEFAULT' AND p4.profile='DEFAULT' AND p1.resource_name='PASSWORD_LIFE_TIME' AND p2.resource_name='PASSWORD_GRACE_TIME' AND p3.resource_name='PASSWORD_LIFE_TIME' -- from DEFAULT profile AND p4.resource_name='PASSWORD_GRACE_TIME' -- from DEFAULT profile order by 1; If the "effective_life_time" is greater than 60 for any profile applied to user accounts, and the need for this has not been documented and approved by the ISSO, this is a finding. If the value is greater than 35 for any profile applied to user accounts, and the DBMS is configured to use Password Lifetime to disable inactive accounts (see requirement SRG-APP-000025-DB-000004), this is a finding.
Fix: F-41640r708143_fix
For user accounts managed by Oracle: Modify DBMS settings to force users to periodically change their passwords. For example, using PPPPPP to stand for a profile name: ALTER PROFILE PPPPPP LIMIT PASSWORD_LIFE_TIME 35 PASSWORD_GRACE_TIME 0; Do this for each profile applied to user accounts. (Note that although the DoD requirement is for a password change every 60 days, using a value of “35� facilitates the use of PASSWORD_LIFE_TIME as a means of locking accounts inactive for 35 days, as required by SRG-APP-000025-DB-000004. But if 35 is not a practical or acceptable limit for password lifetime, set it to the standard DoD value of 60, and use another method to satisfy SRG-APP-000025-DB-000004.) Where a password lifetime longer than 60 is needed, document the reasons and obtain ISSO approval.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-016000
- Vuln IDs
-
- V-238471
- V-52299
- Rule IDs
-
- SV-238471r667587_rule
- SV-66515
Checks: C-41682r667585_chk
Review DBMS configuration to determine if cryptographic mechanisms are being utilized to protect the integrity and confidentiality of non-local maintenance and diagnostic communications. If not, this is a finding.
Fix: F-41641r667586_fix
Configure DBMS to utilize cryptographic mechanisms to protect the integrity and confidentiality of non-local maintenance and diagnostic communications.
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-016100
- Vuln IDs
-
- V-238472
- V-52301
- Rule IDs
-
- SV-238472r667590_rule
- SV-66517
Checks: C-41683r667588_chk
Review DBMS settings to determine whether strong identification and authentication techniques are required for non-local maintenance and diagnostic sessions. If strong identification and authentication techniques are not required, this is a finding.
Fix: F-41642r667589_fix
Configure DBMS settings to use strong identification and authentication techniques for non-local maintenance and diagnostic sessions.
- RMF Control
- AC-12
- Severity
- M
- CCI
- CCI-002361
- Version
- O112-C2-016500
- Vuln IDs
-
- V-238473
- V-52307
- Rule IDs
-
- SV-238473r667593_rule
- SV-66523
Checks: C-41684r667591_chk
Review DBMS settings, OS settings, and vendor documentation to verify network connections are terminated when a database communications session is ended or after a DoD-defined period of inactivity. If the network connection is not terminated, this is a finding. The defined duration for these timeouts is 15 minutes, except to fulfill documented and validated mission requirements.
Fix: F-41643r667592_fix
Configure DBMS and/or OS settings to disconnect network sessions when database communication sessions have ended or after the DoD-defined period of inactivity. To configure this in Oracle, modify each relevant profile. The resource name is IDLE_TIME, which is expressed in minutes. Using PPPPPP as an example of a profile, set the timeout to 15 minutes with: ALTER PROFILE PPPPPP LIMIT IDLE_TIME 15;
- RMF Control
- IA-7
- Severity
- M
- CCI
- CCI-000803
- Version
- O112-C2-016600
- Vuln IDs
-
- V-238474
- V-52309
- Rule IDs
-
- SV-238474r667596_rule
- SV-66525
Checks: C-41685r667594_chk
If encryption is not required for the database, this is not a finding. If the DBMS has not implemented federally required cryptographic protections for the level of classification of the data it contains, this is a finding. Determine whether the Oracle DBMS software is at version 11.2.0.4 with the January 2014 CPU (or above). If it is not, this is a finding.
Fix: F-41644r667595_fix
Implement required cryptographic protections using cryptographic modules complying with applicable federal laws, Executive Orders, directives, policies, regulations, standards, and guidance. Deploy Oracle 11.2.0.4, with the January 2014 CPU patch, or a later version. Configure cryptographic functions to use FIPS 140-2 compliant algorithms and hashing functions. The strength requirements are dependent upon data classification. For unclassified data, where cryptography is required: AES 128 for encryption SHA 256 for hashing NSA has established the suite B encryption requirements for protecting National Security Systems (NSS) as follows: AES 128 for Secret AES 256 for Top Secret SHA 256 for Secret SHA 384 for Top Secret National Security System is defined as: (OMB Circular A-130) Any telecommunications or information system operated by the United States Government, the function, operation, or use of which (1) involves intelligence activities; (2) involves cryptologic activities related to national security; (3) involves command and control of military forces; (4) involves equipment that is an integral part of a weapon or weapons system; or (5) is critical to the direct fulfillment of military or intelligence missions, but excluding any system that is to be used for routine administrative and business applications (including payroll, finance, logistics, and personnel management applications). There is more information on this topic in the Oracle Database 11.2g Advanced Security Administrator's Guide, which may be found at http://docs.oracle.com/cd/E11882_01/network.112/e40393.pdf. FIPS 140-2 can be downloaded from http://csrc.nist.gov/publications/PubsFIPS.html#140-2
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-016700
- Vuln IDs
-
- V-238475
- V-52311
- Rule IDs
-
- SV-238475r667599_rule
- SV-66527
Checks: C-41686r667597_chk
Review the system documentation to determine whether the database handles classified information. If the database handles classified information, upgrade the severity Category Code to I. Review the system documentation to discover sensitive or classified data identified by the Information Owner that requires encryption. If no sensitive or classified data is identified as requiring encryption by the Information Owner, this is not a finding. Have the DBA use select statements in the database to review sensitive data stored in tables as identified in the system documentation. If all sensitive data identified is encrypted within the database objects, encryption of the DBMS data files is optional and not a finding. If all sensitive data is not encrypted within database objects, review encryption applied to the DBMS host data files. If no encryption is applied, this is a finding.
Fix: F-41645r667598_fix
Obtain and utilize native or third-party NIST-validated FIPS 140-2-compliant cryptography solution for the DBMS. Configure cryptographic functions to use FIPS 140-2-compliant algorithms and hashing functions. Deploy Oracle 11.2.0.4 with the January 2014 CPU patch. The strength requirements are dependent upon data classification. For unclassified data, where cryptography is required: AES 128 for encryption SHA 256 for hashing NSA has established the suite B encryption requirements for protecting National Security Systems (NSS) as follows. AES 128 for Secret AES 256 for Top Secret SHA 256 for Secret SHA 384 for Top Secret National Security System is defined as: (OMB Circular A-130) Any telecommunications or information system operated by the United States Government, the function, operation, or use of which (1) involves intelligence activities; (2) involves cryptologic activities related to national security; (3) involves command and control of military forces; (4) involves equipment that is an integral part of a weapon or weapons system; or (5) is critical to the direct fulfillment of military or intelligence missions, but excluding any system that is to be used for routine administrative and business applications (including payroll, finance, logistics, and personnel management applications). There is more information on this topic in the Oracle Database 11.2g Advanced Security Administrator's Guide, which may be found at http://docs.oracle.com/cd/E11882_01/network.112/e40393.pdf FIPS 140-2 can be downloaded from http://csrc.nist.gov/publications/PubsFIPS.html#140-2
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-018600
- Vuln IDs
-
- V-238476
- V-52149
- Rule IDs
-
- SV-238476r667602_rule
- SV-66365
Checks: C-41687r667600_chk
If the organization has a policy, consistently enforced, forbidding the creation of emergency or temporary accounts, this is not a finding. Check DBMS settings, OS settings, and/or enterprise-level authentication/access mechanisms settings to determine if emergency accounts are being automatically terminated by the system after an organization-defined time period. Check also for custom code (scheduled jobs, procedures, triggers, etc.) for achieving this. If emergency accounts are not being terminated after an organization-defined time period, this is a finding.
Fix: F-41646r667601_fix
Create a profile specifically for emergency or temporary accounts. When creating the accounts, assign them to this profile. Configure DBMS, OS, and/or enterprise-level authentication/access mechanisms, or implement custom code, to terminate accounts with this profile after an organization-defined time period.
- RMF Control
- AC-10
- Severity
- M
- CCI
- CCI-000054
- Version
- O112-C2-019100
- Vuln IDs
-
- V-238477
- V-52161
- Rule IDs
-
- SV-238477r667605_rule
- SV-66377
Checks: C-41688r667603_chk
Review DBMS settings to verify the DBMS implements measures to limit the effects of the organization-defined types of Denial of Service (DoS) attacks. If measures have not been implemented, this is a finding. Check the $ORACLE_HOME/network/admin/listener.ora to see if a Rate Limit has been established. A rate limit is used to prevent denial of service (DOS) attacks on a database or to control a login storm such as may be caused by an application server reboot. - - - - - Example of a listener configuration with rate limiting in effect: CONNECTION_RATE_LISTENER=10 LISTENER= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)(RATE_LIMIT=yes)) (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1522)(RATE_LIMIT=yes)) (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1526)) ) LISTENER= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)(RATE_LIMIT=8)) (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1522)(RATE_LIMIT=12)) (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1526)) )
Fix: F-41647r667604_fix
Implement measures to limit the effects of organization-defined types of Denial of Service attacks. Modify the $ORACLE_HOME/network/admin/listener.ora to establish a Rate Limit.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-C2-019600
- Vuln IDs
-
- V-238478
- V-52169
- Rule IDs
-
- SV-238478r667608_rule
- SV-66385
Checks: C-41689r667606_chk
Verify the DBMS system initialization and shutdowns are configured to ensure the DBMS system and data files remain in a secure state. If the DBMS does not support this, verify third-party software or custom scripting at the OS level performs this function. If neither the DBMS, a third-party application, nor the OS is performing integrity verification of DBMS system files, this is a finding.
Fix: F-41648r667607_fix
Utilize a DBMS, OS, or third-party product to perform file verification of DBMS system file integrity at startup and shutdown. (Using Oracle Configuration Manager with Enterprise Manager, configured to perform this verification, is one possible way of satisfying this requirement.)
- RMF Control
- CM-6
- Severity
- M
- CCI
- CCI-000366
- Version
- O112-C2-020300
- Vuln IDs
-
- V-238479
- V-52183
- Rule IDs
-
- SV-238479r667611_rule
- SV-66399
Checks: C-41690r667609_chk
Obtain the CC/S/A/FA's list of suspicious event types and the actions to be taken in response, ordered from least disruptive to last resort. If the list does not exist, this is a finding. For each event type in the list, review the measures in place in the DBMS/database configuration that are designed to detect and/or counter the event. (Alerting an administrator or operator to the problem is a valid measure.) If, for any event type defined in the list, no means of detecting the event exists, this is a finding. For each event type where an automatic countermeasure is defined, verify that its implementation is congruent with the list of defined actions. If not, this is a finding. Verify that administrators/operators are familiar with the list and the notification mechanism and are equipped to follow the instructions in the list. If not, this is a finding.
Fix: F-41649r667610_fix
If the list does not exist, create it. For any event type defined in the list where no means of detecting the event exists, either create the means of detection or modify the list. For each event type where an automatic countermeasure is defined but its implementation differs from its description in the list, either modify the countermeasure or amend the list. If any administrators/operators are unfamiliar with the list or the notification mechanism, train them. If any administrators/operators are not equipped to follow the instructions in the list, provide them with the means to do so. Ensure the list is incorporated into, or referenced by, the System Security Plan. Note that Oracle Audit Vault and Oracle Database Vault are optional products that can be of considerable use in implementing active protection measures of this kind.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-OS-004600
- Vuln IDs
-
- V-238480
- V-52425
- Rule IDs
-
- SV-238480r667614_rule
- SV-66641
Checks: C-41691r667612_chk
Review system documentation to identify the installation account. Verify whether the account is used for anything involving interactive activity beyond DBMS software installation, upgrade, and maintenance actions. If the account is used for anything involving interactive activity beyond DBMS software installation, upgrade, and maintenance actions, this is a finding.
Fix: F-41650r667613_fix
Restrict interactive use of the DBMS software installation account to DBMS software installation, upgrade, and maintenance actions only. If possible, disable the installation accounts when authorized actions are not being performed. Otherwise, disable the use of the account(s) for interactive activity.
- RMF Control
- CM-5
- Severity
- M
- CCI
- CCI-001499
- Version
- O112-OS-011200
- Vuln IDs
-
- V-238481
- V-52429
- Rule IDs
-
- SV-238481r667617_rule
- SV-66645
Checks: C-41692r667615_chk
Review permissions that control access to the DBMS software libraries. The software library location may be determined from vendor documentation or service/process executable paths. DBA accounts, the DBMS process account, the DBMS software installation/maintenance account, SA accounts, if access by them is required for some operational level of support such as backups, and the host system itself require access. Any others should be scrutinized and a reason for access provided by the DBA. If accounts that are not required and authorized to have access to the software library location do have access, this is a finding. Check to see which users have been granted DBA. Work from a basis of least privilege. Provide the least amount of privilege required to accomplish the job. SQL> select * from dba_role_privs where granted_role = 'DBA';
Fix: F-41651r667616_fix
Restrict access to the DBMS software libraries to accounts that require access based on job function.