[Threat Thinker] LLM 기반 위협 모델링 시도
Source: Dev.to
소개
안녕하세요, 저는 JJ (yuasa)이며 보안 엔지니어입니다.
이 글에서는 LLM을 활용한 자동 위협 모델링 도구인 Threat Thinker를 여러 시스템에 적용해 보겠습니다. AWS 기반 시스템부터 스마트 홈까지, LLM이 아키텍처 다이어그램에서 어떻게 위협을 도출하는지 살펴볼 것입니다. 실제 출력 결과를 포함해 LLM 기반 위협 모델링이 어떤 모습인지 감을 잡으시길 바랍니다.
Threat Thinker란?
Threat Thinker는 시스템 아키텍처 다이어그램을 입력받아 LLM을 이용해 자동으로 위협 모델링을 수행하는 도구입니다. Mermaid, draw.io, 아키텍처 다이어그램 스크린샷, OWASP Threat Dragon 등 다양한 형식의 다이어그램을 파싱할 수 있습니다. 컴포넌트 간 관계를 분석해 잠재적인 위협을 추론합니다.
전통적인 위협 모델링에서는 아키텍처 다이어그램을 만든 뒤 개발자와 보안 엔지니어가 일일이 위협을 찾아야 합니다. 경험상 위협은 크게 두 종류로 나뉩니다.
- 기본 위협 – 거의 모든 시스템에 존재할 수 있는 위협
- 시스템‑특화 위협 – 해당 시스템의 사양과 구현 세부 사항을 깊이 이해해야만 발견되는 위협
Threat Thinker를 사용하면 이러한 “기본 위협”을 자동으로 식별할 수 있습니다. 이후 사람은 “시스템‑특화 위협”을 더 깊게 분석하고 대응 방안을 설계하는 데 집중하면 됩니다. CLI와 웹 UI를 모두 제공하므로 보안 비전문가도 큰 어려움 없이 사용할 수 있습니다.

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 경로에 인증/인가가 부족할 가능성 | 높음 | Spoofing / EoP | ALB → ECS | 8.0 |
| T002 | ALB와 ECS 사이의 트래픽이 암호화되지 않아 변조 및 정보 노출 위험 | 높음 | Tampering / Info Disc. | ALB → ECS | 8.0 |
| T003 | RDS에 저장된 PII가 암호화되지 않은 상태로 노출될 가능성 | 높음 | Info Disclosure | ECS ↔ RDS | 7.0 |
| T004 | 민감한 작업에 대한 로깅 및 모니터링이 충분하지 않음 | 중간 | Repudiation | ECS / RDS / S3 | 6.0 |
| T005 | S3 버킷 설정 오류로 내부 데이터가 외부에 노출될 가능성 | 중간 | Info Disclosure | 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()`.
- 브라우저에서 웹 UI를 엽니다.
- draw.io (XML) 다이어그램 소스를 복사해 붙여넣고 Diagram Format을
drawio로 설정합니다. - 필요에 따라 옵션을 조정한 뒤 Generate Report 버튼을 클릭합니다.
(UI 단계에 대한 스크린샷은 생략했습니다.)