Problem
Security reviews often happen after code is written, when fixing design flaws is expensive. Teams rely on ad hoc intuition and miss entire threat classes. Without a repeatable method, findings vary by reviewer and are rarely tracked.
Systematically identify design-level security threats by classifying them as Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, or Elevation of privilege.
Security reviews often happen after code is written, when fixing design flaws is expensive. Teams rely on ad hoc intuition and miss entire threat classes. Without a repeatable method, findings vary by reviewer and are rarely tracked.
STRIDE is a mnemonic for six threat categories, each violating a security property: spoofing violates authentication, tampering violates integrity, repudiation violates non-repudiation, information disclosure violates confidentiality, denial of service violates availability, and elevation of privilege violates authorization. Applied to a data flow diagram, it turns a vague question ("is this secure?") into a finite checklist.
Run sessions with a mix of developers, a tester, and someone who understands operations. Diverse perspectives surface assumptions, such as which service accounts are shared or which queues accept unauthenticated messages, that a single reviewer would not question.
Start with a diagram of external entities, processes, data stores, and data flows, then draw trust boundaries where privilege or ownership changes. Each element type is susceptible to specific categories: external entities to spoofing and repudiation, processes to all six, data stores to tampering, disclosure, and denial of service, and data flows to tampering, disclosure, and denial of service. Walk each element and ask how an attacker could cause each applicable threat.
Track the percentage of new services with a current model, the number of threats open by severity, the mean time to close a high-severity mitigation, and the proportion of production security issues that the model had already predicted.
Review the numbers monthly with engineering leadership, and compare modeled threats against penetration test and bug bounty findings. Every finding that was not in the model is evidence of a gap in the diagram or in the team's technique.
element: payments-api -> orders-db
boundary: service-to-datastore
threats:
- id: T-014
category: Tampering
description: Compromised service account alters order totals
likelihood: medium
impact: high
mitigation: Row-level audit triggers and least-privilege DB role
owner: payments-team
status: in-progress
- id: T-015
category: Repudiation
description: Refund issued with no actor recorded
mitigation: Immutable audit log with caller identity
status: open