用于修补MySQL服务器以应对CVE-2016-6662的简单Ansible playbook。
简而言之,它会尝试将一个恶意 .so 文件写入文件系统,并修改你的配置,使其在下次服务重启时加载。
此补丁不会阻止实际的攻击,但它会修改 mysqld_safe,使得 .so 文件只能从标准系统位置加载,而 mysqld 无法在该位置写入。它还会检查 mysqld 可能读取的各种默认文件的存在性和权限,以防止恶意代码创建或修改它们。
完整问题详见 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6662 ;Percona 的 Kenny Gryp 在 https://www.percona.com/blog/2016/09/12/database-affected-cve-2016-6662/ 上发布了一个简短而精彩的分析。
此 playbook 将尝试应用一个自定义补丁,该补丁结合了 Percona 补丁(位于 https://github.com/percona/percona-server/commit/c14be53e029442f576cced1fb8ff96b58e89f2e0#diff-144aa2f11374843c969d96b7b84247eaR261)和 MySQL 补丁(位于 https://github.com/mysql/mysql-server/blob/5.7/scripts/mysqld\_safe.sh#L356-L364)。
它将:
我已在近百个安装上验证了这一点——主要是 Debian,还有几个 RedHat 和 Suse。
这个新版本已应用于近 200 台主机,没有出现明显问题。
我观察到 patch 在 5.1 环境中失败,因为 mysql_safe 脚本不包含锚点——但该版本(及更早版本)也不受影响,所以这不是问题。
注意,changed= 值为 0 或 2 表示未进行补丁(2 表示安装并移除了 patch);1 或 3 表示已执行补丁。其他值属于意外情况,应进行调查 :-)
加上额外的任务后,情况不再那么明确;你需要实际阅读输出了。
感谢 Kenny Gryp、Percona 和 MySQL 提供了清晰的分析和简单的解决方法;特别感谢 Patrick Forsberg 发现了原始补丁中的缺陷。
/vegi