Threat Modeling — 위협 모델링 방법론 가이드
시스템의 보안 위협을 체계적으로 식별하고 평가하는 프레임워크.
STRIDE 위협 분류
| 위협 |
설명 |
보안 속성 |
대응 패턴 |
| Spoofing |
신원 위장 |
인증 |
MFA, 인증서 |
| Tampering |
데이터 변조 |
무결성 |
HMAC, 디지털 서명, 체크섬 |
| Repudiation |
행위 부인 |
부인 방지 |
감사 로그, 타임스탬프 |
| Information Disclosure |
정보 누출 |
기밀성 |
암호화, 접근 제어 |
| Denial of Service |
서비스 거부 |
가용성 |
Rate Limiting, 오토스케일링 |
| Elevation of Privilege |
권한 상승 |
인가 |
RBAC, 최소 권한 원칙 |
STRIDE 적용 절차
Step 1: 시스템 분해 (DFD 작성)
┌────────┐ HTTPS ┌──────────┐ SQL ┌─────────┐
│ Browser │ ──────────→ │ Web App │ ────────→ │ DB │
│(외부) │ ←────────── │(Trust │ ←──────── │(Trust │
└────────┘ │ Boundary)│ │Boundary)│
└────┬─────┘ └─────────┘
│ REST API
▼
┌──────────┐
│ 외부 PG │
│(외부) │
└──────────┘
Trust Boundary(신뢰 경계)에서 위협이 발생한다.
Step 2: 요소별 STRIDE 분석
## Browser → Web App (HTTPS)
| 위협 | 시나리오 | 위험도 | 대응 |
|------|---------|--------|------|
| S | 세션 하이재킹 | 높음 | HttpOnly, Secure 쿠키 |
| T | 중간자 공격 | 높음 | TLS 1.3, HSTS |
| R | 익명 요청 | 중간 | 요청 로깅, 인증 필수 |
| I | 전송 중 도청 | 높음 | TLS |
| D | DDoS | 높음 | WAF, Rate Limiting |
| E | 관리자 API 접근 | 높음 | 역할 기반 접근 제어 |
DREAD 위험 평가
각 항목 1~10점 평가:
D (Damage): 피해 규모
R (Reproducibility): 재현 용이성
E (Exploitability): 공격 용이성
A (Affected Users): 영향 사용자 비율
D (Discoverability): 발견 용이성
위험도 = (D + R + E + A + D) / 5
등급:
├── 8~10: Critical (즉시 대응)
├── 5~7: High (계획된 수정)
├── 3~4: Medium (모니터링)
└── 1~2: Low (수용)
예시 평가
위협: SQL Injection in Login API
├── Damage: 9 (전체 DB 탈취 가능)
├── Reproducibility: 8 (자동화 도구 존재)
├── Exploitability: 7 (공개 PoC 다수)
├── Affected Users: 10 (전체 사용자)
├── Discoverability: 9 (자동 스캐너로 발견)
└── 위험도: (9+8+7+10+9)/5 = 8.6 → Critical
Attack Tree
목표: 관리자 권한 획득
├── OR: 인증 우회
│ ├── AND: SQL Injection + 약한 비밀번호 해시
│ ├── 세션 하이재킹
│ │ ├── OR: XSS로 쿠키 탈취
│ │ └── OR: 네트워크 스니핑 (HTTP)
│ └── 디폴트 관리자 계정
├── OR: 권한 상승
│ ├── IDOR (관리자 API 직접 호출)
│ ├── JWT 변조 (role 필드)
│ └── API Gateway 우회
└── OR: 사회공학
├── 관리자 피싱
└── 내부자 공모
공격 표면 분석
웹 애플리케이션 공격 표면
| 표면 |
요소 |
점검 항목 |
| 외부 API |
REST/GraphQL 엔드포인트 |
인증, 인가, 입력 검증 |
| 인증 |
로그인, 토큰, 세션 |
브루트포스, 세션 관리 |
| 파일 업로드 |
프로필, 첨부파일 |
파일 유형 검증, 경로 조작 |
| 제3자 연동 |
OAuth, Webhook, API |
SSRF, 토큰 노출 |
| 관리 인터페이스 |
Admin 패널, API |
접근 제어, 망 분리 |
| 데이터 저장 |
DB, 캐시, 로그 |
암호화, 접근 제어 |
위협 모델링 보고서 템플릿
# 위협 모델링 보고서
## 시스템 개요
- 아키텍처 다이어그램 (DFD)
- 신뢰 경계 식별
## 위협 목록
| ID | STRIDE | 위협 시나리오 | DREAD 점수 | 현재 대응 | 잔여 위험 |
|----|--------|-------------|-----------|----------|----------|
| T1 | S | 세션 하이재킹 | 7.2 | HttpOnly 쿠키 | 중간 |
| T2 | I | SQL Injection | 8.6 | 파라미터화 쿼리 | 낮음 |
## 공격 표면 요약
## 우선순위별 대응 계획
## 잔여 위험 수용 목록
1---2name: threat-modeling-23description: STRIDE, DREAD, Attack Tree 등 위협 모델링 방법론과 위협 식별·평가·대응 전략 수립 가이드. 'STRIDE', 'DREAD', '위협 모델링', 'threat modeling', '공격 트리', 'attack surface', '위협 식별', '보안 설계' 등 시스템 위협 분석 시 이 스킬을 사용한다. security-consultant와 pentest-reporter의 위협 분석 역량을 강화한다. 단, 실제 침투 테스트 실행이나 CVE 스캐닝은 이 스킬의 범위가 아니다.4---56# Threat Modeling — 위협 모델링 방법론 가이드78시스템의 보안 위협을 체계적으로 식별하고 평가하는 프레임워크.910## STRIDE 위협 분류1112| 위협 | 설명 | 보안 속성 | 대응 패턴 |13|------|------|----------|----------|14| **S**poofing | 신원 위장 | 인증 | MFA, 인증서 |15| **T**ampering | 데이터 변조 | 무결성 | HMAC, 디지털 서명, 체크섬 |16| **R**epudiation | 행위 부인 | 부인 방지 | 감사 로그, 타임스탬프 |17| **I**nformation Disclosure | 정보 누출 | 기밀성 | 암호화, 접근 제어 |18| **D**enial of Service | 서비스 거부 | 가용성 | Rate Limiting, 오토스케일링 |19| **E**levation of Privilege | 권한 상승 | 인가 | RBAC, 최소 권한 원칙 |2021## STRIDE 적용 절차2223### Step 1: 시스템 분해 (DFD 작성)2425```26┌────────┐ HTTPS ┌──────────┐ SQL ┌─────────┐27│ Browser │ ──────────→ │ Web App │ ────────→ │ DB │28│(외부) │ ←────────── │(Trust │ ←──────── │(Trust │29└────────┘ │ Boundary)│ │Boundary)│30 └────┬─────┘ └─────────┘31 │ REST API32 ▼33 ┌──────────┐34 │ 외부 PG │35 │(외부) │36 └──────────┘3738Trust Boundary(신뢰 경계)에서 위협이 발생한다.39```4041### Step 2: 요소별 STRIDE 분석4243```markdown44## Browser → Web App (HTTPS)45| 위협 | 시나리오 | 위험도 | 대응 |46|------|---------|--------|------|47| S | 세션 하이재킹 | 높음 | HttpOnly, Secure 쿠키 |48| T | 중간자 공격 | 높음 | TLS 1.3, HSTS |49| R | 익명 요청 | 중간 | 요청 로깅, 인증 필수 |50| I | 전송 중 도청 | 높음 | TLS |51| D | DDoS | 높음 | WAF, Rate Limiting |52| E | 관리자 API 접근 | 높음 | 역할 기반 접근 제어 |53```5455## DREAD 위험 평가5657```58각 항목 1~10점 평가:5960D (Damage): 피해 규모61R (Reproducibility): 재현 용이성62E (Exploitability): 공격 용이성63A (Affected Users): 영향 사용자 비율64D (Discoverability): 발견 용이성6566위험도 = (D + R + E + A + D) / 56768등급:69├── 8~10: Critical (즉시 대응)70├── 5~7: High (계획된 수정)71├── 3~4: Medium (모니터링)72└── 1~2: Low (수용)73```7475### 예시 평가7677```78위협: SQL Injection in Login API79├── Damage: 9 (전체 DB 탈취 가능)80├── Reproducibility: 8 (자동화 도구 존재)81├── Exploitability: 7 (공개 PoC 다수)82├── Affected Users: 10 (전체 사용자)83├── Discoverability: 9 (자동 스캐너로 발견)84└── 위험도: (9+8+7+10+9)/5 = 8.6 → Critical85```8687## Attack Tree8889```90목표: 관리자 권한 획득91├── OR: 인증 우회92│ ├── AND: SQL Injection + 약한 비밀번호 해시93│ ├── 세션 하이재킹94│ │ ├── OR: XSS로 쿠키 탈취95│ │ └── OR: 네트워크 스니핑 (HTTP)96│ └── 디폴트 관리자 계정97├── OR: 권한 상승98│ ├── IDOR (관리자 API 직접 호출)99│ ├── JWT 변조 (role 필드)100│ └── API Gateway 우회101└── OR: 사회공학102 ├── 관리자 피싱103 └── 내부자 공모104```105106## 공격 표면 분석107108### 웹 애플리케이션 공격 표면109110| 표면 | 요소 | 점검 항목 |111|------|------|----------|112| **외부 API** | REST/GraphQL 엔드포인트 | 인증, 인가, 입력 검증 |113| **인증** | 로그인, 토큰, 세션 | 브루트포스, 세션 관리 |114| **파일 업로드** | 프로필, 첨부파일 | 파일 유형 검증, 경로 조작 |115| **제3자 연동** | OAuth, Webhook, API | SSRF, 토큰 노출 |116| **관리 인터페이스** | Admin 패널, API | 접근 제어, 망 분리 |117| **데이터 저장** | DB, 캐시, 로그 | 암호화, 접근 제어 |118119## 위협 모델링 보고서 템플릿120121```markdown122# 위협 모델링 보고서123124## 시스템 개요125- 아키텍처 다이어그램 (DFD)126- 신뢰 경계 식별127128## 위협 목록129| ID | STRIDE | 위협 시나리오 | DREAD 점수 | 현재 대응 | 잔여 위험 |130|----|--------|-------------|-----------|----------|----------|131| T1 | S | 세션 하이재킹 | 7.2 | HttpOnly 쿠키 | 중간 |132| T2 | I | SQL Injection | 8.6 | 파라미터화 쿼리 | 낮음 |133134## 공격 표면 요약135## 우선순위별 대응 계획136## 잔여 위험 수용 목록137```