New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Write a STRIDE-based threat model for a service or feature

Security Threat Model Skill

by mohitagw15856 · MIT license · ★ 1,395 on GitHub · updated Sep 23

Security Threat Model Skill cover

Write a STRIDE-based threat model for a service or feature. Use when asked to produce a threat model, document security risks, identify attack vectors, assess a service's security posture, or prepare for a security design review.

---
name: security-threat-model
description: "Write a STRIDE-based threat model for a service or feature. Use when asked to produce a threat model, document security risks, identify attack vectors, assess a service's security posture, or prepare for a security design review. Produces a structured threat model covering assets, trust boundaries, STRIDE threat enumeration per component, risk scores, mitigation controls, and residual risk sign-off."
deprecated: 2026-08-21
supersededBy: threat-model
---

# Security Threat Model Skill

Produce a complete STRIDE-based threat model for a service or feature. A threat model is not a list of things that could go wrong — it is a structured analysis of attackers, assets, boundaries, and controls that lets an engineering team make informed, documented security decisions.

A good threat model is specific enough that a new engineer can understand what is being protected, why each control exists, and what risk the team has accepted.

## Required Inputs

Ask for these if not already provided:
- **Service name and description** — what the service does, who uses it
- **Architecture overview** — components, dependencies, data flows (a diagram description or ASCII diagram is fine)

Overview

Produce a complete STRIDE-based threat model for a service or feature. A threat model is not a list of things that could go wrong — it is a structured analysis of attackers, assets, boundaries, and controls that lets an engineering team make informed, documented security decisions.

Manual install (npx, ZIP)
Claude Codenpx skills add mohitagw15856/pm-claude-skills --skill security-threat-model -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/mohitagw15856/pm-claude-skills/tar.gz/f6ca79348c55 \ | tar -xz -C ~/.claude/skills --strip-components=2 pm-claude-skills-f6ca79348c55/skills/security-threat-model
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/f52606a143af0b24434b/security-threat-model.zip" -OutFile "$env:TEMP\security-threat-model.zip"; Expand-Archive "$env:TEMP\security-threat-model.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md16.3 KB
Read the files here
mohitagw15856/f6ca7931 file
SKILL.md
Show the full text264 lines

Security Threat Model Skill

Produce a complete STRIDE-based threat model for a service or feature. A threat model is not a list of things that could go wrong — it is a structured analysis of attackers, assets, boundaries, and controls that lets an engineering team make informed, documented security decisions.

A good threat model is specific enough that a new engineer can understand what is being protected, why each control exists, and what risk the team has accepted.

Required Inputs

Ask for these if not already provided:

  • Service name and description — what the service does, who uses it
  • Architecture overview — components, dependencies, data flows (a diagram description or ASCII diagram is fine)
  • Deployment environment — cloud provider, VPC/network topology, where it runs (Kubernetes, ECS, VMs, serverless)
  • Data sensitivity — what data does this service handle? PII, payment data, credentials, internal-only?
  • Existing controls — authentication method, encryption in transit/at rest, current WAF/firewall, existing security scanning
  • Trust levels — who are the principals? (anonymous public, authenticated users, internal services, admins)

Output Format


Security Threat Model: [Service Name]

Service: [Name] | Team: [Team name] Author: [Name] | Reviewed by: [Security lead / peer] Date: [Date] | Next review: [Date — recommend 6 months or after major architecture change] Classification: [Internal / Confidential]


1. Overview

[2–3 sentences describing the service, its role in the system, and the scope of this threat model. State what is in scope and what is explicitly out of scope.]

In scope:

  • [Component or data flow]
  • [Component or data flow]

Out of scope:

  • [e.g. Third-party payment processor internals]
  • [e.g. Corporate network / end-user devices]

2. Asset Register

Assets are the things worth protecting — data, capabilities, and reputational value.

Asset Description Sensitivity Owner
[e.g. User PII] Names, email addresses, profile data High — GDPR-regulated [Team]
[e.g. API credentials] Service-to-service auth tokens Critical [Team]
[e.g. Session tokens] User authentication state High [Team]
[e.g. Audit logs] Record of user and admin actions Medium [Team]
[e.g. Service availability] Uptime of the [X] endpoint Medium [Team]

Data classification key:

  • Critical — Credential material; exposure enables direct system compromise
  • High — PII, financial data, health data; regulated or high reputational impact
  • Medium — Internal configuration, non-sensitive business data
  • Low — Public information, anonymised data

3. Trust Boundaries and Architecture

