模型 / 資料集
mrwadams/stride-gpt avatar
mrwadams/stride-gpt

STRIDE GPT:把威脅模型從會議室搬進終端機

An AI-powered threat modeling tool that leverages OpenAI's GPT models to generate threat models for a given application based on the STRIDE methodology.

1,123 個 Star324 個 ForkPythonMIT

秒懂

它是什麼?
這是一個以 STRIDE 方法論為骨架、由 LLM 生成威脅模型與攻擊樹的 Python 工具,同時提供 Streamlit 網頁介面與 CLI/REPL。它的價值在於把架構圖、DFD 與程式碼庫變成可餵給模型的結構化輸入,而不是取代威脅建模的判斷。
適合誰用?
如果你已經有明確的系統描述、架構圖或程式碼庫,而且想要一份可以進版控、可以貼進 PR 的 STRIDE 清單,STRIDE GPT 值得在試跑環境裝起來,先用 stride-gpt --version 確認版本,再跑一次 CLI /analyze 看它的 DFD 與你的認知差多少。如果你期待它替你做資產盤點、信任邊界判定或風險接受決策,那它幫不上忙,因為輸入的完整度決定輸出的完整度。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

它要解決的是威脅建模的起手式,不是威脅建模本身

威脅建模最常卡住的地方不是分析,是空白頁。團隊知道要列資產、畫信任邊界、逐項套 STRIDE,但真正坐下來時,往往只有一份模糊的架構描述,然後花兩小時爭論「這個算不算 Spoofing」。STRIDE GPT 針對的就是這一段:README 說明使用者提供應用類型、驗證方式、是否對外暴露、是否處理敏感資料,模型再依這些資訊產生輸出。它把「先有一份草稿」的成本壓到接近零,讓討論從審閱草稿開始,而不是從零開始。

適用對象是應用安全工程師、負責設計審查的架構師,以及需要在短時間內對多個子系統產出初稿的人。它不適合當成合規交付物:README 明講 No data storage,應用細節不會被保存,這對隱私是好事,但也意味著它不具備可追溯的審查紀錄,誰在什麼版本、用什麼模型、基於哪份描述產生這份模型,都得靠你自己在外部留下。

輸入的形狀決定輸出的形狀:XML、Mermaid 與程式碼庫三條路

這個工具的關鍵設計在於它並不只吃自然語言。README 列出多模態輸入,架構圖與流程圖可以作為威脅建模的輸入;但更有意思的是內嵌的 draw.io 編輯器,說明文件指出圖會以 XML 解析,抽出元件、連線與信任邊界,並強調這比單純的影像分析提供顯著更豐富的脈絡。這是一個很實際的判斷:視覺模型看圖會猜,XML 解析拿到的是節點與邊。

第二條路是資料流程圖。README 說明可以從應用描述生成 DFD,或解析上傳的 DFD 影像,Mermaid 原始碼可以即時編輯,確認後的圖會被當成權威的系統模型,回饋進 Threat Model 與 Attack Tree 的提示。CLI 的 /analyze 也會在輸出旁附上系統層級 DFD。第三條路是程式碼庫:agentic codebase analysis 讓 CLI 指向一個 repo,由 agent 自行規劃、探索並跨子系統彙整發現。這三條路對應三種成熟度,描述最省事但最模糊,DFD 需要你先想清楚,程式碼庫最貼近實況但耗時與 token 也最高。

值得一提的是架構樣式偵測,README 說它會從應用描述中自動辨識 RAG pipeline、multi-agent 系統、程式碼執行環境、工具生態系等,並註明靈感來自 CSA MAESTRO。這對 GenAI 與 agentic 系統的建模是加分項,因為傳統 STRIDE 對這類系統的資產定義本來就綁手綁腳。

模型輸出如何落到工程流程:ATT&CK、ATLAS 與 SARIF

純文字威脅清單很難進流程,所以這個專案在輸出格式上做了不少工。README 說明威脅會標註標準化的對手技術 ID:傳統基礎設施攻擊對應 MITRE ATT&CK Enterprise,ML 與 LLM 相關攻擊對應 ATLAS;在 markdown 中以欄位呈現,在 HTML 中以連結樣式的 pill 呈現,在 SARIF 中則是 mitre_attack 屬性。

