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% 保护您免受此漏洞的影响。您应该升级到包含该漏洞修复程序的版本。
谢谢您的澄清信息 :)
> 这是因为在 10.1.8 版本中,我们开始使用 systemd 代替 init 来管理 MariaDB 服务。
但 CentOS 6/RHEL6 仍然会使用 init。
如果是这样的话,那么 CentOS 6/RHEL6 用户应该立即升级。
> 然而,如果使用的数据库用户既没有 SUPER 权限也没有 FILE 权限,或者用户拥有 FILE 权限但设置了 –secure-file-priv 来隔离导入和导出操作的位置,则此漏洞不可被利用。
这对于 general_log_file 的部分来说并不真确,是吗?
将来自 IRC 的讨论作为对此的回答
serg: 修改 @@general_log_file 需要 SUPER 权限
roidelapluie: 好的
serg: 没有 SUPER 权限的人可以使用 FILE 权限来获得 SUPER 权限
serg: 这就是为什么建议使用 –secure-file-priv 来防止直接访问数据目录文件
roidelapluie: 但这意味着这句话不真实;拥有 SUPER 权限的远程用户可以执行任意代码
serg: 这句话说的是如果用户没有 SUPER 权限,那么这个漏洞就不可被利用
roidelapluie: 好的
我使用服务器版本:5.5.49-MariaDB MariaDB Server。我是否需要升级到 5.5.51 版本来保护网站?请给我建议。谢谢
是的,您应该升级。请注意,5.5.52 版本已于昨天发布。
警告:今天早上我们的 Debian 服务器上的 MariaDB 自动更新到 5.5.52,然后导致服务器崩溃。
/var/lib/mysql 文件夹的组未知且权限为 700,因此无法访问数据库
。
撤回评论 – 信息错误。MariaDB 服务器更新顺利,MySQL 服务器没有。