Trust boundaries are the lines that separate zones with different trust levels. Threats often occur when data or requests cross a boundary.

  ┌─────────────────────────────────────────────────────────────────┐
  │  INTERNET (Untrusted)                                           │
  │                                                                 │
  │   [Public User]          [Bot / Attacker]                       │
  └──────────────────────────────┬──────────────────────────────────┘
                                 │ HTTPS
                    ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─
                    Trust Boundary: Public → DMZ
                    ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─
                                 ▼
  ┌──────────────────────────────────────────────────────────────────┐
  │  DMZ / Edge Layer                                                │
  │   ┌────────────┐     ┌──────────────┐                           │
  │   │  WAF / CDN │────▶│  API Gateway │                           │
  │   └────────────┘     └──────┬───────┘                           │
  └──────────────────────────────┼───────────────────────────────────┘
                    ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─
                    Trust Boundary: Edge → Application VPC
                    ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─
                                 ▼
  ┌──────────────────────────────────────────────────────────────────┐
  │  Application VPC (Private)                                       │
  │   ┌──────────────┐     ┌────────────┐     ┌──────────────────┐  │
  │   │  [Service A] │────▶│ [Service B]│────▶│  [Database]      │  │
  │   └──────────────┘     └────────────┘     └──────────────────┘  │
  │                                ▲                                  │
  │                                │                                  │
  │   ┌──────────────┐             │                                  │
  │   │  Admin (IAM) │─────────────┘                                 │
  └──────────────────────────────────────────────────────────────────┘

Trust Boundaries identified:

Boundary From To Auth mechanism Encrypted
TB-1 Public internet API Gateway [JWT / OAuth / API key] TLS 1.2+
TB-2 API Gateway Service A [mTLS / internal JWT / IAM role] [Yes/No]
TB-3 Service A Database [Connection string + IAM / username+password] [Yes/No]
TB-4 Admin Service B [IAM role / VPN + MFA] TLS

4. STRIDE Threat Analysis

STRIDE is a threat classification framework. For each significant component, enumerate threats in each category.

STRIDE key:

  • S — Spoofing: Impersonating another user, service, or system
  • T — Tampering: Modifying data or code without authorisation
  • R — Repudiation: Denying an action occurred; insufficient audit trail
  • I — Information Disclosure: Exposing data to unauthorised parties
  • D — Denial of Service: Making the service unavailable
  • E — Elevation of Privilege: Gaining capabilities beyond what is authorised
Component: [API Gateway / Auth Layer]
ID Category Threat Attack vector Existing control
T-001 S Attacker forges a JWT token to authenticate as another user Weak signing key or algorithm confusion (alg:none) [e.g. RS256 with key rotation / none]
T-002 S Attacker replays a stolen session token Theft via XSS or network sniff [e.g. Token expiry + refresh rotation]
T-003 T Attacker modifies request headers to bypass tenant isolation Missing validation of tenant ID header [e.g. Server-side tenant resolution / none]
T-004 R No audit trail for admin authentication events Logging not configured for auth failures [e.g. CloudTrail enabled / none]
T-005 I Auth error messages reveal whether an email exists Verbose error responses [e.g. Normalised error responses / none]
T-006 D Credential stuffing exhausts rate limits and blocks legitimate users Automated login attempts [e.g. Rate limiting per IP + CAPTCHA / none]
T-007 E Compromised low-privilege token used to call admin endpoint Missing role check on admin routes [e.g. RBAC middleware on all routes / none]
Component: [Application Service / Business Logic]
ID Category Threat Attack vector Existing control
T-008 T SQL/NoSQL injection via unsanitised user input Unparameterised queries [e.g. ORM with parameterised queries / none]
T-009 T Mass assignment — attacker sets fields they should not (e.g. isAdmin: true) API accepts extra fields without allowlist [e.g. Input validation / none]
T-010 I Insecure direct object reference — user accesses another user's resource Missing ownership check on resource ID [e.g. Ownership middleware / none]
T-011 I Sensitive data in application logs (PII, tokens) Over-logging in debug mode [e.g. Log scrubbing / none]
T-012 D Unprotected expensive endpoint triggers large DB scan No pagination or query cost limit [e.g. Pagination enforced / none]
T-013 R Business-critical state changes not logged No audit event on [operation] [e.g. Audit log table / none]
Component: [Database]
ID Category Threat Attack vector Existing control
T-014 I Database exposed to internet (misconfigured security group) Direct connection from outside VPC [e.g. No public IP, security group restricts to app subnet]
T-015 I Backup snapshots not encrypted or accessible to wrong accounts Unencrypted snapshot, public S3 [e.g. Encrypted snapshots, private S3 bucket]
T-016 T Privilege escalation via DB account with excessive permissions App uses a superuser DB account [e.g. Least-privilege DB role per service / none]
T-017 D Runaway query or bulk delete causes data loss or outage No query timeout or soft-delete [e.g. Statement timeout, soft-delete on critical tables / none]
Component: [Internal Service-to-Service Communication]
ID Category Threat Attack vector Existing control
T-018 S Rogue internal service impersonates a trusted service No mutual authentication between services [e.g. mTLS / service mesh / none]
T-019 I Internal traffic sniffed on shared network Unencrypted service-to-service calls [e.g. Service mesh with TLS / none]
T-020 E Compromised internal service calls privileged endpoints No scoping on internal tokens [e.g. Scoped service tokens / none]

