Virantis logoVirantis

How-To Guide

How to do STRIDE threat modeling

STRIDE is one of the most widely used threat modeling frameworks. This guide walks through the six categories, the STRIDE-per-element chart, and a worked example you can copy. For the short definition, see the STRIDE glossary entry.

The six STRIDE categories

STRIDE is an acronym. Each letter is a category of threat that maps to a security property it violates:

ThreatViolatesExampleExample mitigation
SpoofingAuthenticationAn attacker logs in as another userStrong authentication, MFA, session management
TamperingIntegrityModifying data in transit or at restTLS, input validation, integrity checks / signing
RepudiationNon-repudiationA user denies performing an actionAudit logging, tamper-evident logs
Information DisclosureConfidentialityLeaking PII from a databaseEncryption, access controls, least privilege
Denial of ServiceAvailabilityFlooding an API to take it offlineRate limiting, quotas, autoscaling
Elevation of PrivilegeAuthorizationA normal user gains admin rightsAuthorization checks, least privilege

STRIDE threat modeling, step by step

  1. 1Diagram the system. Draw a data flow diagram showing the four element types — external entities, processes, data stores, and data flows — and mark where data crosses trust boundaries.
  2. 2Identify trust boundaries. Mark every point where the level of trust changes (user input, service-to-service calls, network edges). Threats concentrate here.
  3. 3Apply STRIDE to each element. Walk each element and ask which of the six STRIDE threats apply, using the STRIDE-per-element chart below as a guide.
  4. 4Document the threats. For each applicable threat, record what could happen, where, and the security property it violates.
  5. 5Decide mitigations. For each threat, choose to mitigate, reduce, transfer, or accept the risk — and assign the concrete control.
  6. 6Validate and iterate. Confirm the mitigations exist, then revisit the model whenever the system changes.

Steps 1 and 2 rely on a data flow diagram and trust boundaries— the foundation every STRIDE analysis builds on.

The STRIDE-per-element chart

You don't need to consider all six threats for every element. STRIDE-per-element maps each threat to the diagram element types it typically affects:

ElementApplicable STRIDE threats
External entityS, R
ProcessS, T, R, I, D, E (all six)
Data storeT, R, I, D
Data flowT, I, D

(S = Spoofing, T = Tampering, R = Repudiation, I = Information Disclosure, D = Denial of Service, E = Elevation of Privilege.)

A worked example

Take a simple web app: a user (external entity) sends requests to a web service (process), which reads and writes a database (data store). A trust boundary sits between the user and the service. Applying STRIDE:

Common mistakes to avoid

How to automate STRIDE

Running STRIDE by hand in workshops doesn't scale to every release. With automated threat modeling, an agent infers the data flow diagram from your code, applies STRIDE per element automatically, and delivers prioritized findings — so STRIDE runs continuously instead of occasionally. See also STRIDE vs PASTA and the full threat modeling guide.

STRIDE on every change

Virantis runs STRIDE (and PASTA) automatically with agentic AI — no diagrams to draw. Request early access.

Request Early Access

FAQ

What are the six STRIDE categories?

Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege. Each maps to a security property: authentication, integrity, non-repudiation, confidentiality, availability, and authorization respectively.

How do you apply STRIDE to a system?

Diagram the system as a data flow diagram, mark trust boundaries, then go element by element asking which STRIDE threats apply. The STRIDE-per-element chart tells you which categories are relevant to external entities, processes, data stores, and data flows.

What is STRIDE-per-element?

STRIDE-per-element is a shortcut that maps each STRIDE threat to the data flow diagram element types it typically affects, so you don't have to consider all six threats for every element. For example, processes are susceptible to all six, while data flows are mainly susceptible to Tampering, Information Disclosure, and Denial of Service.

Can STRIDE threat modeling be automated?

Yes. Tools — increasingly agentic AI — can infer the data flow diagram from code, apply STRIDE per element automatically, and produce prioritized findings, so STRIDE can run on every change instead of in occasional manual workshops.