CVE-2016-6662 and CVE-2016-6664 MySQL 安全漏洞处理说明

详细信息见: bug 描述

该漏洞本质上通过系统调用 chmod u+s 来实现提权的目的, 从文章的描述来看, 影响具体分为两类:

1. 普通用户提权后可以查看删除 mysql 数据目录;
2. 普通用户提权后可以进入启动 mysqld 进程的用户环境进行各项操作;

两类影响都是通过 MySQL 在 repair table 操作时, 系统调用 stat 和 chown 之间的空隙而进行的替换实现了 chmod u+s 提权操作, 第二点比第一点更严重, 可以进行重启等操作;

漏洞的触发需要满足以下几点:

1. 可以登入本地 MySQL 主机的用户;
2. 连接的 mysql 用户具有权限 create, insert (repair 权限);
3. mysql 开启 symbolic-links 选项(可选);

可以看到重现漏洞的条件还是比较苛刻的; 当然攻击者能登录 MySQL 主机后就是另一个层次的影响;

线上需要操作什么:

1. 清理除 mysql 进程启动的普通用户;
2. 应用连接 MySQL 的用户不要授予 create 权限, 论坛业务暂缓(第三方插件需要 create 权限), 其它业务和开发确认后尽量收回 create 权限;
3. 禁止 symbolic-links 选项可以禁止通过软连接查看数据; 如果回收了 create 权限, 可以忽略该步骤;
4. MySQL 启动进程的用户设置为 nologin, 这可以避免第二类影响;

1,2,3 步骤可以避免第一类影响, 3 步骤可以避免第二类影响, 线上业务可参考步骤 2, 3 进行设置. 3步骤可在配置的 [mysqld] 部分增加以下参数跳过软连接支持, 不用特意重启数据库, 等下次维护的时候自然生效:

skip-symbolic-links 或 symbolic-links = 0