1. 왜 Threat Modeling인가 — 코드 작성 전에 막아야 한다
보안 결함을 발견하는 단계별 수정 비용(IBM·Ponemon 2024):
- 설계 단계: 1
- 개발 단계: 6.5
- 테스트 단계: 15
- 운영 단계: 100
- 운영 후 침해: 400+
설계 단계의 1시간 위협 모델링이 운영 후 400배 손실을 차단한다. NIST SSDF PW.1·PW.2가 위협 모델링을 보안 SDLC의 첫 통제로 지정한 이유.
Threat Modeling = 시스템 설계 후·코드 작성 전, 무엇을 보호할지·누가 공격할지·어떻게 막을지를 구조적으로 분석하는 활동. Shostack(전 MS)의 4-Question Framework가 핵심:
- What are we working on? — 시스템·DFD
- What can go wrong? — 위협 도출
- What are we going to do about it? — 완화·통제
- Did we do a good job? — 검증·반복
오해 1 — “보안팀만 하면 된다.” 위협 모델링은 개발자가 주도하고 보안팀이 가이드. 오해 2 — “한 번 하면 끝.” 시스템 변경 시마다 반복(Agile은 매 Sprint, Waterfall은 매 Phase). 오해 3 — “복잡한 방법론만 정답.” Shostack 4-Question만으로도 80% 효과, 형식보다 실행이 중요.
Threat Modeling Manifesto(2020.11, 12명 보안 전문가 공동): 가치 4·원칙 5 — 도구보다 가치, 가시성보다 협업 등.
2. 주요 방법론 비교
| 방법론 | 발표 | 대상 | 특징 | 단계 |
|---|---|---|---|---|
| STRIDE | Microsoft 1999 | 보안 일반 | 6 위협 카테고리 | DFD → STRIDE-per-element |
| PASTA | VerSprite 2012 | 비즈니스 중심 | 비즈니스 영향 강조 | 7 Stages |
| LINDDUN | KU Leuven 2010 | 개인정보 | 프라이버시 7 위협 | LINDDUN GO/PRO/MAESTRO |
| OCTAVE Allegro | CMU/SEI 2007 | 자산 중심 | 위험 평가 | 8 단계 |
| Trike | 2005 | 자동화 친화 | 행위자·자원·행위 매트릭스 | 4 단계 |
| VAST | ThreatModeler 2016 | 대규모 | Agile·확장성 | 두 가지 모델(Application·Operational) |
| Attack Tree | Schneier 1999 | 시각화 | 공격 목표 → 하위 단계 | 트리 분해 |
| kill chain | Lockheed Martin 2011 | APT | 7 단계 사이버 킬체인 | Recon→…→Action |
| MITRE ATT&CK | MITRE 2013 | TTPs | 600+ 기법 매트릭스 | 14 Tactics |
선택 가이드:
- 첫 도입·웹앱·일반: STRIDE
- 비즈니스 임원 보고 동반: PASTA
- 개인정보 처리: LINDDUN
- 시각화·이해관계자 설명: Attack Tree
- 보안 운영·SOC: MITRE ATT&CK
대부분의 조직은 STRIDE + Attack Tree + ATT&CK 조합.
3. STRIDE 상세 — 6 위협 카테고리
| 약어 | 위협 | 위반 속성 | 예시 |
|---|---|---|---|
| S | Spoofing | Authentication | 가짜 사용자·세션 탈취·DNS 위조 |
| T | Tampering | Integrity | DB 변조·중간자 변경·바이너리 패치 |
| R | Repudiation | Non-repudiation | 로그 삭제·서명 부인 |
| I | Information Disclosure | Confidentiality | DB 노출·로그 PII·메모리 덤프 |
| D | Denial of Service | Availability | DDoS·자원 고갈·랜섬웨어 |
| E | Elevation of Privilege | Authorization | sudo 우회·SQL Injection→Admin |
STRIDE-per-element: DFD 요소 종류별 적용 가능 위협:
- External Entity: S·R
- Process: S·T·R·I·D·E (전부)
- Data Flow: T·I·D
- Data Store: T·R·I·D
도구:
- Microsoft Threat Modeling Tool(무료) — STRIDE 자동 적용
- OWASP Threat Dragon(무료·웹·VSCode) — STRIDE·LINDDUN·CIA
- IriusRisk(상용) — 표준 라이브러리 풍부
- pytm(오픈소스) — 코드 기반 위협 모델링(Python)
- Cairis(오픈소스) — 위협+요구사항 통합
- ThreatModeler(상용) — VAST·대규모
4. PASTA·LINDDUN·Attack Tree 핵심
PASTA(Process for Attack Simulation and Threat Analysis) — 7 Stages:
- Define Objectives: 비즈니스 목표·법규
- Technical Scope: 시스템·아키텍처
- Application Decomposition: 컴포넌트·신뢰 경계
- Threat Analysis: 위협 인텔·실제 공격자 모방
- Vulnerability Identification: 취약점·결함
- Attack Modeling: 공격 경로·Attack Tree
- Risk/Impact Analysis: 비즈니스 영향·우선순위
LINDDUN — Privacy Threats:
| 약어 | 위협 |
|---|---|
| L | Linkability (연결가능성) |
| I | Identifiability (식별가능성) |
| N | Non-repudiation (Privacy 관점: 익명성 침해) |
| D | Detectability (탐지가능성) |
| D | Disclosure of Information (정보 노출) |
| U | Unawareness (자기정보 인지 결여) |
| N | Non-compliance (정책 위반) |
LINDDUN 변형:
- LINDDUN GO: 카드 기반 라이트
- LINDDUN PRO: 전체 7 단계
- LINDDUN MAESTRO(2024): AI/ML 시스템 전용
Attack Tree (Bruce Schneier):
- 루트: 공격자 목표 (예: “고객 DB 탈취”)
- 하위: 달성 방법 (AND·OR 게이트)
- 잎: 구체적 공격 (예: “SQL Injection”)
- 각 잎에 비용·확률·기술 수준 표시
5. Stage 1 — 자산·DFD·신뢰경계 (1~2주/시스템)
시스템 식별:
- 대상 범위: 단일 마이크로서비스·전체 앱·도메인
- 비즈니스 가치(High/Medium/Low)
- 데이터 분류(Public/Internal/Confidential/Restricted)
- 컴플라이언스 요구(PCI·GDPR·HIPAA·ISMS-P)
DFD(Data Flow Diagram) 작성:
- Level 0 — 컨텍스트 다이어그램
- Level 1 — 주요 프로세스
- Level 2 — 세부 프로세스(필요 시)
- 요소: External Entity(사각)·Process(원)·Data Store(이중선)·Data Flow(화살표)
- 신뢰 경계(Trust Boundary) 점선 — 사용자/서버, 서버/DB, 내부/외부
도구:
- Draw.io·Visio·Lucidchart로 DFD
- OWASP Threat Dragon DFD 내장
- Microsoft TMT — Visio 스타일
예시 DFD (간단 웹앱):
- 사용자(EE) → HTTPS → 웹서버(P) → JDBC → DB(DS)
- 신뢰 경계: 사용자/웹서버, 웹서버/DB
6. Stage 2 — 위협 도출 (STRIDE·LINDDUN) (2~3주)
STRIDE-per-element 적용:
- 각 DFD 요소·Data Flow에 STRIDE 6 위협 후보 검토
- “이 Process에서 Spoofing이 가능한가?” 식 질문
- 각 위협에 CWE 매핑 — 예: Spoofing → CWE-287(부적절한 인증)
- 위협 카탈로그 작성:
- ID·요소·STRIDE·CWE·시나리오·전제조건·영향·발견 위치
개인정보 처리 시스템 — LINDDUN 추가:
- 동의 메커니즘·익명화·로그 보관·정보주체 권리
MITRE ATT&CK 매핑:
- 위협 시나리오 → Tactic·Technique
- “Initial Access(TA0001) - Phishing(T1566)” 등
- 실제 공격자 TTPs 기반 검증
Attack Tree 시각화(중요 위협):
- 루트: “사용자 인증 우회”
- 분기: ① 패스워드 탈취 / ② 세션 하이재킹 / ③ 인증 로직 우회
- 각 잎: 구체 공격·비용·난이도
7. Stage 3 — 위험 점수·완화 통제 (1~2주)
위험 점수:
- DREAD(낡음, 권장 X): Damage·Reproducibility·Exploitability·Affected·Discoverability
- CVSS v4.0: 동적 평가에 적합
- Likelihood × Impact 5×5 매트릭스: 직관적, 임원 보고 적합
완화 4가지 옵션 (NIST RMF·ISO 27005):
- Mitigate(완화): 통제 추가
- Transfer(전가): 사이버보험·외주
- Avoid(회피): 기능 제거·재설계
- Accept(수용): 잔존 위험 문서화·승인
STRIDE별 완화 패턴:
| STRIDE | 완화 통제 |
|---|---|
| Spoofing | MFA·FIDO2·인증서·OAuth |
| Tampering | HMAC·TLS·서명·Hash·WAF |
| Repudiation | 로그·감사 추적·디지털 서명 |
| Info Disclosure | 암호화(전송·저장)·DLP·접근통제 |
| Denial of Service | Rate Limit·Auto-scaling·CDN·DDoS 방어 |
| Elevation | 최소권한·RBAC/ABAC·입력 검증·Sandbox |
OWASP ASVS 5.0 통제 카탈로그 → 위협별 ASVS 요구사항 ID 매핑.
완화 통제 백로그:
- 우선순위 (HIGH·MEDIUM·LOW)
- 담당자·기한
- 구현 검증 방법
8. Stage 4 — 검증·재방문 (지속)
검증 (Did we do a good job?):
- 코드 리뷰: 위협별 통제 구현 확인
- SAST/DAST/IAST: 자동 검증
- Pentest: 외부 검증
- Red Team Exercise: 실제 공격 시나리오
- Bug Bounty: 외부 연구자
- Purple Team: Red+Blue 합동
재방문 트리거:
- 신규 기능 추가
- 아키텍처 변경(클라우드 이전 등)
- 신규 위협(예: AI 위협)
- 인시던트 발생 후
- 6개월 정기 검토
CI/CD 통합 — Threat Modeling as Code:
- pytm(Python) — 코드로 DFD·STRIDE 자동
from pytm import TM, Server, Datastore, Dataflow, Boundary
tm = TM("MyApp")
internet = Boundary("Internet")
server = Server("WebServer")
db = Datastore("UserDB")
dataflow = Dataflow(server, db, "User Query")
tm.process()
- threagile(Go·오픈소스) — YAML로 정의, 자동 리포트
- IriusRisk·SD Elements API 통합
9. Stage 5 — 거버넌스·확장·고도화 (지속)
거버넌스 체계:
- Threat Modeling 표준 문서·템플릿
- 위협 카탈로그 라이브러리(자체+OWASP·MITRE)
- 보안 챔피언(Security Champion) 프로그램 — 각 팀 1명 위협 모델링 가능자
- 분기 보안 회고 — 발견된 위협·완화 효과
확장:
- 기존 시스템 백로그 — Tier 1 자산부터 위협 모델링
- M&A 시스템 — 인수 후 즉시
- 외주 시스템 — 계약에 위협 모델링 결과 제출 의무
고도화:
- AI/ML 위협: LINDDUN MAESTRO + OWASP LLM Top 10 + NIST AI RMF
- Cloud Threat Modeling: Cloud Threat Model Card(CNCF), CSA Cloud Threats
- OT/ICS: IEC 62443·MITRE ATT&CK for ICS·Process Hazard Analysis 통합
- Privacy-by-Design: LINDDUN 의무화
컴플라이언스 매핑:
- NIST SSDF PW.1·PW.2: 위협 모델링 + 디자인 리뷰
- ISO/IEC 27034: 애플리케이션 보안
- EU CRA Article 13: Cybersecurity by Design
- PCI DSS 6.5: 보안 코딩 + 위협 모델링
10. 비용·ROI
| 항목 | 비용 (연간) |
|---|---|
| 도구(Threat Dragon 무료, IriusRisk·SD Elements 3~30억) | 0~30억 |
| 교육·인증(SAFECode·SANS) | 1천~3천만 |
| 보안 챔피언 프로그램(시간) | 5천~3억 |
| 분기 위협 모델링 워크숍 | 5천~2억 |
| 펜테스트 검증 | 5천~5억 |
| 합계 (중견 제조사) | 2~40억 |
ROI:
- 설계 단계 1시간 = 운영 후 400시간 절감
- 침해사고 1건 평균 38억(IBM 2024 한국) 예방
- NIST SSDF 자가증명 100% 충족 — 미 연방 조달 진입
- EU CRA Cybersecurity by Design 매핑
- 사이버보험 — 위협 모델링 운영 시 10~20% 할인
11. 자가 점검
- Shostack 4-Question 프레임워크 적용
- DFD 작성 표준
- 신뢰 경계 명시
- STRIDE-per-element 적용
- LINDDUN(개인정보 처리 시)
- Attack Tree 중요 위협 시각화
- MITRE ATT&CK 매핑
- CWE·CVE·CVSS 매핑
- 위협 카탈로그 라이브러리
- 완화 통제 우선순위 백로그
- SAST·DAST·펜테스트 검증
- 보안 챔피언 프로그램
- 시스템 변경 시 위협 모델링 재실시
- CI/CD에 Threat Modeling as Code(pytm·threagile)
- AI/ML 시스템 LINDDUN MAESTRO
- OT/ICS 별도 위협 모델링
- NIST SSDF·EU CRA 매핑
12. 마무리 — 디자인 단계의 1시간이 운영의 400시간
위협 모델링은 ① 자산·DFD·신뢰 경계, ② STRIDE·LINDDUN 위협 도출, ③ 위험 점수·완화 통제, ④ 검증·재방문, ⑤ 거버넌스·확장 — 5단계로 SDLC 최상위 단계에 결합한다. 형식주의에 빠지지 말고 Shostack 4-Question부터 시작, 점진적으로 STRIDE → LINDDUN → ATT&CK 매핑까지 확장하면 보안 결함을 운영 전에 90%+ 차단할 수 있다.
통합 사이클
- OWASP Top 10·ASVS·SAMM
- NIST SSDF SP 800-218
- SLSA·OpenSSF·Sigstore
- CWE·CVSS·EPSS·KEV
- FIDO2·WebAuthn·Passkey
- Zero Trust Architecture
- ISO 27001 인증
- 한국 ISMS-P
- NIST CSF 2.0
- NIST AI RMF
- NIST Privacy Framework
- EU NIS2
- EU CRA
- EU AI Act
- EU GDPR
- HITRUST CSF
- CIS Controls v8.1
- MITRE ATT&CK
- IEC 62443 산업제어
- OT 사이버보안
- ISO/SAE 21434 자동차
