In this blog post, I will discuss the CVE-2016-6662 vulnerability, how to tell if it affects you, and how to prevent the vulnerability from affecting you if you have an older version of MySQL.
I’ll also list which MySQL versions include the vulnerability fixes.
As we announced in a previous post, there are certain scenarios in Percona Server (and MySQL) that can allow a remote root code execution (CVE-2016-6662).
The website legalhackers.com contains the full, current explanation of the CVE-2016-6662 vulnerability.
To summarize, the methods used to gain root privileges require multiple conditions:
MySQL seems to have already released versions that include the security fixes.
This is coming from the release notes in MySQL 5.6.33:
--malloc-lib now must be one of the directories /usr/lib, /usr/lib64, /usr/lib/i386-linux-gnu, or /usr/lib/x86_64-linux-gnu. In addition, the --mysqld and --mysqld-version options can be used only on the command line and not in an option file. (Bug #24464380)
.ini or .cnf that later could be parsed as option files. The general query log and slow query log can no longer be written to a file ending with .ini or .cnf. (Bug #24388753)
REPAIR TABLE used temporary files. (Bug #24388746)You aren’t affected if you use version 5.5.52, 5.6.33 or 5.7.15.
Release notes: 5.5.52, 5.6.33, 5.7.15
The way Percona increased security was by limiting which libraries are allowed to be loaded with LD_PRELOAD (including --malloc-lib), and limiting them to /usr/lib/, /usr/lib64 and the MySQL installation base directory.
This means only locations that are accessible by root users can load shared libraries.
The following Percona Server versions have this fix:
We are working on releasing new Percona XtraDB Cluster versions as well.
Future Percona Server releases will include all fixes from MySQL.
MariaDB has fixed the issue in 5.5.51, 10.1.17 and 10.0.27
It is possible to change the database configuration so that it isn’t affected anymore (without changing your MySQL versions and restarting your database). There are several options, each of them focusing on one of the conditions required for the vulnerability to work.
Just before publishing this, a blogpost came out with another alternative on how to patch your server: https://www.psce.com/blog/2016/09/12/how-to-quickly-patch-mysql-server-against-cve-2016-6662/.
One way to avoid the vulnerability is making sure no remote user has SUPER or FILE privileges.
However, CVE-2016-6663 mentions there is a way to do this without any FILE privileges (likely related to the REPAIR TABLE issue mentioned in MySQL release notes).
The vulnerability needs to be able to write to some MySQL configuration files. Prevent that and you are secure.
Make sure you configure permissions for various config files as follows:
Resources
RELATED POSTS