MySQL 遠程代碼執行漏洞 (CVE-2016-6662) 緊急通報與緩解方案
2016 年 9 月披露的 MySQL 配置文件注入漏洞 (CNNVD-201609-183, CVE-2016-6662) 影響範圍極廣,允許攻擊者通過修改 `my.cnf` 注入惡意動態庫,在服務重啟時以 Root 權限執行任意代碼。本文梳理漏洞原理、影響版本、緊急緩解措施及長期修復建議。
一、 漏洞基本信息
| 項目 | 詳情 |
| CVE 編號 | CVE-2016-6662 |
| CNNVD 編號 | CNNVD-201609-183 |
| 漏洞類型 | 配置文件注入 → 遠程代碼執行 (RCE) |
| CVSS 3.0 評分 | 7.8 (High) / 部分向量需本地權限 |
| 發現者 | Dawid Golunski |
| 公開日期 | 2016-09-12 |
二、 影響版本範圍
- MySQL ≤ 5.7.15
- MySQL ≤ 5.6.33
- MySQL ≤ 5.5.52
- MariaDB ≤ 10.1.17, ≤ 10.0.27, ≤ 5.5.52
- Percona Server ≤ 5.7.14, ≤ 5.6.32, ≤ 5.5.51
✅ **已修復版本**:MySQL 5.7.16+, 5.6.34+, 5.5.53+;MariaDB 10.1.18+, 10.0.28+, 5.5.53+;Percona 5.7.15+, 5.6.33+, 5.5.52+。
三、 漏洞利用原理深度解析
- 雙進程架構:MySQL 啟動時啟動兩個進程——Root 權限的監護進程 + mysql 用戶權限的工作進程。
- 配置文件加載:Root 進程啟動時讀取 `my.cnf`,支援 `malloc_lib=path/to/evil.so` 指定動態庫預加載。
- 權限提升鏈:
- 攻擊者擁有合法 MySQL 賬號(或利用 SQL 注入)
- 通過 `SET GLOBAL general_log_file=/etc/my.cnf` + `SET GLOBAL general_log=ON` 寫入惡意配置
- 或利用 `TRIGGER`/`SELECT ... INTO DUMPFILE` 寫入配置文件
- 誘導/等待管理員重啟 MySQL 服務(或利用其他漏洞觸發重啟)
- Root 進程加載惡意 `.so`,執行任意代碼,完全控制服務器
四、 緊急緩解方案(無法立即升級時必做)
方案 1:禁用 FILE 權限(最直接、影響最小)
chattr +i /etc/my.cnf
chattr +i /usr/local/mysql/my.cnf
# 所有可能的 my.cnf 路徑均需保護
方案 3:禁用 general_log 動態修改
Oracle Security Alerts
漏洞技術分析:Legal Hackers Advisory
MariaDB 修復公告:MariaDB 10.1.18 Release Notes
CVE-2016-6662 揭示了「配置文件權限過鬆 + 雙進程架構權限邊界模糊」的經典安全設計缺陷。**核心防禦只有一條:業務賬號絕不授予 FILE 權限**。將此作為數據庫安全基線納入自動化合規檢查,配合及時升級補丁,可有效阻斷此類權限提升攻擊鏈。