輸出格式包含 Markdown、JSON、SARIF 與自帶樣式的 HTML。SARIF 的意義在於它可以匯入 GitHub、GitLab、Azure DevOps 與 IDE,也就是說威脅模型有機會以程式碼掃描告警的形式出現在 PR 上。這聽起來很順,但實際上要小心:SARIF 是為靜態分析結果設計的格式,把一份系統層級的威脅模型塞進去,會讓每一條威脅變成一個位置不明的 finding。如果你只是要分享給利害關係人,HTML 或 Markdown 更合適;SARIF 適合的是你真的打算在 CI 中追蹤這些項目的情境。

其他輸出還包括攻擊樹、建議的緩解措施、DREAD 風險評分,以及依威脅產生的 Gherkin 測試案例。Gherkin 這一項值得注意,因為它把威脅模型直接接到可執行的驗收條件,是少見的跨階段設計。

安裝與啟動:從 uv.lock 到 stride-gpt --version

套件以 Python 撰寫,授權為 MIT,預設分支是 master。安裝路徑有兩條,README 的安裝章節與 changelog 提供了線索:一般使用者走 pip install stride-gpt,changelog 明確寫道這條路不受影響;想要重現建置環境的人則用 uv,因為 v0.19 把依賴管理整合到 uv,uv.lock 成為唯一的依賴來源,原本重複的 requirements.txt 已退場,Docker UI 映像與安全掃描 workflow 都改由 uv export 從 uv.lock 安裝。

啟動後的行為可以先驗證:changelog 說明 stride-gpt --version 會印出已安裝版本並結束,互動式 TUI 的橫幅也會顯示目前版本。網頁介面是 Streamlit,官方託管在 stridegpt.streamlit.app,也可以自行部署,README 提到有 Docker container image 可用。

設定走環境變數。已知的鍵包括 STRIDE_GPT_DRAWIO_URL,用於把內嵌的 draw.io 編輯器從預設的 embed.diagrams.net 指向自架或氣隙環境的實例。模型供應商透過 LiteLLM 串接,README 列出 OpenAI、Anthropic、Google AI、Mistral、Groq、DeepSeek,以及以 LM Studio Server 進行的本地託管。進階推理模型方面,文件點名 OpenAI GPT-5.4/5.5 系列、Anthropic Claude 4.6/4.8 的 Extended Thinking、Google Gemini 3、Mistral Magistral 系列。要注意的是,README 沒有在可見範圍內列出對應的 API key 環境變數名稱,這部分需要自己查安裝章節。

CLI 與 REPL 才是這個專案的主線

網頁介面讓它容易被歸類成展示型專案,但 v0.19 的 changelog 把重心講得很清楚:CLI 與互動式 REPL 提供 tab completion、history 與即時進度,README 的用法章節還附了一份 REPL cheat sheet。對工程團隊而言,這一條路線的意義是威脅模型可以被腳本化,可以掛在 CI 上,可以在本機對同一個 repo 反覆重跑。

CLI 的 /analyze 指令是 agentic codebase analysis 的入口,README 說它會在發現之外附上一份系統層級 DFD。這個組合值得注意:你拿到的不只是威脅清單,還有一份可以拿去和團隊核對的系統模型。如果那份 DFD 和你的認知不一致,問題通常出在程式碼庫的探索範圍,而不是模型本身。

但也要說清楚,agentic 分析的成本結構和單次提示不同。它會規劃、探索、跨子系統彙整,代表多次模型呼叫。README 沒有提供任何 token 用量或執行時間的數字,所以實際成本必須在自己環境量測,不能從文件推估。

什麼時候它是錯的工具

第一個限制是輸出取決於輸入。README 開頭就說明模型是基於使用者提供的資訊產生輸出,這意味著你沒說的東西它不會知道。如果應用描述裡沒提到某個內部服務之間的信任關係,威脅清單就不會出現對應的項目。把它當成遺漏檢查器會失望,它更像是一面鏡子,照出你描述的完整度。

