[Threat Thinker] 尝试 LLM-Based Threat Modeling
Source: Dev.to
介绍
大家好,我是 JJ (yuasa),一名安全工程师。
在本文中,我将尝试使用 Threat Thinker,这款基于 LLM 的自动化威胁建模工具,对多个不同系统进行分析。从基于 AWS 的系统到智能家居,我们将看看 LLM 如何从架构图中提取威胁。我的目标是让大家感受一下 LLM‑驱动的威胁建模是什么样子,并附上真实的输出结果。
什么是 Threat Thinker?
Threat Thinker 是一款利用 LLM 从系统架构图自动生成威胁模型的工具。它可以解析多种图形格式,包括 Mermaid、draw.io、架构图截图以及 OWASP Threat Dragon。通过分析组件之间的关系,它能够推断潜在的威胁。
在传统的威胁建模中,拥有架构图后,开发者和安全工程师需要手动逐一审查并识别威胁。根据我的经验,威胁大致可以分为两类:
- 基础威胁:几乎所有系统都会出现的通用威胁
- 系统特定威胁:只有在深入了解规格和实现细节后才会注意到的威胁
使用 Threat Thinker,你可以自动化识别这些“基础威胁”。随后,人类可以把精力放在更深层次的“系统特定威胁”分析以及对策设计上。它同时提供 CLI 和 Web UI,两者都能让非安全专业人士轻松上手。

试用 Threat Thinker
我们将使用 Threat Thinker 对三种场景进行威胁识别:基于 AWS 的系统、企业网络以及智能家居。对每一种情况,我们都会把架构图输入 Threat Thinker,观察它提取出的威胁。
基于 AWS 的系统
系统架构
graph LR
%% Trust boundaries
subgraph Internet
user[User]
end
subgraph AWS_Edge[Edge]
cf[CloudFront]
end
subgraph VPC[VPC]
subgraph PublicSubnet[Public subnet]
alb[ALB]
end
subgraph PrivateSubnet[Private subnet]
ecs[ECS Service]
rds[(Customer RDS
PII)]
s3[(S3 Bucket
Logs/Uploads)]
end
end
%% Data flows
user -- sends HTTPS request --> cf
cf -- forwards HTTPS request --> alb
alb -- routes HTTP request --> ecs
ecs -- reads/writes data (SQL/TLS) --> rds
ecs -- stores/reads objects (S3 API) --> s3
运行 Threat Thinker(CLI)
threat-thinker think \
--diagram path/to/diagram/system.mmd \
--infer-hints \
--topn 5 \
--llm-api openai \
--llm-model gpt-4.1 \
--out-dir path/to/report/dir
提取的威胁
| ID | 威胁描述 | 严重性 | STRIDE | 受影响组件 | 分数 |
|---|---|---|---|---|---|
| T001 | ALB 到 ECS 路径可能缺少身份验证/授权 | 高 | 欺骗 / 权限提升 | ALB → ECS | 8.0 |
| T002 | ALB 与 ECS 之间的未加密流量可能导致篡改与信息泄露 | 高 | 篡改 / 信息泄露 | ALB → ECS | 8.0 |
| T003 | RDS 中的 PII 在未明确启用静态加密的情况下暴露 | 高 | 信息泄露 | ECS ↔ RDS | 7.0 |
| T004 | 对敏感操作的日志记录和监控不足 | 中 | 否认 | ECS / RDS / S3 | 6.0 |
| T005 | S3 Bucket 可能配置错误,导致内部数据泄露 | 中 | 信息泄露 | S3 | 6.0 |


企业网络
系统架构

运行 Threat Thinker(Web UI)
$ threat-thinker webui
ℹ️ Starting Threat Thinker Web UI
* Running on local URL: http://127.0.0.1:7860
* To create a public link, set `share=True` in `launch()`.
- 在浏览器中打开 Web UI。
- 粘贴 draw.io(XML)图形源码,Diagram Format 选择
drawio。 - 根据需要配置选项,点击 Generate Report。
(UI 步骤的截图为节省篇幅已省略。)