| 影響版本 | Oracle Database 9.2.0.0 - 10.2.0.3 |
|---|---|
| Bugtraq ID | 17426 |
| 核心缺陷 | 僅擁有基表 SELECT 權限的用戶,可透過精心構造的視圖執行 INSERT/UPDATE/DELETE 操作 |
| 風險等級 | 高(低權限帳戶可竄改資料) |
Oracle 權限檢查機制存在邏輯缺陷:當用戶創建視圖並對其執行 DML 時,系統未正確驗證用戶對基表的實際寫入權限。攻擊者利用主鍵作為關鍵條件,構造特定視圖定義,繞過權限檢查直接修改基表資料。
值得注意的是,資料字典多數表缺乏主鍵,因此對系統字典影響有限,但業務應用表若有主鍵即面臨風險。
-- 假設 dbsnmp 僅具備 SELECT ANY DICTIONARY
SQL> connect dbsnmp/dbsnmp
SQL> delete from sys.registry$; -- 正常失敗:ORA-01031
-- 構造惡意視圖(關鍵步驟省略敏感細節)
SQL> create or replace view evil_view as select ... from sys.registry$ ...;
-- 透過視圖實現刪除
SQL> delete from evil_view; -- 成功刪除 17 筆記錄!
CREATE VIEW、CREATE DATABASE LINK 等權限。此漏洞揭示視圖機制與權限檢查的交互缺陷,提醒我們:權限模型不僅要看「授予什麼」,更要防範「如何被組合利用」。企業應建立資料庫安全基線,結合補丁管理、權限最小化與行為審計,構建纵深防禦體系。