关于MySQL 5.5对CVE-2016-6662的应对措施

Debian stable(jessie)已于2016年9月14日发布了用于CVE-2016-6662的安全补丁包。
Debian — 安全信息 — DSA-3666-1 mysql-5.5

我最終通过源代码确认了采取了什么样的措施。

错误#24388753:使用MYSQLD_SAFE的权限提升 · mysql/mysql-server@48bd8b1

为了处理文件名以”ini”、”cnf”结尾的情况,禁止将其指定为”log”。为了处理符号链接的情况,调用了realpath(3)。

这篇文章介绍了MariaDB对于CVE-2016-6662 MySQL远程根代码执行/权限提升的应对措施,与MariaDB的内容相似,但稍微更为广泛的检查。

错误#24464380使用mysqld_safe进行特权升级·mysql/mysql-server@684a165

在mysqld_safe.sh脚本中,根据白名单检查–malloc-lib选项指定的库文件路径。这就是在之前的Qiita文章中提到的MySQL补丁。

但是白名单已经

    • /usr/lib

 

    • /usr/lib64

 

    • /usr/lib/i386-linux-gnu

 

    /usr/lib/x86_64-linux-gnu

Debian的多架构支持仅限于特定的架构。它不支持Debian的multiarch…
由于Debian将mysqld_safe.sh命名为/usr/bin/mysql_safe,所以在非i386/amd64架构上需要注意或修正。

应该如何注意

在非x86 CPU环境中,并不是这些目录不存在。可以通过使用”dpkg –add-architecutre”命令来添加这些体系结构,并安装multiarch支持的库,这样就可以生成这些目录。
相反,如果想指定其他的内存分配库,例如jemalloc(它是multiarch支持的软件包),不能像现在这样工作。

前者的影响几乎可以忽略不计,然而后者的情况下需要手动处理。

确认在Armel上的实际文件。

我从security.debian.org下载了armel的deb文件并进行了确认,发现它仍然是完全适用于x86的代码。另外,似乎还没有准备好所有体系结构的二进制文件(截至2016年9月16日)。我已经将此作为错误报告(#837984)提出了。

关于日期

查看提交日期,两个都是上个月。这是一种他们收到了联系方式但没有回复的模式吗?

MySQL的一个被称为0day的漏洞已于9月6日发布了修复版本。

根据这条推文显示,据称于9月6日发布了这个消息。我找不到任何支持这一消息的信息。

查看Debian软件包的更改日志,内容如下:

mysql-5.5 (5.5.52-0+deb8u1) jessie-security; urgency=high

  * Non-maintainer upload by the Security Team.
  * Imported Upstream version 5.5.52 to fix security issues:
    - CVE-2016-6662

 -- Salvatore Bonaccorso <carnil@debian.org>  Tue, 13 Sep 2016 20:02:30 +0200

mysql-5.5 (5.5.50-0+deb8u1) jessie-security; urgency=high

  * Non-maintainer upload by the Security Team.
  * Imported Upstream version 5.5.50 to fix security issues:
    - http://www.oracle.com/technetwork/security-advisory/cpujul2016-2881720.html
    - CVE-2016-3477 CVE-2016-3521 CVE-2016-3615 CVE-2016-5440

 -- Salvatore Bonaccorso <carnil@debian.org>  Thu, 21 Jul 2016 07:03:59 +0200

以前的发布中似乎有来自Oracle Technology Network的安全通告,但这次在Debian的更改日志中没有,所以可能它确实没有发布安全通告。
MySQL的变更日志似乎是根据提交日志自动生成的,没有关于发布的信息,所以无法得知。

给你个小礼物

Bug#24464380 是 MySQL 伺服器的報錯:PRIVILEGE ESCALATION USING MYSQLD_SAFE · mysql/mysql-server@754e7ef

這個修正只是將 Shell 腳本中的 $(cmd) 替換成反引號,但是在 Solaris 10 的/bin/sh 無法解釋它。