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>';