這篇 GitHub 資源文章介紹的是「威脅建模」,文章把它定義成一套有系統的方法,用來在軟體應用程式與 IT 系統正式出問題之前,先找出、分析並降低潛在的資安風險。文章強調重點在於「事前預防」而不是「事後補救」:與其等系統上線被攻擊後才處理,不如在設計階段就先假設有人要攻擊系統,提早找出架構上的弱點並加以修正。
文章介紹了幾套具體的分析框架。STRIDE 把威脅分成六大類:偽冒身分、竄改資料、否認行為、資訊洩漏、阻斷服務、以及權限提升;DREAD 則是用五個面向(造成的損害、可重現性、可利用性、受影響使用者數、可被發現的程度)為威脅評分排序;PASTA 被形容為「以風險為核心、透過模擬攻擊來找出威脅並管理風險」的框架。文章也提到 OCTAVE、TRIKE、VAST 與 NIST 等其他方法。實際執行上分三步驟:先用元件圖把系統畫出來建模、再依照這些方法論做威脅分析、最後用評分工具排出威脅的優先順序並訂出因應對策。文章也提到 Microsoft Threat Modeling Tool 與 OWASP Threat Dragon 這類視覺化工具,可以用來畫出 API、相依套件與資料庫之間的關係。
文章指出,威脅建模的好處是能提早發現問題以降低修補成本,同時讓團隊更了解自己系統的架構,也促成開發、資安、維運等不同角色之間的合作討論,並能隨著新的攻擊手法出現而持續調整防禦策略。這也是為什麼資安圈常把威脅建模視為軟體開發流程中很基本、卻常被忽略的一步。
這篇文章比較偏資安與軟體工程的實務做法,對剛開始學程式的孩子來說門檻略高,但背後的觀念很值得記住:寫程式時養成「先想想這裡可能會被誰用什麼方式弄壞」的習慣,比出問題後才補救更聰明,這種思考方式在往後學習資安或做任何專案時都用得到。
資安軟體工程開發工具