5.11 Ensure Proper Use Of 'SET_ANY_DEFINER'

Information

Its critical to limit users ability to set and effective authorization ID that is used with executing a view or stored program. This grant provides a method to escalate privileges within MySQL views and procedures. A user with this privilege can specify any account as the DEFINER attribute for CREATE PROCEDURE CREATE FUNCTION CREATE TRIGGER CREATE EVENT ALTER EVENT CREATE VIEW and ALTER VIEW Without this privilege, only the effective authentication ID can be specified.

Enabling a user to create a view, stored procedure or function that improperly escalates privileges may provide unintended access rights which can be improperly used.

Side Note: The previous versions of MySQL users required a grant to SET_USER_ID privilege to create procedures with DEFINER set.

NOTE: Nessus has provided the target output to assist in reviewing the benchmark to ensure target compliance.

Solution

Perform the following steps to remediate this setting:

- Enumerate the non-administrative users found in the result set of the audit procedure
- For each user, issue the following SQL statement (replace with the non-administrative user): REVOKE SET_ANY_DEFINER ON *.* FROM '<user>';

See Also

https://workbench.cisecurity.org/benchmarks/15504

Item Details

Category: PLANNING, SYSTEM AND SERVICES ACQUISITION

References: 800-53|PL-8, 800-53|SA-8, CSCv7|14.6

Plugin: MySQLDB

Control ID: be47330151503e9aff0a7b287b217f64064d05522aa20c17be5ac04e670c8072