[Threat Thinker] 尝试 LLM-Based Threat Modeling

发布: (2025年12月11日 GMT+8 14:06)
4 min read
原文: Dev.to

Source: Dev.to

介绍

大家好,我是 JJ (yuasa),一名安全工程师。

在本文中,我将尝试使用 Threat Thinker,这款基于 LLM 的自动化威胁建模工具,对多个不同系统进行分析。从基于 AWS 的系统到智能家居,我们将看看 LLM 如何从架构图中提取威胁。我的目标是让大家感受一下 LLM‑驱动的威胁建模是什么样子,并附上真实的输出结果。

什么是 Threat Thinker?

Threat Thinker 是一款利用 LLM 从系统架构图自动生成威胁模型的工具。它可以解析多种图形格式,包括 Mermaiddraw.io、架构图截图以及 OWASP Threat Dragon。通过分析组件之间的关系,它能够推断潜在的威胁。

在传统的威胁建模中,拥有架构图后,开发者和安全工程师需要手动逐一审查并识别威胁。根据我的经验,威胁大致可以分为两类:

  • 基础威胁:几乎所有系统都会出现的通用威胁
  • 系统特定威胁:只有在深入了解规格和实现细节后才会注意到的威胁

使用 Threat Thinker,你可以自动化识别这些“基础威胁”。随后,人类可以把精力放在更深层次的“系统特定威胁”分析以及对策设计上。它同时提供 CLI 和 Web UI,两者都能让非安全专业人士轻松上手。

Automatically identifying basic threats from an architecture diagram

试用 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受影响组件分数
T001ALB 到 ECS 路径可能缺少身份验证/授权欺骗 / 权限提升ALB → ECS8.0
T002ALB 与 ECS 之间的未加密流量可能导致篡改与信息泄露篡改 / 信息泄露ALB → ECS8.0
T003RDS 中的 PII 在未明确启用静态加密的情况下暴露信息泄露ECS ↔ RDS7.0
T004对敏感操作的日志记录和监控不足否认ECS / RDS / S36.0
T005S3 Bucket 可能配置错误,导致内部数据泄露信息泄露S36.0

Extracted architecture graph

Visualizing where threats exist in the architecture

企业网络

系统架构

Corporate network architecture diagram

运行 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()`.
  1. 在浏览器中打开 Web UI。
  2. 粘贴 draw.io(XML)图形源码,Diagram Format 选择 drawio
  3. 根据需要配置选项,点击 Generate Report

(UI 步骤的截图为节省篇幅已省略。)

Back to Blog

相关文章

阅读更多 »