2016 年 9 月披露 MySQL 配置檔 my.cnf 遠程代碼執行漏洞(CVE-2016-6662,CNNVD-201609-183),影響廣泛,Oracle 承諾 10 月發布關鍵補丁。本文整理漏洞原理、影響範圍、危害與緩解措施。
一、漏洞基本資訊
- CVE 編號:CVE-2016-6662
- CNNVD 編號:CNNVD-201609-183
- 組件:MySQL 配置檔
my.cnf 處理邏輯
- 類型:權限提升 / 遠程代碼執行
二、受影響版本
- MySQL 5.7.15 及之前
- MySQL 5.6.33 及之前
- MySQL 5.5.52 及之前
- 衍生版:MariaDB、Percona Server(已於 9/6 發布修復補丁)
三、漏洞原理
- MySQL 服務啟動時有兩進程:Root 進程(載入配置、啟動)+ MySQL 進程(處理請求)
- Root 進程會載入
my.cnf 中聲明的動態庫(plugin_dir/shared_library)
- 攻擊者若具備
FILE 權限或 SQL 注入,可透過 SET GLOBAL、TRIGGER、SELECT ... INTO DUMPFILE 等方式**修改/寫入 my.cnf**
- 植入惡意
malloc_lib=/path/to/evil.so 配置
- 誘導/等待管理員重啟 MySQL(或自動重啟)
- Root 進程載入惡意 so,**以 Root 權限執行任意代碼**,完全控制主機
四、危害等級
- CVSS 7.5/10(高危)
- 本地/遠程攻擊者均可利用
- 成功利用 = 伺服器完全淪陷
五、官方修復時間表
- Oracle 關鍵補丁更新(CPU):**2016 年 10 月 18 日**
- 公告連結:
https://www.oracle.com/technetwork/topics/security/alerts-086861.html
六、緩解方案(修復前必做)
- 移除 MySQL 帳號 FILE 權限:
REVOKE FILE ON *.* FROM 'app_user'@'%';
FLUSH PRIVILEGES;
- 配置檔目錄權限鎖死:
chown root:root /etc/my.cnf && chmod 644 /etc/my.cnf
- 禁用不必要的動態庫載入:
plugin_dir 指向不可寫目錄
- 監控配置檔變更:
auditd / inotifywait 監控 /etc/my.cnf、/etc/mysql/
- 升級至修復版本:5.7.16+、5.6.34+、5.5.53+
七、衍生版修復狀態
- MariaDB 10.1.17、10.0.27、5.5.52 已修復
- Percona Server 5.7.14-7、5.6.33-78.1、5.5.52-38.2 已修復
配置檔寫入權限 = Root 代碼執行。**最小權限原則**是唯一根治之道。