攻擊類別
第 2 階段把獵捕分配到這些視角。不是每個類別都適用每份程式碼——依偵察結果挑選。點卡片看每類在追什麼。
9 個類別
標準類別4
注入 Injection把不受信任的輸入,從入口一路追到危險的 sink。
什麼算危險 sink 取決於應用:web 應用是 SQL/HTML/shell/模板/檔案路徑;函式庫是緩衝區與 parser;CLI 是指令組裝。別只查直接路徑——找出間接(二階)注入:資料被安全儲存、稍後卻在危險情境被使用;以及透過欄位名稱、key、header、metadata 而非僅僅值的注入。
重點追查
- 間接 / 二階注入(先安全儲存,稍後危險使用)。
- 注入次級系統:log、cache、搜尋索引、分析。
存取控制呼叫者能不能做不該做的事?檢查是否對「正確資源」用「正確機制」查了「正確權限」。
不要止於「有沒有權限檢查」。是否有「檢查較弱」的路徑能達成同樣的狀態變更?request body 的某個欄位能不能蓋掉權限系統的本意?是否有端點只擋了「認證」卻忘了「授權」?批量 / 匯出 / 匯入操作有沒有逐項檢查權限?
重點追查
- 同一資源有多條存取路徑,檢查卻不一致。
- 已認證但未授權的端點。
資源與檔案處理路徑穿越、SSRF、不安全反序列化、壓縮檔解開、記憶體安全,以及檔案操作競態。
透過 symlink、編碼序列、null byte 的路徑穿越。透過轉址、DNS rebinding、URL parser 歧異的 SSRF。解壓縮的 zip slip。適用時的記憶體安全(緩衝區溢位、use-after-free、整數溢位)。檢查檔案與使用檔案之間的 TOCTOU 競態。
重點追查
- 轉址後就失效的 URL 驗證。
- 逸出目標資料夾的壓縮檔項目。
加密與機密弱亂數、寫死的機密、壞掉的 KDF/HMAC、時序側通道、原語誤用。
用於 token/key/nonce 的弱亂數。出現在 log、錯誤訊息、URL 或前端可見回應的機密。缺少 HMAC 驗證、nonce 重用、ECB 模式、固定 IV。還有失敗路徑:當加密操作失敗時,錯誤路徑會不會退化成「不加密」?
重點追查
- 非定時(constant-time)的機密比較。
- 加密失敗退回明文。
真正的 bug 藏在這3
業務邏輯真正的 bug 藏身處——掃描器找不到邏輯錯誤。
狀態機違規:跳步、倒退、重播已完成的流程;若三步中的第二步失敗,第一步會回滾嗎?有業務影響的競態(雙重花費、雙重核准)。數值操弄:負值、零、溢位、精度、字串↔數字強制轉換。在「確切邊界時刻」的時間邏輯。當設定缺失或旗標關閉時的安全姿態。
重點追查
- 非原子化的 check-then-act。
- 部分失敗留下半改的狀態。
功能濫用與資料外洩把正當功能用於非預期目的——bug 在設計裡,不在程式碼裡。
匯出/備份成外洩管道——低權限使用者能否匯出超出其等級的資料,或已刪除/草稿內容?匯入/還原成注入——能否建立繞過驗證的紀錄?搜尋/篩選/排序成 oracle——會不會洩漏你無法直接存取的內容是否存在?透過錯誤/時序差異做列舉。預覽/草稿外洩。通知/webhook URL 成為 SSRF。
重點追查
- 匯出夾帶他人或本應刪除/清除的資料。
- 篩選參數能探測隱藏狀態或欄位。
串連攻擊與信任邊界單獨安全的行為,組合起來卻變危險。
多步串連:資訊揭露 + IDOR + 缺 rate limit = 暴力枚舉;open redirect + OAuth callback = 竊取 token。跨元件信任落差:B 信任了 A「細微不同」的驗證。二階:在 SQL 安全的值成了 JSON path 的 key;在 URL 安全的 slug 成了檔案路徑的一部分。範圍/能力提權。回滾/還原濫用:undelete 或還原繞過了當前權限。
重點追查
- A 驗證 255 字、B 截到 128 字 → 變成不同字串。
- 還原帶回比預期更多的東西,繞過了今日規則。
開放式2
Wildcard 萬用沒有類別。給你整份程式碼,叫你打穿它。
找出沒人想到要找的東西。讀那些無聊的程式碼。最奇怪的程式碼是什麼,被濫用會怎樣?哪些功能像半成品或硬接上去(審查最少)?哪些 API 呼叫可行、但前端從不發出?git 歷史裡有沒有可疑處——被回退的安全修補、被註解掉的認證、提交後又移除的機密?若變數叫 temp、hack 或 legacy,逐行讀它。
重點追查
- 混搭從不該共用的功能:i18n + 預覽 + 快取。
- 用一個合法帳號造成最大破壞——蓄意破壞,而非提權。
顯而易見的事那些「大家都以為別人查過」的蠢東西。
要徹底、要照字面,不必創意。寫死的密碼/金鑰/token。提到安全的 TODO/FIXME/HACK 註解。production 可達的 debug 模式。未保護的 /debug、/admin、/metrics、/.env。被提交的 .env 或 *.pem。CORS 設成 * 又帶 credentials。缺 HttpOnly/Secure/SameSite 的 cookie。open redirect。帶動態輸入的 eval()/exec()。但回報前要追完整影響——一個旗標不等於一筆發現。
重點追查
- 缺 HttpOnly 只有在「JS 本來就不需讀該 cookie」時才要緊。
- 錯誤訊息的欄位只有在「真的會被填入機密」時才要緊。