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 筆)

#7367490

這題的正確答案是 (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 長期位居榜首。本題描述的情境就是典型的「垂直權限提升」或「水平權限移動」失敗:

  1. 問題根源:後端程式碼在執行查詢時,SQL 指令可能只寫了 SELECT * FROM orders WHERE id = $orderId,而漏掉了身份驗證,正確寫法應包含使用者判斷,例如:

    SELECT * FROM orders WHERE id = $orderId AND user_id = $current_session_user_id

  2. 防禦建議

    • 強制執行權限檢查:每個需要參數輸入的 API 都必須在伺服器端驗證「該使用者是否擁有該資源」。

    • 使用隨機 ID (UUID):改用不可預測的 UUID 代替連號的整數 ID,增加攻擊者猜測 ID 的難度。

    • 間接引用:在前端使用對應表,隱藏後端真實的資料庫主鍵。

在處理這類漏洞時,通常也會搭配 DAAST (動態應用程式安全測試) 來模擬參數篡改,確保系統在正式上線前已封堵這類邏輯漏洞。

0
0