第二個限制是它不保存任何資料。No data storage 對敏感環境是優點,但同時代表沒有歷史紀錄、沒有版本比較、沒有審查軌跡。要用在需要留存證據的流程,你得自己在外部處理。

第三個限制是模型依賴。它透過 LiteLLM 支援多家供應商,這降低了鎖定風險,但反過來說,輸出品質會隨你選的模型而變動,而 README 並沒有提供跨模型的比較資料。同一份描述換一個模型,威脅清單的顆粒度可能完全不同。

第四個限制是空氣間隙環境。內嵌 draw.io 預設從 embed.diagrams.net 載入,雖然可以用 STRIDE_GPT_DRAWIO_URL 指向自架實例,但這代表完全離線的部署需要你先準備好一個 diagrams.net 實例,不是設個變數就結束。至於 LLM 本身,若要用本地模型,README 指向 LM Studio Server,這條路的建模品質需要自行驗證。

替代方案:Threat Dragon 與純 LLM 提示的差異

最直接的替代是 OWASP Threat Dragon。它是一套圖形化的威脅建模工具,核心是讓你手動繪製 DFD、手動在圖上標記威脅,並套用規則引擎產生威脅清單。差異在於控制權的位置:Threat Dragon 把判斷留在人手上,工具負責結構與規則;STRIDE GPT 把判斷交給模型,工具負責把脈絡餵進去。前者產出穩定、可重現,但你需要先具備建模能力;後者起手快,但每次輸出的變異較大。

另一個常見做法是直接用 LLM 的網頁介面貼上系統描述,要求它套 STRIDE。這條路的差別在於工程化程度:STRIDE GPT 提供 DFD 的 Mermaid 中間格式、draw.io 的 XML 解析、ATT&CK 與 ATLAS 的技術 ID 標註、SARIF 輸出,以及可腳本化的 CLI。這些不是模型能力,是把它接進流程的管線。如果你只是偶爾做一次建模,直接提示就夠;如果你要對多個 repo 重複執行,管線的價值才會顯現。

選擇的關鍵問題是:你要的是一份可以反覆重跑的產物,還是一次性的討論素材。前者選 STRIDE GPT,後者其實不需要工具。

維護成本與授權的實際面

授權是 MIT,這對商業內部使用與 fork 都很寬鬆,README 也明確引導企業走這條路,提供 Operationalization Guide,說明如何注入組織的安全控制與標準、依合規需求客製威脅模型、fork 並在內部部署。這裡的訊號很清楚:作者預期企業會 fork,而不是期待上游接受所有客製需求。fork 的代價是你得自己跟上游同步,而 v0.19 把依賴集中到 uv.lock 之後,同步的介面變得更單純,因為依賴漂移的來源少了一個。

維護節奏方面,可見的最近版本是 v0.19.0,最後推送時間為 2026-09-07。README 的 changelog 顯示這個專案持續在動,v0.19 加入 --version、整合 uv、補文件,v0.18 加入內嵌 draw.io 編輯器。這些都是介面與工程面的改進,不是模型能力宣稱。

需要自己承擔的成本有三塊:模型 API 的費用,因為 agentic 分析會多次呼叫;自架 draw.io 實例的維運,如果你在氣隙環境;以及把 SARIF 接進 CI 之後的告警管理。這三項 README 都沒有給數字或建議做法,屬於採用者要自行設計的部分。

編輯結論

如果你已經有明確的系統描述、架構圖或程式碼庫,而且想要一份可以進版控、可以貼進 PR 的 STRIDE 清單,STRIDE GPT 值得在試跑環境裝起來,先用 stride-gpt --version 確認版本,再跑一次 CLI /analyze 看它的 DFD 與你的認知差多少。如果你期待它替你做資產盤點、信任邊界判定或風險接受決策,那它幫不上忙,因為輸入的完整度決定輸出的完整度。採用前先確認三件事:你打算接哪個供應商與模型、你的架構圖能不能轉成它認得的 XML 或 Mermaid、以及 SARIF 進到你的 CI 之後要怎麼處理重複告警。

官方來源

  1. License: MIT
  2. mrwadams/stride-gpt on GitHub
  3. Project website
  4. README
  5. Releases
社群筆記

社群筆記