MariaDB 服务器版本与远程 Root 代码执行漏洞 CVE-2016-6662

最近几天,关于一个被称为 MySQL 远程 Root 代码执行 / 权限提升 0day,CVE 编号为 CVE-2016-6662 的漏洞,出现了大量的疑问和讨论。这是一个严重的漏洞,我们鼓励所有 MariaDB 服务器用户从 MariaDB 的角度阅读以下关于此漏洞的更新信息。

该漏洞可被本地和远程用户利用。通过验证连接或 SQL 注入攻击受影响的 MariaDB 服务器版本都可以利用此漏洞。如果成功,一个库文件可以被加载并以 root 权限执行。该漏洞利用了 mysqld_safe 启动脚本。

然而,如果使用的数据库用户既没有 SUPER 权限也没有 FILE 权限,或者用户拥有 FILE 权限但设置了 –secure-file-priv 来隔离导入和导出操作的位置,则此漏洞不可被利用。始终推荐的配置是不要授予 SUPER 权限,并避免在不使用 –secure-file-priv 的情况下授予 FILE 权限。

从 RPM 或 DEB 包安装 MariaDB 服务器 10.1.8 或更高版本的用户不受此漏洞影响。这是因为在 10.1.8 版本中,我们开始使用 systemd 代替 init 来管理 MariaDB 服务。在这种情况下,mysqld_safe 启动脚本不会被使用。

关于此漏洞的相应 bug 可以在 MariaDB 的项目追踪中看到,bug 编号为 MDEV-10465。它于今年 7 月 31 日开放。

所有稳定的 MariaDB 版本(5.5、10.0、10.1)已于 8 月在以下版本中修复

如果您使用的是上述任何版本(或更高版本),则您已受到此漏洞的保护。

如果您正在测试 10.2 的 alpha 版本,请注意该修复程序将在 10.2.2 版本中提供。撰写本文时,该版本尚未发布,但即将发布。

有关此漏洞的完整报告,请参阅发现此漏洞的 Dawid Golunski (legalhackers.com) 发布的安全公告

2016 年 10 月 3 日更新 – 由于此博客文章发布后引发的讨论,我在此添加几句话以提供一些额外信息。

  • 我在博客文章中提到,通过 DEB 或 RPM 包安装 10.1.8 或更高版本的用户不受影响,因为启动时不会调用 mysqld_safe。尽管这是真的,但其他工具仍可能调用 mysqld_safe 并暴露此漏洞。
  • 您应该始终确保默认的操作系统用户 mysql 没有修改 my.cnf 文件的权限。但是需要注意的是,仅仅确保这一点并不能 100% 保护您免受此漏洞的影响。您应该升级到包含该漏洞修复程序的版本。