Wardn HubTrusted MCP server directory.

Registry

  • MCP Servers
  • Skills
  • Categories

Resources

  • API docs
  • Score method

Contribute

  • Submit server
  • Advertise
© 2026 Wardn Hub
Wardn Hub
MCP ServersSkillsCategoriesAPI docsSubmit server
Submit server
skills/mohitagw15856/pm-claude-skills/security-threat-model

security-threat-model

1
mohitagw15856/pm-claude-skills·Audit passed·Snapshot 0324d786c483

Summary

This source did not publish a separate summary. Review SKILL.md before using the skill.

SKILL.md

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.

AssetDescriptionSensitivityOwner
[e.g. User PII]Names, email addresses, profile dataHigh — GDPR-regulated[Team]
[e.g. API credentials]Service-to-service auth tokensCritical[Team]
[e.g. Session tokens]User authentication stateHigh[Team]
[e.g. Audit logs]Record of user and admin actionsMedium[Team]
[e.g. Service availability]Uptime of the [X] endpointMedium[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:

BoundaryFromToAuth mechanismEncrypted
TB-1Public internetAPI Gateway[JWT / OAuth / API key]TLS 1.2+
TB-2API GatewayService A[mTLS / internal JWT / IAM role][Yes/No]
TB-3Service ADatabase[Connection string + IAM / username+password][Yes/No]
TB-4AdminService 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]

IDCategoryThreatAttack vectorExisting control
T-001SAttacker forges a JWT token to authenticate as another userWeak signing key or algorithm confusion (alg:none)[e.g. RS256 with key rotation / none]
T-002SAttacker replays a stolen session tokenTheft via XSS or network sniff[e.g. Token expiry + refresh rotation]
T-003TAttacker modifies request headers to bypass tenant isolationMissing validation of tenant ID header[e.g. Server-side tenant resolution / none]
T-004RNo audit trail for admin authentication eventsLogging not configured for auth failures[e.g. CloudTrail enabled / none]
T-005IAuth error messages reveal whether an email existsVerbose error responses[e.g. Normalised error responses / none]
T-006DCredential stuffing exhausts rate limits and blocks legitimate usersAutomated login attempts[e.g. Rate limiting per IP + CAPTCHA / none]
T-007ECompromised low-privilege token used to call admin endpointMissing role check on admin routes[e.g. RBAC middleware on all routes / none]

Component: [Application Service / Business Logic]

IDCategoryThreatAttack vectorExisting control
T-008TSQL/NoSQL injection via unsanitised user inputUnparameterised queries[e.g. ORM with parameterised queries / none]
T-009TMass assignment — attacker sets fields they should not (e.g. isAdmin: true)API accepts extra fields without allowlist[e.g. Input validation / none]
T-010IInsecure direct object reference — user accesses another user's resourceMissing ownership check on resource ID[e.g. Ownership middleware / none]
T-011ISensitive data in application logs (PII, tokens)Over-logging in debug mode[e.g. Log scrubbing / none]
T-012DUnprotected expensive endpoint triggers large DB scanNo pagination or query cost limit[e.g. Pagination enforced / none]
T-013RBusiness-critical state changes not loggedNo audit event on [operation][e.g. Audit log table / none]

Component: [Database]

IDCategoryThreatAttack vectorExisting control
T-014IDatabase exposed to internet (misconfigured security group)Direct connection from outside VPC[e.g. No public IP, security group restricts to app subnet]
T-015IBackup snapshots not encrypted or accessible to wrong accountsUnencrypted snapshot, public S3[e.g. Encrypted snapshots, private S3 bucket]
T-016TPrivilege escalation via DB account with excessive permissionsApp uses a superuser DB account[e.g. Least-privilege DB role per service / none]
T-017DRunaway query or bulk delete causes data loss or outageNo query timeout or soft-delete[e.g. Statement timeout, soft-delete on critical tables / none]

Component: [Internal Service-to-Service Communication]

IDCategoryThreatAttack vectorExisting control
T-018SRogue internal service impersonates a trusted serviceNo mutual authentication between services[e.g. mTLS / service mesh / none]
T-019IInternal traffic sniffed on shared networkUnencrypted service-to-service calls[e.g. Service mesh with TLS / none]
T-020ECompromised internal service calls privileged endpointsNo 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)

IDThreat summaryLikelihoodImpactScorePriorityStatus
T-001JWT forgery — auth bypass2510Medium[Open / Mitigated / Accepted]
T-002Session token replay3412High[Open / Mitigated / Accepted]
T-007Privilege escalation via missing role check3515High[Open / Mitigated / Accepted]
T-008SQL injection2510Medium[Open / Mitigated / Accepted]
T-010IDOR — cross-user data access3412High[Open / Mitigated / Accepted]
T-014Database exposed to internet155Low[Open / Mitigated / Accepted]
T-018Rogue internal service impersonation248Medium[Open / Mitigated / Accepted]

6. Mitigations Table

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

IDThreatMitigationOwnerTarget dateTicket
T-002Session token replayImplement token rotation on refresh — invalidate old token server-side immediately[Engineer name][Date][JIRA-123]
T-007Privilege escalationAdd RBAC middleware to all /admin/* routes; write integration test for role boundary[Engineer name][Date][JIRA-124]
T-010IDORAdd ownership assertion to all resource-fetching service methods; add to code review checklist[Engineer name][Date][JIRA-125]
T-011PII in logsAudit logging calls for PII fields; add scrubbing to logger middleware[Engineer name][Date][JIRA-126]
T-018Rogue service impersonationEnable 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.

IDThreatReason for acceptanceRisk ownerReview date
T-014Database public exposureDatabase 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

ControlTypeCovers threatsImplemented
JWT RS256 with 15-min expiryPreventiveT-001, T-002[Yes / Partial / No]
RBAC middleware on all routesPreventiveT-007, T-020[Yes / Partial / No]
Parameterised queries (ORM)PreventiveT-008[Yes / Partial / No]
Rate limiting (100 req/min per IP)PreventiveT-006, T-012[Yes / Partial / No]
CloudTrail / audit loggingDetectiveT-004, T-013[Yes / Partial / No]
Automated SAST in CI pipelineDetectiveT-008, T-009[Yes / Partial / No]
Encrypted backups + private S3PreventiveT-015[Yes / Partial / No]
Least-privilege DB rolePreventiveT-016[Yes / Partial / No]
Incident response runbookCorrectiveAll[Yes / Partial / No]

9. Review Cadence

TriggerAction
Every 6 monthsFull threat model review — update risk scores, close mitigated items
Major architecture changeUpdate trust boundary diagram and re-run STRIDE for new components
Security incidentReview relevant threats; add any newly discovered vectors
New data classificationAdd assets to register; assess whether new STRIDE categories apply
Third-party dependency addedAssess 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

Related skills

capacity-planningcompetitor-teardowncontext-engineering-reviewrunbook-writerreceipts-audit