5. Risk Register

Score each threat: Likelihood (1–5) × Impact (1–5) = Risk Score (1–25)

Priority bands: Critical (20–25) | High (12–19) | Medium (6–11) | Low (1–5)

ID Threat summary Likelihood Impact Score Priority Status
T-001 JWT forgery — auth bypass 2 5 10 Medium [Open / Mitigated / Accepted]
T-002 Session token replay 3 4 12 High [Open / Mitigated / Accepted]
T-007 Privilege escalation via missing role check 3 5 15 High [Open / Mitigated / Accepted]
T-008 SQL injection 2 5 10 Medium [Open / Mitigated / Accepted]
T-010 IDOR — cross-user data access 3 4 12 High [Open / Mitigated / Accepted]
T-014 Database exposed to internet 1 5 5 Low [Open / Mitigated / Accepted]
T-018 Rogue internal service impersonation 2 4 8 Medium [Open / Mitigated / Accepted]

6. Mitigations Table

For every Open threat with priority Medium or above, define a specific mitigation.

ID Threat Mitigation Owner Target date Ticket
T-002 Session token replay Implement token rotation on refresh — invalidate old token server-side immediately [Engineer name] [Date] [JIRA-123]
T-007 Privilege escalation Add RBAC middleware to all /admin/* routes; write integration test for role boundary [Engineer name] [Date] [JIRA-124]
T-010 IDOR Add ownership assertion to all resource-fetching service methods; add to code review checklist [Engineer name] [Date] [JIRA-125]
T-011 PII in logs Audit logging calls for PII fields; add scrubbing to logger middleware [Engineer name] [Date] [JIRA-126]
T-018 Rogue service impersonation Enable mTLS via service mesh or issue scoped service tokens per service [Engineer name] [Date] [JIRA-127]

7. Accepted Risks

Accepted risks are threats the team has decided not to mitigate right now. Every accepted risk must have a named owner and a review date.

ID Threat Reason for acceptance Risk owner Review date
T-014 Database public exposure Database has no public IP assigned; control already in place — accepted as low likelihood [Name] [Date]
[ID] [Threat] [Reason — e.g. "Effort exceeds risk at current scale; re-evaluate at 10× traffic"] [Name] [Date]

8. Security Controls Summary

Control Type Covers threats Implemented
JWT RS256 with 15-min expiry Preventive T-001, T-002 [Yes / Partial / No]
RBAC middleware on all routes Preventive T-007, T-020 [Yes / Partial / No]
Parameterised queries (ORM) Preventive T-008 [Yes / Partial / No]
Rate limiting (100 req/min per IP) Preventive T-006, T-012 [Yes / Partial / No]
CloudTrail / audit logging Detective T-004, T-013 [Yes / Partial / No]
Automated SAST in CI pipeline Detective T-008, T-009 [Yes / Partial / No]
Encrypted backups + private S3 Preventive T-015 [Yes / Partial / No]
Least-privilege DB role Preventive T-016 [Yes / Partial / No]
Incident response runbook Corrective All [Yes / Partial / No]

9. Review Cadence

Trigger Action
Every 6 months Full threat model review — update risk scores, close mitigated items
Major architecture change Update trust boundary diagram and re-run STRIDE for new components
Security incident Review relevant threats; add any newly discovered vectors
New data classification Add assets to register; assess whether new STRIDE categories apply
Third-party dependency added Assess supply chain threats for the new dependency

Next scheduled review: [Date] Review owner: [Name / Security lead]


Quality Checks

  • Every trust boundary is named and its authentication mechanism is specified — not left as "TBD"
  • Every Critical and High risk in the risk register has a mitigation with a named owner and a target date
  • Every accepted risk has a named risk owner and a review date — no unowned accepted risks
  • The asset register includes data sensitivity levels and at least one entry for credential material
  • STRIDE analysis covers all major components — not just the API layer
  • Mitigation actions are specific enough to become a ticket (not "improve security")
  • The ASCII trust boundary diagram matches the architecture description provided

Anti-Patterns

  • Do not restrict STRIDE analysis to only the API layer — threats exist at every component including the database and internal services
  • Do not leave mitigations as vague directives like "improve security" — every mitigation must be specific enough to become a ticket
  • Do not accept risks without a named owner and a review date — unowned accepted risks are not managed risks
  • Do not write a threat model that covers only theoretical threats — prioritise by likelihood and impact using the risk register
  • Do not omit the asset register — without knowing what is being protected, the STRIDE analysis has no anchor
1---
2name: security-threat-model
3description: "Write a STRIDE-based threat model for a service or feature. Use when asked to produce a threat model, document security risks, identify attack vectors, assess a service's security posture, or prepare for a security design review. Produces a structured threat model covering assets, trust boundaries, STRIDE threat enumeration per component, risk scores, mitigation controls, and residual risk sign-off."
4deprecated: 2026-08-21
5supersededBy: threat-model
6---
7 
8# Security Threat Model Skill
9 
10Produce a complete STRIDE-based threat model for a service or feature. A threat model is not a list of things that could go wrong — it is a structured analysis of attackers, assets, boundaries, and controls that lets an engineering team make informed, documented security decisions.
11 
12A good threat model is specific enough that a new engineer can understand what is being protected, why each control exists, and what risk the team has accepted.
13 
14## Required Inputs
15 
16Ask for these if not already provided:
17- **Service name and description** — what the service does, who uses it
18- **Architecture overview** — components, dependencies, data flows (a diagram description or ASCII diagram is fine)
19- **Deployment environment** — cloud provider, VPC/network topology, where it runs (Kubernetes, ECS, VMs, serverless)
20- **Data sensitivity** — what data does this service handle? PII, payment data, credentials, internal-only?
21- **Existing controls** — authentication method, encryption in transit/at rest, current WAF/firewall, existing security scanning
22- **Trust levels** — who are the principals? (anonymous public, authenticated users, internal services, admins)
23 
24## Output Format
25 
26---
27 
28# Security Threat Model: [Service Name]
29 
30**Service:** [Name] | **Team:** [Team name]
31**Author:** [Name] | **Reviewed by:** [Security lead / peer]
32**Date:** [Date] | **Next review:** [Date — recommend 6 months or after major architecture change]
33**Classification:** [Internal / Confidential]
34 
35---
36 
37## 1. Overview
38 
39[2–3 sentences describing the service, its role in the system, and the scope of this threat model. State what is in scope and what is explicitly out of scope.]
40 
41**In scope:**
42- [Component or data flow]
43- [Component or data flow]
44 
45**Out of scope:**
46- [e.g. Third-party payment processor internals]
47- [e.g. Corporate network / end-user devices]
48 
49---
50 
51## 2. Asset Register
52 
53Assets are the things worth protecting — data, capabilities, and reputational value.
54 
55| Asset | Description | Sensitivity | Owner |
56|---|---|---|---|
57| [e.g. User PII] | Names, email addresses, profile data | High — GDPR-regulated | [Team] |
58| [e.g. API credentials] | Service-to-service auth tokens | Critical | [Team] |
59| [e.g. Session tokens] | User authentication state | High | [Team] |
60| [e.g. Audit logs] | Record of user and admin actions | Medium | [Team] |
61| [e.g. Service availability] | Uptime of the [X] endpoint | Medium | [Team] |
62 
63**Data classification key:**
64- **Critical** — Credential material; exposure enables direct system compromise
65- **High** — PII, financial data, health data; regulated or high reputational impact
66- **Medium** — Internal configuration, non-sensitive business data
67- **Low** — Public information, anonymised data
68 
69---
70 
71## 3. Trust Boundaries and Architecture
72 
73Trust boundaries are the lines that separate zones with different trust levels. Threats often occur when data or requests cross a boundary.
74 
75```
76 ┌─────────────────────────────────────────────────────────────────┐
77 │ INTERNET (Untrusted) │
78 │ │
79 │ [Public User] [Bot / Attacker] │
80 └──────────────────────────────┬──────────────────────────────────┘
81 │ HTTPS
82 ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─
83 Trust Boundary: Public → DMZ
84 ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─
85 ▼
86 ┌──────────────────────────────────────────────────────────────────┐
87 │ DMZ / Edge Layer │
88 │ ┌────────────┐ ┌──────────────┐ │
89 │ │ WAF / CDN │────▶│ API Gateway │ │
90 │ └────────────┘ └──────┬───────┘ │
91 └──────────────────────────────┼───────────────────────────────────┘
92 ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─
93 Trust Boundary: Edge → Application VPC
94 ─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─
95 ▼
96 ┌──────────────────────────────────────────────────────────────────┐
97 │ Application VPC (Private) │
98 │ ┌──────────────┐ ┌────────────┐ ┌──────────────────┐ │
99 │ │ [Service A] │────▶│ [Service B]│────▶│ [Database] │ │
100 │ └──────────────┘ └────────────┘ └──────────────────┘ │
101 │ ▲ │
102 │ │ │
103 │ ┌──────────────┐ │ │
104 │ │ Admin (IAM) │─────────────┘ │
105 └──────────────────────────────────────────────────────────────────┘
106```
107 
108**Trust Boundaries identified:**
109 
110| Boundary | From | To | Auth mechanism | Encrypted |
111|---|---|---|---|---|
112| TB-1 | Public internet | API Gateway | [JWT / OAuth / API key] | TLS 1.2+ |
113| TB-2 | API Gateway | Service A | [mTLS / internal JWT / IAM role] | [Yes/No] |
114| TB-3 | Service A | Database | [Connection string + IAM / username+password] | [Yes/No] |
115| TB-4 | Admin | Service B | [IAM role / VPN + MFA] | TLS |
116 
117---
118 
119## 4. STRIDE Threat Analysis
120 
121STRIDE is a threat classification framework. For each significant component, enumerate threats in each category.
122 
123**STRIDE key:**
124- **S** — Spoofing: Impersonating another user, service, or system
125- **T** — Tampering: Modifying data or code without authorisation
126- **R** — Repudiation: Denying an action occurred; insufficient audit trail
127- **I** — Information Disclosure: Exposing data to unauthorised parties
128- **D** — Denial of Service: Making the service unavailable
129- **E** — Elevation of Privilege: Gaining capabilities beyond what is authorised
130 
131### Component: [API Gateway / Auth Layer]
132 
133| ID | Category | Threat | Attack vector | Existing control |
134|---|---|---|---|---|
135| T-001 | S | Attacker forges a JWT token to authenticate as another user | Weak signing key or algorithm confusion (alg:none) | [e.g. RS256 with key rotation / none] |
136| T-002 | S | Attacker replays a stolen session token | Theft via XSS or network sniff | [e.g. Token expiry + refresh rotation] |
137| T-003 | T | Attacker modifies request headers to bypass tenant isolation | Missing validation of tenant ID header | [e.g. Server-side tenant resolution / none] |
138| T-004 | R | No audit trail for admin authentication events | Logging not configured for auth failures | [e.g. CloudTrail enabled / none] |
139| T-005 | I | Auth error messages reveal whether an email exists | Verbose error responses | [e.g. Normalised error responses / none] |
140| T-006 | D | Credential stuffing exhausts rate limits and blocks legitimate users | Automated login attempts | [e.g. Rate limiting per IP + CAPTCHA / none] |
141| T-007 | E | Compromised low-privilege token used to call admin endpoint | Missing role check on admin routes | [e.g. RBAC middleware on all routes / none] |
142 
143### Component: [Application Service / Business Logic]
144 
145| ID | Category | Threat | Attack vector | Existing control |
146|---|---|---|---|---|
147| T-008 | T | SQL/NoSQL injection via unsanitised user input | Unparameterised queries | [e.g. ORM with parameterised queries / none] |
148| T-009 | T | Mass assignment — attacker sets fields they should not (e.g. `isAdmin: true`) | API accepts extra fields without allowlist | [e.g. Input validation / none] |
149| T-010 | I | Insecure direct object reference — user accesses another user's resource | Missing ownership check on resource ID | [e.g. Ownership middleware / none] |
150| T-011 | I | Sensitive data in application logs (PII, tokens) | Over-logging in debug mode | [e.g. Log scrubbing / none] |
151| T-012 | D | Unprotected expensive endpoint triggers large DB scan | No pagination or query cost limit | [e.g. Pagination enforced / none] |
152| T-013 | R | Business-critical state changes not logged | No audit event on [operation] | [e.g. Audit log table / none] |
153 
154### Component: [Database]
155 
156| ID | Category | Threat | Attack vector | Existing control |
157|---|---|---|---|---|
158| T-014 | I | Database exposed to internet (misconfigured security group) | Direct connection from outside VPC | [e.g. No public IP, security group restricts to app subnet] |
159| T-015 | I | Backup snapshots not encrypted or accessible to wrong accounts | Unencrypted snapshot, public S3 | [e.g. Encrypted snapshots, private S3 bucket] |
160| T-016 | T | Privilege escalation via DB account with excessive permissions | App uses a superuser DB account | [e.g. Least-privilege DB role per service / none] |
161| T-017 | D | Runaway query or bulk delete causes data loss or outage | No query timeout or soft-delete | [e.g. Statement timeout, soft-delete on critical tables / none] |
162 
163### Component: [Internal Service-to-Service Communication]
164 
165| ID | Category | Threat | Attack vector | Existing control |
166|---|---|---|---|---|
167| T-018 | S | Rogue internal service impersonates a trusted service | No mutual authentication between services | [e.g. mTLS / service mesh / none] |
168| T-019 | I | Internal traffic sniffed on shared network | Unencrypted service-to-service calls | [e.g. Service mesh with TLS / none] |
169| T-020 | E | Compromised internal service calls privileged endpoints | No scoping on internal tokens | [e.g. Scoped service tokens / none] |
170 
171---
172 
173## 5. Risk Register
174 
175Score each threat: **Likelihood (1–5)** × **Impact (1–5)** = **Risk Score (1–25)**
176 
177Priority bands: Critical (20–25) | High (12–19) | Medium (6–11) | Low (1–5)
178 
179| ID | Threat summary | Likelihood | Impact | Score | Priority | Status |
180|---|---|---|---|---|---|---|
181| T-001 | JWT forgery — auth bypass | 2 | 5 | 10 | Medium | [Open / Mitigated / Accepted] |
182| T-002 | Session token replay | 3 | 4 | 12 | High | [Open / Mitigated / Accepted] |
183| T-007 | Privilege escalation via missing role check | 3 | 5 | 15 | High | [Open / Mitigated / Accepted] |
184| T-008 | SQL injection | 2 | 5 | 10 | Medium | [Open / Mitigated / Accepted] |
185| T-010 | IDOR — cross-user data access | 3 | 4 | 12 | High | [Open / Mitigated / Accepted] |
186| T-014 | Database exposed to internet | 1 | 5 | 5 | Low | [Open / Mitigated / Accepted] |
187| T-018 | Rogue internal service impersonation | 2 | 4 | 8 | Medium | [Open / Mitigated / Accepted] |
188 
189---
190 
191## 6. Mitigations Table
192 
193For every Open threat with priority Medium or above, define a specific mitigation.
194 
195| ID | Threat | Mitigation | Owner | Target date | Ticket |
196|---|---|---|---|---|---|
197| T-002 | Session token replay | Implement token rotation on refresh — invalidate old token server-side immediately | [Engineer name] | [Date] | [JIRA-123] |
198| T-007 | Privilege escalation | Add RBAC middleware to all `/admin/*` routes; write integration test for role boundary | [Engineer name] | [Date] | [JIRA-124] |
199| T-010 | IDOR | Add ownership assertion to all resource-fetching service methods; add to code review checklist | [Engineer name] | [Date] | [JIRA-125] |
200| T-011 | PII in logs | Audit logging calls for PII fields; add scrubbing to logger middleware | [Engineer name] | [Date] | [JIRA-126] |
201| T-018 | Rogue service impersonation | Enable mTLS via service mesh or issue scoped service tokens per service | [Engineer name] | [Date] | [JIRA-127] |
202 
203---
204 
205## 7. Accepted Risks
206 
207Accepted risks are threats the team has decided not to mitigate right now. Every accepted risk must have a named owner and a review date.
208 
209| ID | Threat | Reason for acceptance | Risk owner | Review date |
210|---|---|---|---|---|
211| T-014 | Database public exposure | Database has no public IP assigned; control already in place — accepted as low likelihood | [Name] | [Date] |
212| [ID] | [Threat] | [Reason — e.g. "Effort exceeds risk at current scale; re-evaluate at 10× traffic"] | [Name] | [Date] |
213 
214---
215 
216## 8. Security Controls Summary
217 
218| Control | Type | Covers threats | Implemented |
219|---|---|---|---|
220| JWT RS256 with 15-min expiry | Preventive | T-001, T-002 | [Yes / Partial / No] |
221| RBAC middleware on all routes | Preventive | T-007, T-020 | [Yes / Partial / No] |
222| Parameterised queries (ORM) | Preventive | T-008 | [Yes / Partial / No] |
223| Rate limiting (100 req/min per IP) | Preventive | T-006, T-012 | [Yes / Partial / No] |
224| CloudTrail / audit logging | Detective | T-004, T-013 | [Yes / Partial / No] |
225| Automated SAST in CI pipeline | Detective | T-008, T-009 | [Yes / Partial / No] |
226| Encrypted backups + private S3 | Preventive | T-015 | [Yes / Partial / No] |
227| Least-privilege DB role | Preventive | T-016 | [Yes / Partial / No] |
228| Incident response runbook | Corrective | All | [Yes / Partial / No] |
229 
230---
231 
232## 9. Review Cadence
233 
234| Trigger | Action |
235|---|---|
236| Every 6 months | Full threat model review — update risk scores, close mitigated items |
237| Major architecture change | Update trust boundary diagram and re-run STRIDE for new components |
238| Security incident | Review relevant threats; add any newly discovered vectors |
239| New data classification | Add assets to register; assess whether new STRIDE categories apply |
240| Third-party dependency added | Assess supply chain threats for the new dependency |
241 
242**Next scheduled review:** [Date]
243**Review owner:** [Name / Security lead]
244 
245---
246 
247## Quality Checks
248 
249- [ ] Every trust boundary is named and its authentication mechanism is specified — not left as "TBD"
250- [ ] Every Critical and High risk in the risk register has a mitigation with a named owner and a target date
251- [ ] Every accepted risk has a named risk owner and a review date — no unowned accepted risks
252- [ ] The asset register includes data sensitivity levels and at least one entry for credential material
253- [ ] STRIDE analysis covers all major components — not just the API layer
254- [ ] Mitigation actions are specific enough to become a ticket (not "improve security")
255- [ ] The ASCII trust boundary diagram matches the architecture description provided
256 
257## Anti-Patterns
258 
259- [ ] Do not restrict STRIDE analysis to only the API layer — threats exist at every component including the database and internal services
260- [ ] Do not leave mitigations as vague directives like "improve security" — every mitigation must be specific enough to become a ticket
261- [ ] Do not accept risks without a named owner and a review date — unowned accepted risks are not managed risks
262- [ ] Do not write a threat model that covers only theoretical threats — prioritise by likelihood and impact using the risk register
263- [ ] Do not omit the asset register — without knowing what is being protected, the STRIDE analysis has no anchor
264 
View all files on GitHub →

Details

Updated
Sep 23, 2026
License
MIT
Stars on the repo
★ 1,395
Checked
Source
mohitagw15856/pm-claude-skills ↗
Creator
mohitagw15856 · 193 listings
View creator

Made with security-threat-model

Security Threat Model Skill — Galaxy 3D — fly through all 1170 skills as a glowing constellation you orbit and click into (from the mohitagw15856/pm-claude-skills README)
Security Threat Model Skill — Galaxy 3D — fly through all 1170 skills as a glowing constellation you orbit and click into (from the mohitagw15856/pm-claude-skills README)

by mohitagw15856

Security Threat Model Skill — PM Skills Wrapped — your practice turned into a shareable, Spotify-Wrapped-style story (from the mohitagw15856/pm-claude-skills README)
Security Threat Model Skill — PM Skills Wrapped — your practice turned into a shareable, Spotify-Wrapped-style story (from the mohitagw15856/pm-claude-skills README)

by mohitagw15856

Similar skills

See all →
SkillSecurity guidance and vulnerability review for codebasesSecurity auditcloudflare/security-audit-skill · by cloudflareSecurity guidance and vulnerability review for codebases, APIs, services, CLI tools, libraries, and daemons. Use for security questions, focused reviews, vulnerability research, security audits, or pen tests. Run the complete workflow only for explicit codebase audit or pen-test requests, full/comprehensive/end-to-end reviews, or requested report artifacts.★ 26.1k GitHub starsMCPYou need to audit Active Directory security postureAd security reviewerVoltAgent/awesome-claude-code-subagents · by VoltAgentUse this agent when you need to audit Active Directory security posture, evaluate privilege escalation risks, review identity delegation patterns, or assess authentication protocol hardening.★ 25.2k GitHub starsSkillApply modern web development best practices for securityaddyosmani/web-quality-skills · by addyosmaniApply modern web development best practices for security, compatibility, and code quality. Use when asked to "apply best practices", "security audit", "modernize code", "code quality review", or "check for vulnerabilities".★ 2.8k GitHub starsSkillHelps Claude write secure web applicationsSecure Coding Guide for Web ApplicationsBehiSecc/VibeSec-Skill · by BehiSeccThis skill helps Claude write secure web applications. Use this when working on any web application or when a user requests a scan or audit to ensure security best practices are followed.★ 1.3k GitHub starsMCPReviews completed implementation against governing securitySecurity reviewershinpr/claude-code-workflows · by shinprReviews completed implementation against governing security requirements and the reachable trust model. Use after implementation or when security review/security check/vulnerability check is requested. Returns only must-fix findings with the smallest sufficient corrections.★ 687 GitHub starsSkillAccount-based marketing for B2B SaaSAccount-Based Marketing Operationsshalintripathi/saas-marketing-agents · by shalintripathiAccount-based marketing for B2B SaaS. Use this skill to build a target account list, tier it 1:1 / 1:few / 1:many, size it against sales capacity, turn intent and engagement signals into plays, write the multi-channel orchestration contract each tier runs on, and measure the program in account coverage, penetration and pipeline instead of MQLs. Also triggers on: ABM, account-based marketing, target account list, TAL, named accounts, account tiering, 1:1 ABM, one-to-few, programmatic ABM, account selection, ideal customer profile fit, intent data, buying signals, 6sense, Bombora, Demandbase, account penetration, account coverage, sales and marketing alignment on accounts, enterprise account program.★ 20 GitHub stars

More from mohitagw15856

SkillDesign a 360-degree feedback survey or write a structured360-Degree Feedback Template Skillmohitagw15856/pm-claude-skills · by mohitagw15856Design a 360-degree feedback survey or write a structured 360 feedback report. Use when asked to build a 360 feedback process, write 360 feedback for a colleague, design a feedback survey, or produce a feedback report. Produces either a complete survey instrument with rating scales and open-ended questions, or a structured narrative feedback report with themes, strengths, and development areas.★ 1.4k GitHub starsSkillDesign statistically rigorous A/B tests for product featuresA/B Test Planner Skillmohitagw15856/pm-claude-skills · by mohitagw15856Design statistically rigorous A/B tests for product features, UI changes, onboarding flows, and pricing experiments. Use when asked to set up an experiment, design an A/B test, calculate sample size, or interpret test results. Produces a complete test plan with hypothesis, variant definitions, sample size, duration estimate, guardrail metrics, and a results interpretation guide.★ 1.4k GitHub starsSkillGenerate a WCAG 2.2 accessibility audit checklistAccessibility Audit Skillmohitagw15856/pm-claude-skills · by mohitagw15856Generate a WCAG 2.2 accessibility audit checklist and remediation suggestions for any UI or design. Use when asked to audit for accessibility, check WCAG compliance, review a design for a11y issues, or create an accessibility remediation plan. Produces a prioritised checklist with pass/fail assessments and specific fixes.★ 1.4k GitHub starsSkillBuild a structured account plan for any key customerAccount Plan Skillmohitagw15856/pm-claude-skills · by mohitagw15856Build a structured account plan for any key customer or target account. Use when asked to create an account plan, key account strategy, strategic account review, or territory plan. Produces a complete account plan with relationship map, growth opportunities, risks, and 90-day action plan.★ 1.4k GitHub starsSkillOptimize an article for Answer Engine Optimization so AIAEO Optimizer Skillmohitagw15856/pm-claude-skills · by mohitagw15856Optimize an article for Answer Engine Optimization (AEO) so AI engines like ChatGPT, Perplexity, and Claude can extract, quote, and cite it. Use when asked to AEO-optimize, make content AI-readable, improve AI citation chances, or adapt an article for answer engines. Produces an AEO-optimised rewrite with question headings, 50–80 word answer capsules, a paragraph-length audit, and flagged trust signals.★ 1.4k GitHub starsSkillConduct a structured ethical review of an AI or ML featureAI Ethics Review Skillmohitagw15856/pm-claude-skills · by mohitagw15856Conduct a structured ethical review of an AI or ML feature, model, or product. Use when preparing to deploy an AI system, assessing algorithmic risk, auditing a model for bias, or producing a responsible AI impact assessment. Produces a structured ethics review covering fairness, transparency, privacy, safety, accountability, and societal impact with a risk tier score, pre-deployment checklist, and prioritised mitigations.★ 1.4k GitHub stars