Threat Modeling Guide

STRIDE Threat Categories

LetterThreatViolated PropertyExampleMitigation
SSpoofingAuthenticationForging identity, IP spoofingStrong auth, MFA, certificates
TTamperingIntegrityModifying data in transit or at restDigital signatures, HMAC, TLS
RRepudiationNon-repudiationDenying action was takenAudit logs, digital signatures
IInformation DisclosureConfidentialityData leaks, verbose errorsEncryption, access control, error handling
DDenial of ServiceAvailabilityDDoS, resource exhaustionRate limiting, auto-scaling, CDN
EElevation of PrivilegeAuthorizationSQL injection to admin, buffer overflowLeast privilege, input validation

Threat Modeling Process

StepActivityOutput
1. ScopeDefine what you're modeling (app, feature, system)Scope document
2. DecomposeCreate data flow diagram (DFD): processes, data stores, external entities, flows, trust boundariesDFD diagram
3. Identify ThreatsApply STRIDE to each DFD elementThreat list
4. Rate ThreatsScore using CVSS or DREAD; prioritize by riskRisk-rated threat list
5. MitigateDesign controls for each threatSecurity requirements, design changes
6. ValidateReview mitigations, update model when design changesUpdated threat model

DREAD Risk Scoring

FactorQuestionScore (1โ€“10)
DamageHow bad is the damage if exploited?1=minimal, 10=catastrophic
ReproducibilityHow easy to reproduce the attack?1=hard, 10=trivial
ExploitabilityHow much skill/tools needed?1=expert, 10=no skill
Affected UsersHow many users impacted?1=one, 10=all
DiscoverabilityHow easy to find the vulnerability?1=difficult, 10=obvious

Threat Modeling Tools

ToolTypeNotes
Microsoft Threat Modeling ToolDesktopFree, STRIDE-based, generates reports
OWASP Threat DragonWeb/DesktopOpen-source, DFD-based
IriusRiskEnterpriseAutomated, integrates with JIRA/CD
Lucidchart / draw.ioDiagrammingManual DFD creation
pytmCode-as-modelPython, generate DFDs from code