
OpenAI의 GPT 모델을 활용하여 STRIDE 방법론 기반으로 주어진 애플리케이션에 대한 위협 모델을 생성하는 AI 기반 위협 모델링 도구입니다.
STRIDE GPT는 STRIDE 방법론을 기반으로 특정 애플리케이션에 대한 위협 모델과 공격 트리를 생성하기 위해 대규모 언어 모델(LLM)을 활용하는 AI 기반 위협 모델링 도구입니다. 사용자는 애플리케이션 유형, 인증 방법, 인터넷 노출 여부, 민감 데이터 처리 여부 등 애플리케이션 세부 정보를 제공합니다. 그러면 모델은 제공된 정보를 기반으로 출력을 생성합니다.
STRIDE GPT가 유용하다고 생각하신다면 프로젝트 지원을 고려해 주세요:
mitre_attack 속성으로 표시됩니다.embed.diagrams.net에서 로드됩니다. 자체 호스팅 또는 폐쇄망 배포의 경우 STRIDE_GPT_DRAWIO_URL 환경 변수를 통해 자체 draw.io 인스턴스를 가리키도록 설정할 수 있습니다./analyze는 또한 결과와 함께 시스템 수준 DFD를 출력합니다.조직에 맞게 STRIDE-GPT를 커스터마이징하고 싶으신가요? 포괄적인 운영 가이드를 확인하여 다음을 알아보세요:
이 가이드에는 조직 전체에서 AI 기반 위협 모델링을 확장하려는 조직을 위한 단계별 지침, 코드 예제 및 배포 패턴이 포함되어 있습니다.
2024년 1월, Open Security Summit에서 STRIDE GPT에 대한 발표를 했습니다. 발표에서는 프로젝트의 시작, 핵심 기능, 최근 업데이트 및 향후 계획에 대해 논의했습니다. 아래에서 전체 프레젠테이션을 시청할 수 있습니다:
이 비디오는 STRIDE GPT의 작동 방식과 위협 모델링 개선에 어떻게 사용될 수 있는지 이해하려는 모든 사람에게 훌륭한 자료입니다.
--version 플래그 (#161): stride-gpt --version을 실행하면 설치된 버전을 출력하고 종료합니다. 또한 대화형 TUI 배너에 실행 중인 버전이 표시되어 현재 버전을 한눈에 확인할 수 있습니다.uv.lock이 모든 종속성의 단일 정보 출처입니다. 중복된 requirements.txt 파일은 폐기되었습니다. Docker UI 이미지와 보안 스캔 워크플로는 uv export를 통해 uv.lock에서 설치하므로, 제공되는 항목과 스캔되는 항목이 잠긴 종속성에서 더 이상 벗어나지 않습니다. pip install stride-gpt 사용자에게는 변경 사항이 없습니다.STRIDE_GPT_DRAWIO_URL을 통해 구성 가능하며(기본값 embed.diagrams.net), iframe postMessage 오리진은 해당 호스트로 범위가 제한되며, 신뢰할 수 없는 다이어그램 XML은 defusedxml로 파싱됩니다.deepseek-v4-pro 및 deepseek-v4-flash를 제공합니다. 호출은 LiteLLM의 네이티브 deepseek/ 통합(호스팅 엔드포인트, 사용자 정의 기본 URL 불필요)을 통해 라우팅됩니다. 키는 DEEPSEEK_API_KEY를 통해 설정합니다./analyze 에이전트는 또한 종합 후 시스템 수준 DFD를 생성하며, 마크다운 보고서에서는 Mermaid 블록으로 렌더링되고, JSON data_flow_diagram 필드에 포함되며, HTML 뷰에서는 CDN에서 로드된 Mermaid 런타임을 통해 표시됩니다. DFD 생성은 잘못된 다이어그램이 양호한 보고서를 실패시키지 않도록 래핑됩니다./ 및 .git 접미사 제거)되므로 .../repo/ 및 .../repo.git이 더 이상 잘못된 404를 발생시키지 않습니다./analyze 또는 /quick에 -o <path>가 전달되면 보고서 옆에 JSON 파일이 작성됩니다. <stem>.plan.json (AnalysisPlan), <stem>.findings.json (하위 시스템 결과, 교차 위협, 데이터 흐름 다이어그램), <stem>.run.json (RunManifest - 모델, 구성 해시, 버전, 타이밍, 실제로 로드된 참조 카드, 실행 완료 여부 또는 호출 상한으로 인한 중단 여부를 나타내는 run_summary 기록). 매니페스트는 API 키와 엔드포인트를 제외하고 파일 시스템 경로를 가리므로 커밋하거나 티켓에 첨부해도 안전합니다. -f 형식 플래그는 보고서 아티팩트에만 적용되며, 자매 파일은 항상 JSON입니다.MITRE_ATTACK를 표준 목록 형태 대신 쉼표로 구분된 문자열(예: "T1190, T1059, AML.T0053")로 반환할 때, 기술 ID가 이제 삭제되지 않고 복구됩니다. 이전에는 마크다운/HTML 보고서에 "MITRE ATT&CK" 열이 표시되었지만 모든 셀이 비어 있었고, SARIF 내보내기에서 ID가 완전히 손실되었습니다. 모든 렌더러(마크다운, HTML 알약, SARIF)와 열 가시성 검사는 이제 단일 정규화기를 통해 라우팅되며, 기술 ID가 아닌 자유 형식의 산문은 필터링되어 열에 오탐(false positive)이 채워지지 않습니다.The api_key client option must be set 오류와 함께 실패하는 문제를 수정했습니다. LM Studio는 LiteLLM의 openai/ 접두사를 통해 라우팅되며, OpenAI SDK는 api_base가 localhost를 가리키더라도 키 없이 클라이언트를 빌드하는 것을 거부하므로 이제 CLI는 인증하지 않는 제공업체에 대해 자리 표시자를 전달합니다. 관련하여, 작업자 계층의 최후 수단 환경 스캔은 더 이상 해당 제공업체에 적용되지 않습니다. 구성된 ANTHROPIC_API_KEY 또는 OPENAI_API_KEY가 이전에는 api_base가 명명한 모든 호스트로 전송되어 이 버그를 가리고 실제 키를 네트워크에 노출했습니다. LM Studio를 사용하고 이러한 키가 설정된 경우 더 이상 엔드포인트로 전송되지 않습니다./analyze 및 /quick에서 생성된 위협은 이제 MITRE ATT&CK Enterprise (v17.1) 및 MITRE ATLAS (2026.05)의 표준화된 적 기술자 ID를 포함할 수 있습니다. 두 개의 새로운 점진적 공개 참조 카드(mitre_enterprise, mitre_atlas)는 에이전트가 카탈로그화된 ID와 이름만 사용하도록 지시하여 ID 환각을 제거합니다. 카드는 모델 리콜이 아닌 scripts/refresh_mitre_cards.py를 통해 상류 STIX/YAML에서 재생성됩니다. 기술은 마크다운 테이블에서 MITRE ATT&CK 열로, HTML에서 클릭 가능한 하늘색 알약으로, SARIF에서 properties.mitre_attack 배열로 렌더링됩니다./analyze 및 /quick은 이제 마크다운/JSON/SARIF 출력과 함께 이해 관계자와 공유하기에 적합한 자체 포함 브라우저 뷰 가능 HTML 보고서를 생성합니다.claude-opus-4-8에 대한 지원이 추가되었습니다. 둘 중 하나를 아키텍트 또는 작업자 모델로 선택할 수 있습니다.mrwadams/stridegpt-ui)이 사라지고, Streamlit 웹 UI는 이제 mrwadams/stridegpt에만 있습니다. CLI 사용자는 컨테이너를 가져오는 대신 pip install stride-gpt를 사용해야 합니다.mistralai 패키지(Mistral 접근은 이미 LiteLLM을 통해 흐름)를 제거했습니다. UI 이미지의 python:3.12-slim 베이스를 새로 고치고 curl을 제거하여 PR #113–#115에서 21개의 중간/높음 CVE 알림을 제거했습니다.except, 데드 코드)을 제거했습니다(#116).pip install stride-gpt CLI로서 STRIDE-GPT의 첫 번째 릴리스입니다. 두 가지 주요 명령: /analyze (계획자, 하위 시스템별 도구 사용 에이전트 루프, 교차 절단 종합 패스를 통한 자율적 에이전트 코드베이스 분석) 및 /quick (작성된 애플리케이션 설명에서 단일 샷 위협 모델).genai (OWASP LLM Top 10), agentic (OWASP ASI Top 10), insider_threat 카드는 YAML 프론트매터를 통해 자체 설명합니다. 에이전트는 list_references를 통해 이를 발견하고 load_reference를 통해 본문을 가져옵니다.stride_gpt/__init__.py에서 LiteLLM 로거를 ERROR로 올려 Bedrock/SageMaker 사전 로드 경고가 botocore가 없는 새 설치에 나타나지 않도록 했습니다.에이전트 AI 애플리케이션 지원: OWASP Top 10 for Agentic Applications (ASI01-ASI10) 통합을 통한 에이전트 AI 시스템 위협 모델링에 대한 포괄적인 지원이 추가되었습니다. "Agentic AI application"을 선택하고 시스템을 설명하면 LLM이 자동으로 아키텍처 패턴을 탐지하고 관련 위협 범주를 적용합니다. 각 ASI 위험은 일관된 위협 분석을 위해 적절한 STRIDE 범주에 매핑됩니다.
생성형 AI 애플리케이션 지원: OWASP LLM Top 10 (LLM01-LLM10) 통합을 통한 GenAI 애플리케이션 위협 모델링 지원이 추가되었습니다. "Generative AI application"을 선택하고 시스템을 설명하면 맞춤형 LLM 특화 위협 분석을 받을 수 있습니다. 에이전트 AI 애플리케이션은 포괄적인 범위를 위해 LLM 및 ASI 위험 범주를 모두 포함합니다.
MAESTRO 영감 아키텍처 패턴 탐지: Cloud Security Alliance MAESTRO 프레임워크에서 영감을 받아 애플리케이션 설명에서 아키텍처 패턴을 자동 탐지하는 강화된 에이전트 위협 분석이 추가되었습니다. LLM은 이제 다음에 대한 패턴별 위협을 식별하고 적용합니다:
교차 계층 위협 분석: 위협 모델에는 이제 한 아키텍처 계층의 손상이 다른 계층에 대한 공격을 가능하게 하는 방법(예: RAG 중독 → 에이전트 목표 하이재킹 → 도구 오용 → 데이터 유출)을 보여주는 구성 요소 간 공격 체인이 포함됩니다.
향상된 개선 제안: 에이전트 애플리케이션의 경우 개선 제안에서 이제 에이전트 프레임워크, 에이전트 간 통신 프로토콜, 샌드박스 메커니즘, 회로 차단기 구현과 같은 특정 아키텍처 세부 사항을 묻습니다.
OpenAI 모델 업데이트: GPT-5.2 시리즈 모델(gpt-5.2, gpt-5.2-pro, gpt-5-mini, gpt-5-nano, gpt-5, gpt-4.1)로 업데이트되었습니다. 더 이상 사용되지 않는 모델(gpt-4o, gpt-4o-mini, o3, o3-mini, o4-mini)이 제거되었습니다.
Anthropic Claude 4.5 모델: Claude 4.5 시리즈(claude-sonnet-4-5, claude-haiku-4-5, claude-opus-4-5)로 업데이트되었습니다. 모든 Claude 모델에 대해 확장된 추론 기능을 위한 "Extended Thinking 활성화" 체크박스가 추가되었습니다. 최대 토큰이 32k(표준) 및 48k(생각 모드)로 증가했습니다.
Google Gemini 3 프리뷰: Gemini 2.5 모델과 함께 Gemini 3 프리뷰 모델(gemini-3-pro-preview, gemini-3-flash-preview)이 추가되었습니다. Gemini 3 모델에 대한 확장된 생각 모드 지원이 추가되었습니다.
Mistral 모델 업데이트: Mistral Large 3, Medium 3.1, Small 3.2, Ministral 3 (8B/14B), Magistral 1.2 (Medium/Small)을 포함한 최신 버전의 Mistral 모델로 업데이트되었습니다.
새 프로젝트 로고: 더 깔끔하고 미니멀한 방패 + 신경망 디자인으로 브랜딩이 갱신되었습니다.
버그 수정: 다운로드 버튼을 클릭한 후 위협 모델 출력이 사라지는 문제를 수정했습니다.
(End of chunk 1)- GPT-5 시리즈 지원: 모든 위협 모델링 기능에 OpenAI의 GPT-5 시리즈 모델(gpt-5, gpt-5-mini, gpt-5-nano)에 대한 포괄적인 지원을 추가했습니다. 이러한 고급 추론 모델은 내부 추론과 출력 생성을 위한 적절한 토큰 할당을 통해 향상된 분석 기능을 제공합니다.
max_tokens 대신 max_completion_tokens를 사용하도록 매개변수 처리를 업데이트하여 OpenAI의 최신 API 요구 사항과의 호환성을 보장했습니다.릴리스 하이라이트:
이 릴리스에서는 다음 모델에 대한 지원이 추가되었습니다:
릴리스 하이라이트:
릴리스 하이라이트:
릴리스 하이라이트:
릴리스 하이라이트:
릴리스 하이라이트:
릴리스 하이라이트:
릴리스 하이라이트:
애플리케이션의 초기 릴리스.
pip install stride-gpt
이것은 `stride-gpt` 명령을 설치합니다. CLI와 Streamlit 웹 UI는 이제 별개의 제품입니다 — `pip install stride-gpt`는 Streamlit이 없는 가벼운 CLI를 제공합니다. 소스에서 웹 UI를 실행하려면 아래 Option 2를 참조하세요.
### Option 2: 소스에서
1. 리포지토리 클론:
```bash
git clone https://github.com/mrwadams/stride-gpt.git
cd stride-gpt
```
2. [uv](https://docs.astral.sh/uv/)로 설치 (권장 — `uv.lock`이 의존성의 단일 정보 출처입니다): ```bash
# CLI plus the Streamlit web UI deps
uv sync
또는 CLI만 pip로 설치하세요: ```bash pip install -e .
3. (선택 사항) 환경 변수 설정: ```bash
cp .env.example .env
.env를 편집하여 API 키를 추가하세요 — 또는 나중에 stride-gpt를 실행하고 대화형 REPL에서 /config 명령을 사용하거나 Streamlit UI를 통해 구성할 수 있습니다.
Streamlit 웹 UI는 Docker 이미지로 제공됩니다:```bash docker pull mrwadams/stridegpt:latest
For the CLI, use `pip install stride-gpt` — there's no separate CLI image. If you need a sandboxed CLI, roll your own from a minimal Python base image.
## 저장소 구조
STRIDE-GPT는 소규모 모노레포로 구성되어 있습니다: 하나의 공유 Python 라이브러리와 이를 사용하는 하나 이상의 앱으로 이루어져 있습니다.```
stride-gpt/
├── stride_gpt/ # shared library + Python CLI (core, agent loop, prompts, schemas, models)
├── apps/
│ └── web/ # Streamlit web UI
├── tests/ # pytest suite
└── pyproject.toml # single project file; web UI deps live in the `web` dependency-group
apps/ 디렉토리는 추가 배포 가능한 프론트엔드를 위한 슬롯입니다. 예를 들어, 미래의 Node/TypeScript CLI는 apps/web/ 옆에 위치할 것입니다. Python CLI 자체는 공유 라이브러리와 밀접하게 결합되어 있기 때문에 stride_gpt/cli.py에 남아 있습니다.
에이전트 기반 코드베이스 분석 — 에이전트가 자율적으로 코드베이스를 탐색하고, 분석을 계획하며, STRIDE 위협 모델을 생성합니다:```bash
stride-gpt analyze .
stride-gpt analyze ./my-app --worker-model anthropic/claude-sonnet-4-6 -y
stride-gpt analyze . -o report.json -f json # also writes report.html alongside stride-gpt analyze . -o report.sarif -f sarif stride-gpt analyze . -o report.html -f html
> 모든 분석 결과는 `~/.stride-gpt/reports/analyze/`에 JSON 및 HTML 파일로 자동 저장되므로, `-o` 옵션 없이 실행한 경우에도 브라우저에서 볼 수 있는 보기가 항상 클릭 한 번으로 가능합니다.
> **비용 참고:** 에이전트 기반 분석은 철저히 수행됩니다. 에이전트는 탐색 과정에서 많은 LLM 호출을 하고 여러 파일을 읽습니다. 토큰 사용량과 비용은 코드베이스 크기와 선택한 모델에 따라 증가하며, 대규모 저장소에서 최첨단 모델을 사용하여 전체 실행 시 비용이 많이 들 수 있습니다. 실행 전에 제공업체 대시보드에서 지출 한도를 설정하고, 첫 번째 패스에는 더 빠르고 저렴한 모델을 고려하세요.
**빠른 단일 실행 모드** — 텍스트 설명에서 위협 모델 생성 (Streamlit UI와 유사하지만 터미널에서):```bash
# Read description from a file
stride-gpt quick -i app-description.txt
# Pipe from stdin
echo "A web API that processes payments..." | stride-gpt quick
대화형 REPL — 탭 완성 및 히스토리를 지원하는 대화형 세션을 시작합니다:```bash stride-gpt
REPL 내부에서 `/help`를 입력하면 사용 가능한 명령어와 플래그를 볼 수 있습니다. 버전은 시작 시 ASCII 배너 아래에 표시됩니다. 전체 명령어 및 단축키 참조는 아래의 [대화형 REPL 치트 시트](#interactive-repl-cheat-sheet)를 참조하세요.
#### 대화형 REPL 치트 시트
`stride-gpt`(인수 없음)로 REPL을 실행한 후 다음 명령어와 단축키를 사용하세요.
**명령어** — 프롬프트에 슬래시 명령어를 입력하세요:
| 명령어 | 기능 |
|---------|--------------|
| `/analyze [path]` | 코드베이스를 분석하여 STRIDE 위협을 식별합니다(디렉터리 경로만 입력해도 됩니다) |
| `/quick` | 텍스트 설명으로 빠른 위협 모델 생성 |
| `/reports` | 이전 분석 보고서 목록 보기 (`/reports <n>`으로 하나의 보고서 보기) |
| `/config` | 설정 보기 또는 변경 (모델, 제공자, API 키) |
| `/help` | 사용 가능한 명령어, 플래그, 예제 보기 |
| `/quit` | 종료 (별칭: `/exit`, `/q`) |
`/analyze`, `/quick`, `/reports`는 플래그를 허용합니다: `-o`/`--output <경로>`, `-f`/`--format <markdown\|json\|sarif\|html>`, `-y`/`--yes`, `-i`/`--input <경로>` (`/quick`의 경우). 전체 목록은 `/help`를 입력하세요.
**키보드 단축키:**
| 키 | 동작 |
|-----|--------|
| `Tab` | 슬래시 명령어 및 파일 경로 자동 완성 |
| `↑` / `↓` | 명령어 기록 탐색 |
| `→` / `End` | 회색으로 표시된 기록 제안 수락 |
| `Ctrl+L` | 화면 및 스크롤백 지우기 |
| `Ctrl+C` / `Ctrl+D` | REPL 종료 |
**설치된 버전 확인:**
stride-gpt --version
stride-gpt --version # prints e.g. "stride-gpt 0.19.0" and exits
```
**공통 플래그:**
| 플래그 | 설명 |
|------|-------------|
| `--version` | 설치된 버전(`stride-gpt <version>`)을 출력하고 종료합니다 |
| `-o`, `--output` | 보고서를 파일에 저장합니다 |
| `-f`, `--format` | 출력 형식: `markdown` (기본값), `json`, `sarif`, `html` |
| `-i`, `--input` | 파일에서 앱 설명을 읽어옵니다 (`quick` 전용) |
| `-y`, `--yes` | 분석 계획을 자동 승인합니다 (`analyze` 전용) |
| `--worker-model` | 대부분의 호출을 처리하는 기본 계층 모델 (예: `anthropic/claude-sonnet-4-6`). 생략 시 저장된 구성을 사용합니다. |
| `--architect-model` | 계획/합성을 위한 더 강력한 모델 (예: `openai/gpt-5.4`). 생략 시 저장된 구성을 사용합니다. |
| `--no-architect` | 이번 실행에서 architect 계층을 건너뜁니다; worker가 모든 호출을 처리합니다. |
| `--app-type` | 플래너가 감지한 앱 유형을 재정의합니다 (`analyze` 전용): `auto` (기본값), `web`, `genai`, `agentic`. |
| `--max-llm-calls` | 두 계층 모두에서 총 LLM 호출 수를 제한합니다 (`analyze` 전용; `0` = 무제한). |
| `--max-tool-calls` | 총 도구 실행 횟수를 제한합니다 (`analyze` 전용; `0` = 무제한). |
각 계층은 또한 `--worker-api-key` / `--worker-api-base` / `--worker-max-tokens` (그리고 `--architect-*`에 해당하는 플래그)를 허용합니다. 전체 목록은 `stride-gpt analyze --help` 또는 `stride-gpt quick --help`를 실행하세요.
**구조화된 중간 파일** — `-o <경로>`를 사용하면 보고서와 함께 세 개의 JSON 파일이 생성되어 실행을 감사하거나 다운스트림 도구에서 사용할 수 있습니다:
| 파일 | 내용 |
|------|----------|
| `<stem>.plan.json` | `AnalysisPlan` — architect가 생성한 하위 시스템, 집중 영역, 감지된 앱 유형 (analyze 전용). |
| `<stem>.findings.json` | 하위 시스템별 `SubsystemFinding` 목록, 교차 위협, 시스템 수준 데이터 흐름 다이어그램 (analyze 전용). |
| `<stem>.run.json` | `RunManifest` — 모델, 프롬프트 + 구성 해시, 에이전트가 실제로 로드한 참조, git SHA, 버전, 타이밍. `analyze` 및 `quick` 모두에 대해 생성됩니다. |
형식 플래그(`-f`)는 보고서 아티팩트만 제어합니다; 함께 생성되는 파일은 항상 JSON입니다. 매니페스트 및 findings의 파일 경로는 수정됩니다 (작업 디렉터리 내의 경우 `./…`, `$HOME` 하위의 경우 `~/…`) 따라서 매니페스트를 공유해도 안전합니다. `~/.stride-gpt/reports/{analyze,quick}/`의 자동 보관은 영향을 받지 않습니다 — `-o`를 전달할 때만 함께 생성됩니다.
**이전 보고서 보기:**```bash
stride-gpt reports # List recent reports
stride-gpt reports 1 # View report #1
stride-gpt reports 1 -o r.json -f json # Export a report
```
### Streamlit 웹 UI
웹 UI는 CLI와 별도의 앱입니다. 다음 명령어로 실행하세요:```bash
streamlit run apps/web/main.py
```
제공된 URL을 브라우저에서 열고 화면의 단계를 따르십시오.
### Docker```bash
docker run -p 8501:8501 --env-file .env mrwadams/stridegpt
```
## Sample output
모든 `stride-gpt analyze` 및 `stride-gpt quick` 실행은 기본적으로 마크다운 보고서를 생성합니다(JSON, SARIF 및 독립형 HTML 뷰는 `-f` 옵션으로 사용 가능). 마크다운은 STRIDE 테이블에서 하위 시스템별로 위협을 그룹화하고, 구성 요소에 걸친 위협에 대한 교차 섹션을 추가하며, 실행 요약으로 마무리됩니다. 선택적 열(OWASP LLM/ASI, Insider Category, MITRE ATT&CK)은 실행 시 해당 열이 채워질 때만 나타납니다.
다음은 가상의 결제 API에 대한 실행에서 생성된 마크다운으로, 도구를 실행하기 전에 출력 형식을 확인할 수 있습니다. 이는 모의 데이터가 아닌 보고서 엔진의 실제 렌더링 결과입니다.
<details>
<summary>샘플 마크다운 위협 모델 (펼쳐 보기)</summary>````markdown
# STRIDE Threat Model: acme-payments-api
> Generated by STRIDE-GPT on 2026-07-16T09:42:00Z
## Overview
A Python FastAPI service that accepts card payments, stores customer profiles in PostgreSQL, and calls a third-party payment processor. Authentication is handled by JWT bearer tokens issued by an internal auth service; the API is internet-facing behind an API gateway.
## Data Flow Diagram
```mermaid
flowchart LR
Client[Client App] -->|HTTPS + JWT| Gateway[API Gateway]
Gateway --> API[Payments API]
API -->|SQL| DB[(PostgreSQL)]
API -->|HTTPS| Processor[Payment Processor]
```
## Authentication & Authorization
### Files Analyzed
- `app/auth/jwt.py`
- `app/auth/dependencies.py`
### Threats
| Threat Type | Scenario | Potential Impact | MITRE ATT&CK |
|-------------|----------|------------------|--------------|
| Spoofing | An attacker forges a JWT using a weak or leaked signing secret to impersonate another customer. | Full account takeover and unauthorized access to stored payment methods. | T1550.001 (Application Access Token) |
| Elevation of Privilege | A standard user calls an admin-only refund endpoint that only checks authentication, not role. | Unauthorized refunds and financial loss. | T1068 (Exploitation for Privilege Escalation) |
### Recommendations
- Enforce role checks on every privileged route via a shared dependency, not per-handler logic.
- Rotate and store the JWT signing secret in a managed secrets store rather than an env file.
## Payments & Data Storage
### Files Analyzed
- `app/payments/routes.py`
- `app/db/models.py`
### Threats
| Threat Type | Scenario | Potential Impact | MITRE ATT&CK |
|-------------|----------|------------------|--------------|
| Information Disclosure | Full card numbers are logged in request debug logs when a payment fails. | PCI-DSS violation and exposure of cardholder data to anyone with log access. | T1552.001 (Credentials In Files) |
| Tampering | The payment amount is taken from a client-supplied field and not re-validated server-side against the order. | A user pays less than the order total by editing the request body. | |
### Recommendations
- Redact PANs before logging and route logs through a PCI-scoped sink.
- Derive the charge amount from the server-side order record, never the request body.
## Cross-Cutting Threats
| Threat Type | Scenario | Potential Impact | MITRE ATT&CK | Affected Subsystems |
|-------------|----------|------------------|--------------|---------------------|
| Denial of Service | No rate limiting on the payment endpoint lets an attacker exhaust the processor quota and DB connections. | Legitimate payments fail during the attack; possible processor throttling. | T1499 (Endpoint Denial of Service) | Authentication & Authorization, Payments & Data Storage |
## Summary
- **Total threats identified**: 5
- **Subsystems analyzed**: 2
- **Cross-cutting threats**: 1
- **LLM calls**: 34
- **Tool calls**: 58
- **Architect model**: OpenAI API/gpt-5.4
- **Worker model**: Anthropic API/claude-sonnet-4-6
````
</details>
`stride-gpt quick`는 작성된 설명에서 동일한 테이블 형태를 생성하지만, 각 하위 시스템별 결과 대신 단일 **Application** 하위 시스템으로 축소됩니다.
## 보안 모범 사례
STRIDE GPT는 로컬 단일 사용자 배포용으로 설계되었습니다. 도구를 사용할 때:
### API 키 보호
**API 키는 계정에 요금이 부과될 수 있는 민감한 자격 증명입니다.**
✅ **권장 사항:**
- UI를 통해 API 키 입력 (브라우저 세션에 유지됨)
- 개인 컴퓨터에서 편의를 위해 .env 파일 사용
- LLM 제공업체 대시보드에서 지출 한도 설정
- API 사용량 및 비용 정기적으로 검토
- 공유 컴퓨터 사용 시 세션 지우기
❌ **하지 말아야 할 사항:**
- .env 파일을 버전 관리에 커밋 (이미 .gitignore에 포함됨)
- API 키가 보이는 스크린샷 공유
- 신뢰할 수 없거나 손상된 시스템에서 STRIDE GPT 실행
- API 키를 타인과 공유
- 예상치 못한 API 요금 무시
### 데이터 개인정보 보호 고려사항
위협 모델을 생성할 때 STRIDE GPT는 선택한 LLM 제공업체에 데이터를 전송합니다.
- 애플리케이션 세부 정보 (유형, 인증 방법, 아키텍처)
- 시스템 아키텍처 설명
- 업로드된 아키텍처 다이어그램/이미지
- 생성된 위협 모델 및 완화 조치
**의미하는 바:**
- OpenAI, Anthropic, Google 등은 자체 개인정보 보호 정책에 따라 이 데이터를 기록할 수 있음
- 데모 목적으로 일반/가상의 시스템 세부 정보 사용 고려
- LLM 제공업체의 데이터 보존 및 개인정보 보호 정책 검토
- 민감한 시스템의 경우 고려 사항:
- 로컬 모델 사용 (LM Studio)
- 더 엄격한 개인정보 보호를 보장하는 제공업체 사용
- 입력 전 시스템 설명 비식별화
### 팀/조직 배포의 경우
STRIDE GPT를 여러 사용자에게 배포하는 경우 (기본 사용 사례 아님):
- 인증/권한 부여 추가 (기본 제공되지 않음)
- API 키에 비밀 관리 서비스 사용
- VPN 또는 내부 네트워크 뒤에 배포
- 추가 고려 사항은 [SECURITY.md](https://github.com/mrwadams/stride-gpt/blob/master/SECURITY.md) 문서 검토
- 데이터 상주 및 규정 준수 요구 사항 고려
- 생성된 위협 모델에 대한 적절한 접근 제어 구현
### 종속성 보안
종속성을 유지 관리하고 취약점을 모니터링합니다.
- 종속성은 Dependabot을 통해 정기적으로 업데이트됨
- 모든 커밋에서 자동 보안 스캔 실행
- 보안 권고는 GitHub 보안 탭에서 추적
- 로컬에서 알려진 취약점 확인을 위해 `pip-audit` 실행
포괄적인 보안 정보는 [SECURITY.md](https://github.com/mrwadams/stride-gpt/blob/master/SECURITY.md)를 참조하세요. 여기에는 자동 보안 스캔, 취약점 보고 및 안전한 개발 관행이 포함됩니다.
### 보안 문제 신고
보안 문제를 발견하셨나요? 책임감 있게 신고해 주세요.
- GitHub의 [비공개 취약점 보고](https://github.com/mrwadams/stride-gpt/security/advisories/new)를 통해 보안 권고 생성
- 보안 문제를 공개적으로 게시하지 마세요
- 48시간 이내에 확인
- 수정 사항은 우선 처리되어 신속히 릴리스됩니다.
## 기여하기
풀 리퀘스트를 환영합니다. 주요 변경 사항의 경우, 먼저 이슈를 열어 변경하고자 하는 내용을 논의해 주세요.
## 라이선스
[MIT](https://choosealicense.com/licenses/mit/)