前幾天都在看「系統到底哪裡寫壞了」,今天先換個位置,坐到攻擊者那一邊看看:碰到這類弱點時,他通常會怎麼下手?
CWE 在問「系統哪裡出了問題」,CAPEC 則把視角轉向「攻擊者通常怎麼利用這類問題」。
兩者確實會互相連結,但不是同一套編號換個名字而已。
CAPEC 全名是 Common Attack Pattern Enumeration and Classification。它是一份公開的攻擊模式目錄,用來整理攻擊者利用已知 weakness 時常見的做法、前置條件、執行流程與緩解方向。
例如:
CAPEC-66:SQL InjectionCAPEC-63:Cross-Site ScriptingCAPEC-100:Overflow BuffersCAPEC-139:Relative Path Traversal名稱和常見漏洞類型很接近,閱讀角度卻不同。CWE-89 說明「SQL 指令中沒有正確中和特殊元素」這個 weakness;CAPEC-66 關心攻擊者如何構造輸入、操弄 SQL query,最後讀取或修改資料。
如果廚房的瓦斯管線接錯,CWE 比較像記錄設計或施工缺陷;CAPEC 則像整理有人會如何利用這個缺陷製造火災,以及過程中需要哪些條件。
前者適合開發、修補與根因分析,後者適合 threat modeling、攻擊情境設計與防禦驗證。
一筆 attack pattern 不只有名稱。依條目而異,可能包含 abstraction、description、likelihood、severity、prerequisites、skills required、resources required、execution flow、consequences、mitigations,以及與 CWE 或其他 CAPEC 的關係。
其中 execution flow 特別有用。它可能把攻擊拆成 Explore、Experiment、Exploit 等階段,讓讀者看到攻擊者不是突然送出完美 payload,而是先找入口、測試行為,再完成利用。
CAPEC 與 MITRE ATT&CK 都描述 adversary behavior,但使用情境不同。CAPEC 偏向 application security,整理如何利用 cyber-enabled capabilities 中的 weakness;ATT&CK 更偏向企業、行動裝置與 ICS 環境中,攻擊者在作戰生命週期使用的 tactics 與 techniques。
一個 SQL Injection 的利用方法適合 CAPEC;攻擊者取得 foothold 後如何 credential dumping、lateral movement,則更接近 ATT&CK。
不一定。CVE Record 的核心工作是識別與描述具體漏洞,CWE 常用來表示漏洞類型或原因;CAPEC 則適合在需要補充攻擊情境時使用。沒看到 CAPEC,不用急著覺得這筆 Record 少了什麼。
也不要看到 CWE 就機械式挑第一個 related CAPEC。CWE 與 CAPEC 可能是多對多關係,具體漏洞是否真的符合某個攻擊模式,仍要看 prerequisites 與 execution flow。
明天會繼續打開一筆 CAPEC,看看它如何把攻擊者行為拆成可閱讀、可驗證的步驟。