33. 若測試人員將 orderId 改為其他數值後成功取得不同使 用者訂單資料,此弱點最適合歸類為下列何種弱點類別?
(A) Security Misconfiguration(不安全的組態設定)
(B) Insecure Deserialization(不安全的反序列化)
(C) Broken Access Control(無效的訪問控制)
(D) Security Logging & Alerting Failures(安全日誌及警報失效)
統計: A(1), B(0), C(9), D(0), E(0) #3871608
詳解 (共 1 筆)
這題的正確答案是 (C) Broken Access Control (無效的訪問控制)。
這種特定的攻擊手法在資安領域中也被稱為 IDOR (Insecure Direct Object Reference,不安全的直接對象引用),是 Web 安全中最常見且危害極大的弱點之一。
選項分析與說明
| 選項 | 弱點類別 | 原因說明 |
| (A) | Security Misconfiguration (不安全的組態設定) | 指伺服器、資料庫或雲端平台設定不當(如開啟了預設帳密、開放了不必要的 Port、或目錄瀏覽權限未關閉)。這屬於環境層面的疏漏,而非程式邏輯對權限的判斷問題。 |
| (B) | Insecure Deserialization (不安全的反序列化) | 指程式在將資料格式(如 JSON、XML)還原成物件時,未過濾惡意輸入,導致攻擊者可以執行任意程式碼 (RCE)。這與「修改參數值來讀取他人資料」的邏輯不同。 |
| (C) | Broken Access Control (無效的訪問控制) | 正確答案。 程式雖然能識別使用者身分,但未驗證該使用者是否有權存取特定的資源 (OrderId)。只要修改 URL 或參數中的數值,就能跨越權限界限讀取他人資料,這完全符合 Broken Access Control 的定義。 |
| (D) | Security Logging & Alerting Failures (安全日誌及警報失效) | 指系統未能記錄攻擊行為,或在發生異常(如大量嘗試不同 OrderId)時沒有發出警報。這會導致「事後無法追蹤」,但並非導致「能取得他人資料」的直接原因。 |
深度解析:IDOR 與權限控制
在 OWASP Top 10 中,Broken Access Control 長期位居榜首。本題描述的情境就是典型的「垂直權限提升」或「水平權限移動」失敗:
-
問題根源:後端程式碼在執行查詢時,SQL 指令可能只寫了 SELECT * FROM orders WHERE id = $orderId,而漏掉了身份驗證,正確寫法應包含使用者判斷,例如:
SELECT * FROM orders WHERE id = $orderId AND user_id = $current_session_user_id
-
防禦建議:
-
強制執行權限檢查:每個需要參數輸入的 API 都必須在伺服器端驗證「該使用者是否擁有該資源」。
-
使用隨機 ID (UUID):改用不可預測的 UUID 代替連號的整數 ID,增加攻擊者猜測 ID 的難度。
-
間接引用:在前端使用對應表,隱藏後端真實的資料庫主鍵。
-
在處理這類漏洞時,通常也會搭配 DAAST (動態應用程式安全測試) 來模擬參數篡改,確保系統在正式上線前已封堵這類邏輯漏洞。