Check: MADB-10-010700
MariaDB Enterprise 10.x STIG:
MADB-10-010700
(in versions v2 r2 through v1 r2)
Title
MariaDB must generate audit records when unsuccessful attempts to delete privileges/permissions occur. (Cat II impact)
Discussion
Failed attempts to change the permissions, privileges, and roles granted to users and roles must be tracked. Without an audit trail, unauthorized attempts to elevate or restrict privileges could go undetected. In MariaDB, deleting permissions is typically done via the REVOKE command. To aid in diagnosis, it is necessary to keep track of failed attempts in addition to the successful ones.
Check Content
Verify the MariaDB Enterprise Audit plugin is loaded and actively logging: MariaDB> SHOW GLOBAL STATUS LIKE 'Server_audit_active'; If the MariaDB Enterprise Audit is not active, this is a finding. As the database administrator, create a user without special permissions: MariaDB> CREATE USER testuser IDENTIFIED BY password ; In one terminal, tail the audit log file. For example: $ tail -F /var/lib/mysql/server_audit.log (default location) As the database administrator, create a role by running the following SQL: MariaDB> CREATE ROLE user_role As the database administrator, GRANT user_role to testuser: MariaDB> GRANT user_role to testuser As the database administrator, add two privileges to user_role for testdb and then delete one of the privileges: MariaDB> GRANT SELECT,DELETE on testdb to testuser As the testuser, remove the users delete privilege by granting only SELECT, and revoke grant from test user: MariaDB> GRANT SELECT on testdb to testuser MariaDB> REVOKE user_role to testuser If the audit records for REVOKE and the second SELECT are not produced in the first terminal, this is a finding.
Fix Text
No super/administrative users should not have access to modify tables within the mysql database. Verify users do not have access and revoke as necessary. Example: View user grants: MariaDB> SHOW GRANTS FOR 'username'@'host'; If user has INSERT, UPDATE, and/or DELETE on the mysql database or all databases, modify the user privileges as necessary. The MariaDB Enterprise Audit plugin can be configured to audit these changes. Update necessary audit filters to include query_event ALL. Example: MariaDB> DELETE FROM mysql.server_audit_filters WHERE filtername = 'default'; MariaDB> INSERT INTO mysql.server_audit_filters (filtername, rule) VALUES ('default', JSON_COMPACT( '{ "connect_event": [ "CONNECT", "DISCONNECT" ], "query_event": [ "ALL" ] }' ));
Additional Identifiers
Rule ID: SV-253759r961812_rule
Vulnerability ID: V-253759
Group Title: SRG-APP-000499-DB-000331
Expert Comments
CCIs
Number | Definition |
---|---|
CCI-000172 |
Generate audit records for the event types defined in AU-2 c that include the audit record content defined in AU-3. |
Controls
Number | Title |
---|---|
AU-12 |
Audit Generation |