MYS8-00-004800 - The MySQL Database Server 8.0 must enforce authorized access to all PKI private keys stored/utilized by the MySQL Database Server 8.0.

Information

The DoD standard for authentication is DoD-approved PKI certificates. PKI certificate-based authentication is performed by requiring the certificate holder to cryptographically prove possession of the corresponding private key.

If the private key is stolen, an attacker can use it to impersonate the certificate holder. In cases where the Database Management System (DBMS)-stored private keys are used to authenticate the DBMS to the system's clients, loss of the corresponding private keys would allow an attacker to successfully perform undetected man-in-the-middle attacks against the DBMS system and its clients.

Both the holder of a digital certificate, and the issuing authority, must take careful measures to protect the corresponding private key. Private keys must always be generated and protected in FIPS 140-2 or 140-3 validated cryptographic modules.

All access to the private key(s) of the DBMS must be restricted to authorized and authenticated users. If unauthorized users have access to one or more of the DBMS's private keys, an attacker could gain access to the key(s) and use them to impersonate the database on the network or otherwise perform unauthorized actions.

Solution

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 put in place file systems permissions on authentication and signing credentials, including private keys.

Put keys in place in the datadir, or define their locations using ssl_capath and ssl_crlpath.

Ensure proper permissions are set to protect the private keys and certificates.

Change directory ssl_capath, ssl_crlpath, or the default datadir path.

To determine the file paths:
select @@ssl_capath, @@ssl_crlpath, @@ssl_key, @@datadir;

Ensure OS account mysql owns all the pem and key files.
$ chown mysql *.pem
$ chgrp mysql *.key
$ chmod 600 *.key'
$ chmod 600 *.pem

Optionally, allow access to public keys.
$ chmod 644 client-cert.pem client-key.pem
$chmod 644 public_key.pem server-cert.pem

If the server-key.pem has a password, provide this password when prompted during a console startup. The server will not start without this password if the server key is password protected.

Edit the mysql configuration file.

[mysqld]
ssl-fips-mode=ON

If the OpenSSL FIPS Object Module is not available, ssl_fips_mode to ON or STRICT at startup causes the server to produce an error message and exit.

See Also

https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_Oracle_MySQL_8-0_V2R2_STIG.zip

Item Details

Category: IDENTIFICATION AND AUTHENTICATION

References: 800-53|IA-5(2)(b), CAT|I, CCI|CCI-000186, Rule-ID|SV-235135r961041_rule, STIG-ID|MYS8-00-004800, Vuln-ID|V-235135

Plugin: MySQLDB

Control ID: c4f8333d735326f345f8749357fa7487095c0d3b968dea028a420d19f199b481