MySQL AB 多個版本的錯誤報告工具 mysqlbug 存在不安全臨時文件創建漏洞。本地攻擊者可利用此缺陷破壞系統任意文件,導致拒絕服務攻擊。受影響版本涵蓋 MySQL 3.20.x 至 4.1.0-alpha,以及多個 Linux 發行版的默認安裝包。
mysqlbug 是一個 Shell 腳本,用於收集錯誤報告並啟動文本編輯器供用戶填寫。問題出在腳本處理用戶未修改模板直接退出編輯器的邏輯上:
if cmp -s $TEMP $TEMP.x
then
echo "File not changed, no bug report submitted."
cp $TEMP /tmp/failed-mysql-bugreport
echo "The raw bug report exists in /tmp/failed-MySQL-bugreport"
exit 1
fi
腳本使用靜態文件名 /tmp/failed-mysql-bugreport 保存未修改的報告。攻擊者可預先建立同名符號鏈接指向關鍵系統文件(如 /etc/passwd),當其他用戶運行 mysqlbug 並直接退出時,目標文件將被覆蓋破壞。
官方已發布修復版本,請從 MySQL 官網下載最新源碼重新編譯安裝:
https://www.mysql.com/doc/en/Installing_source_tree.html
臨時緩解措施:限制 mysqlbug 腳本執行權限,或刪除該腳本(若不需要錯誤上報功能)。