I’m a big fan of the threat modeling process, especially when using STRIDE. I think that stems from the fact that back in the late 90’s I found Bruce Schneier’s approach with attack trees just too cumbersome. When I was introduced to an early version of STRIDE inside of Microsoft, I really got on the bandwagon, especially when used against data flow diagrams (DFD).
It’s one of the reasons I pushed Adam Shostak so hard to release an internal tool Microsoft had that used this approach into a tool for the whole appsec community. That became known as the SDL Threat Modeling Tool, and in my mind has always been the best threat modeling tool Microsoft built. TAM was pretty good too, but was more focused on SDL-IT than SDLC.

As an offensive security engineer though, it’s always been interesting to me to think about STRIDE categories in the context of attack patterns. Especially when using CAPEC to abuse an API.
If that concept is foreign to you, I recommend you read my article on Adversarial Thinking for Bug Hunters.
Anyways, a few years ago I stumbled upon some interesting research by Brett Crawley in which he constructed some detailed mind maps that clearly articulate how mapping STRIDE to CAPEC can be done.
This article is meant to highlight his work, and articulate how to map STRIDE categories to common attack patterns. I’ll break it down by threat category, and list out the matching CAPECs, just in case you aren’t a fan of mind maps.
I will include not only the attack pattern ID, but also the descriptive title so you have an easy way to cross reference the attacks against the threat categories. If anything, just reading the attack pattern titles should provide a unique experience in associated threats to attacks.
Enjoy!
How to use the data in this article
Use this article as a point of exploration on how you can exploit potential threats you see in your threat model. Even if you don’t have an “attacker mindset”, you can map the threat categories directly to attack patterns. MITRE does a great job to make attack pattern titles descriptive, so the attacks should be self evident. When more generic attack patterns can be broken down into more specific attacks, you will find it a “child” of the parent.
If you are a visual learner, click the PNG images. It will expand to a more detailed mind map in an SVG format that is linkable to the MITRE attack database.
If you are a more textual structured learner, the bulleted list breaks down each attack pattern and its children into extended nodes.
Experiment. Think about how data flows through your system, and where the weaknesses may be. Then go to that threat category, and explore the types of attacks that might be possible. Many won’t be relevant. But some may be.
When you find an interesting attack pattern you think may apply, click the CAPEC id. That will take you to the attack database, where it will provide a good description of how you could attack the system. It will also describe how realistic it would be to execute, and the skill required. It may even include example code or patterns that you can use in your attack payload sequence.
Use that as a guide to inspire new ways to test the security of your system.
Good luck!
Spoofing

- CAPEC-148: Content Spoofing
- CAPEC-151: Identity Spoofing
- CAPEC-194: Fake the Source of Data
- CAPEC-195: Principal Spoof
- CAPEC-473: Signature Spoof
- CAPEC-459: Creating a Rogue Certification Authority Certificate
- CAPEC-474: Signature Spoofing by Key Theft
- CAPEC-475: Signature Spoofing by Improper Validation
- CAPEC-476: Signature Spoofing by Misrepresentation
- CAPEC-477: Signature Spoofing by Mixing Signed and Unsigned Content
- CAPEC-479: Malicious Root Certificate
- CAPEC-485: Signature Spoofing by Key Recreation
- CAPEC-89: Pharming
- CAPEC-98: Phishing
- CAPEC-154: Resource Location Spoofing
- CAPEC-173: Action Spoofing
- CAPEC-389: Content Spoofing via Application API Manipulation
- CAPEC-416: Manipulate Human Behavior
- CAPEC-407: Pretexting
- CAPEC-417: Influence Perception
- CAPEC-418: Influence Perception of Reciprocation
- CAPEC-420: Influence Perception of Scarcity
- CAPEC-421: Influence Perception of Authority
- CAPEC-422: Influence Perception of Commitment and Consistency
- CAPEC-423: Influence Perception of Liking
- CAPEC-424: Influence Perception of Consensus or Social Proof
- CAPEC-425: Target Influence via Framing
- CAPEC-426: Influence via Incentives
- CAPEC-427: Influence via Psychological Principles
Tampering

- CAPEC-123: Buffer Manipulation
- CAPEC-100: Overflow Buffers
- CAPEC-10: Buffer Overflow via Environment Variables
- CAPEC-14: Client-side Injection-induced Buffer Overflow
- CAPEC-24: Filter Failure through Buffer Overflow
- CAPEC-256: SOAP Array Overflow
- CAPEC-42: MIME Conversion
- CAPEC-44: Overflow Binary Resource File
- CAPEC-45: Buffer Overflow via Symbolic Links
- CAPEC-46: Overflow Variables and Tags
- CAPEC-47: Buffer Overflow via Parameter Expansion
- CAPEC-67: String Format Overflow in syslog()
- CAPEC-8: Buffer Overflow in an API Call
- CAPEC-9: Buffer Overflow in Local Command-Line Utilities
- CAPEC-540: Overread Buffers
- CAPEC-100: Overflow Buffers
- CAPEC-124: Shared Resource Manipulation
- CAPEC-129: Pointer Manipulation
- CAPEC-153: Input Data Manipulation
- CAPEC-126: Path Traversal
- CAPEC-128: Integer Attacks
- CAPEC-92: Forced Integer Overflow
- CAPEC-267: Leverage Alternate Encoding
- CAPEC-120: Double Encoding
- CAPEC-3: Using Leading ‘Ghost’ Character Sequences to Bypass Input Filters
- CAPEC-4: Using Alternative IP Address Encodings
- CAPEC-43: Exploiting Multiple Input Interpretation Layers
- CAPEC-52: Embedding NULL Bytes
- CAPEC-53: Postfix, Null Terminate, and Backslash
- CAPEC-64: Using Slashes and URL Encoding Combined to Bypass Validation Logic
- CAPEC-71: Using Unicode Encoding to Bypass Validation Logic
- CAPEC-72: URL Encoding
- CAPEC-78: Using Escaped Slashes in Alternate Encoding
- CAPEC-79: Using Slashes in Alternate Encoding
- CAPEC-80: Using UTF-8 Encoding to Bypass Validation Logic
- CAPEC-28: Fuzzing
- CAPEC-33: HTTP Request Smuggling
- CAPEC-34: HTTP Response Splitting
- CAPEC-105: HTTP Request Splitting
- CAPEC-165: File Manipulation
- CAPEC-73: User-Controlled Filename
- CAPEC-572: Artificially Inflate File Sizes
- CAPEC-655: Avoid Security Tool Identification by Adding Data
- CAPEC-635: Alternative Execution Due to Deceptive Filenames
- CAPEC-649: Adding a Space to a File Extension
- CAPEC-636: Hiding Malicious Data or Code within Files
- CAPEC-168: Windows ::DATA Alternate Data Stream
- CAPEC-74: Manipulating State
- CAPEC-75: Manipulating Writeable Configuration Files
- CAPEC-113: Interface Manipulation
- CAPEC-176: Configuration/Environment Manipulation
- CAPEC-161: Infrastructure Manipulation
- CAPEC-184: Software Integrity Attack
- CAPEC-272: Protocol Manipulation
- CAPEC-90: Reflection Attack in Authentication Protocol
- CAPEC-220: Client-Server Protocol Manipulation
- CAPEC-276: Inter-component Protocol Manipulation
- CAPEC-665: Exploitation of Thunderbolt Protection Flaws
- CAPEC-277: Data Interchange Protocol Manipulation
- CAPEC-278: Web Services Protocol Manipulation
- CAPEC-438: Modification During Manufacture
- CAPEC-444: Development Alteration
- CAPEC-206: Signing Malicious Code
- CAPEC-443: Malicious Logic Inserted Into Product by Authorized Developer
- CAPEC-445: Malicious Logic Insertion into Product Software via Configuration Management Manipulation
- CAPEC-446: Malicious Logic Insertion into Product via Inclusion of Third-Party Component
- CAPEC-511: Infiltration of Software Development Environment
- CAPEC-516: Hardware Component Substitution During Baselining
- CAPEC-520: Counterfeit Hardware Component Inserted During Product Assembly
- CAPEC-532: Altered Installed BIOS
- CAPEC-537: Infiltration of Hardware Development Environment
- CAPEC-538: Open-Source Library Manipulation
- CAPEC-539: ASIC With Malicious Functionality
- CAPEC-670: Software Development Tools Maliciously Altered
- CAPEC-672: Malicious Code Implanted During Chip Programming
- CAPEC-673: Developer Signing Maliciously Altered Software
- CAPEC-678: System Build Data Maliciously Altered
- CAPEC-447: Design Alteration
- CAPEC-517: Documentation Alteration to Circumvent Dial-down
- CAPEC-518: Documentation Alteration to Produce Under-performing Systems
- CAPEC-519: Documentation Alteration to Cause Errors in System Design
- CAPEC-521: Hardware Design Specifications Are Altered
- CAPEC-671: Requirements for ASIC Functionality Maliciously Altered
- CAPEC-674: Design for FPGA Maliciously Altered
- CAPEC-444: Development Alteration
- CAPEC-440: Hardware Integrity Attack
- CAPEC-439: Manipulation During Distribution
- CAPEC-441: Malicious Logic Insertion
- CAPEC-548: Contaminate Resource
- CAPEC-594: Traffic Injection
- CAPEC-624: Hardware Fault Injection
Repudiation

- CAPEC-67: String Format Overflow in syslog()
- CAPEC-195: Principal Spoof
- CAPEC-268: Audit Log Manipulation
- CAPEC-571: Block Logging to Central Repository
Information Disclosure

- CAPEC-129: Pointer Manipulation
- CAPEC-212: Functionality Misuse
- CAPEC-216: Communication Channel Manipulation
- CAPEC-554: Functionality Bypass
- CAPEC-117: Interception
- CAPEC-116: Excavation
- CAPEC-169: Footprinting
- CAPEC-292: Host Discovery
- CAPEC-285: ICMP Echo Request Ping
- CAPEC-294: ICMP Address Mask Request
- CAPEC-295: Timestamp Request
- CAPEC-296: ICMP Information Request
- CAPEC-297: TCP ACK Ping
- CAPEC-298: UDP Ping
- CAPEC-299: TCP SYN Ping
- CAPEC-612: WiFi MAC Address Tracking
- CAPEC-613: WiFi SSID Tracking
- CAPEC-618: Cellular Broadcast Message Request
- CAPEC-619: Signal Strength Tracking
- CAPEC-300: Port Scanning
- CAPEC-309: Network Topology Mapping
- CAPEC-497: File Discovery
- CAPEC-149: Explore for Predictable Temporary File Names
- CAPEC-529: Malware-Directed Internal Reconnaissance
- CAPEC-573: Process Footprinting
- CAPEC-574: Services Footprinting
- CAPEC-575: Account Footprinting
- CAPEC-576: Group Permission Footprinting
- CAPEC-577: Owner Footprinting
- CAPEC-580: System Footprinting
- CAPEC-646: Peripheral Footprinting
- CAPEC-292: Host Discovery
- CAPEC-224: Fingerprinting
- CAPEC-312: Active OS Fingerprinting
- CAPEC-317: IP ID Sequencing Probe
- CAPEC-318: IP ‘ID’ Echoed Byte-Order Probe
- CAPEC-319: IP (DF) ‘Don’t Fragment Bit’ Echoing Probe
- CAPEC-320: TCP Timestamp Probe
- CAPEC-321: TCP Sequence Number Probe
- CAPEC-322: TCP (ISN) Greatest Common Divisor Probe
- CAPEC-323: TCP (ISN) Counter Rate Probe
- CAPEC-324: TCP (ISN) Sequence Predictability Probe
- CAPEC-325: TCP Congestion Control Flag (ECN) Probe
- CAPEC-326: TCP Initial Window Size Probe
- CAPEC-327: TCP Options Probe
- CAPEC-328: TCP ‘RST’ Flag Checksum Probe
- CAPEC-329: ICMP Error Message Quoting Probe
- CAPEC-330: ICMP Error Message Echoing Integrity Probe
- CAPEC-331: ICMP IP Total Length Field Probe
- CAPEC-332: ICMP IP ‘ID’ Field Error Message Probe
- CAPEC-313: Passive OS Fingerprinting
- CAPEC-541: Application Fingerprinting
- CAPEC-312: Active OS Fingerprinting
- CAPEC-11: Cause Web Server Misclassification
- CAPEC-192: Protocol Analysis
- CAPEC-188: Reverse Engineering
- CAPEC-410: Information Elicitation
Denial of Service

- CAPEC-125: Flooding
- CAPEC-130: Excessive Allocation
- CAPEC-131: Resource Leak Exposure
- CAPEC-227: Sustained Client Engagement
- CAPEC-469: HTTP DoS
- CAPEC-25: Forced Deadlock
- CAPEC-607: Obstruction
- CAPEC-2: Inducing Account Lockout
Elevation of Privilege

- CAPEC-5: Blue Boxing
- CAPEC-21: Exploitation of Trusted Identifiers
- CAPEC-114: Authentication Abuse
- CAPEC-115: Authentication Bypass
- CAPEC-461: Web Services API Signature Forgery Leveraging Hash Function Extension Weakness
- CAPEC-480: Escaping Virtualization
- CAPEC-237: Escaping a Sandbox by Calling Code in Another Language
- CAPEC-664: Server Side Request Forgery
- CAPEC-668: Key Negotiation of Bluetooth Attack (KNOB)
- CAPEC-87: Forceful Browsing
- CAPEC-22: Exploiting Trust in Client
- CAPEC-94: Adversary in the Middle (AiTM)
- CAPEC-122: Privilege Abuse
- CAPEC-1: Accessing Functionality Not Properly Constrained by ACLs
- CAPEC-58: Restful Privilege Elevation
- CAPEC-679: Exploitation of Improperly Configured or Implemented Memory Protections
- CAPEC-680: Exploitation of Improperly Controlled Registers
- CAPEC-681: Exploitation of Improperly Controlled Hardware Security Identifiers
- CAPEC-36: Using Unpublished Interfaces
- CAPEC-121: Exploit Non-Production Interfaces
- CAPEC-661: Root/Jailbreak Detection Evasion via Debugging
- CAPEC-17: Using Malicious Files
- CAPEC-177: Create files with the same name as files protected with a higher classification
- CAPEC-263: Force Use of Corrupted Files
- CAPEC-562: Modify Shared File
- CAPEC-563: Add Malicious File to Shared Webroot
- CAPEC-642: Replace Binaries
- CAPEC-650: Upload a Web Shell to a Web Server
- CAPEC-35: Leveraging Executable Code in Non-Executable Files
- CAPEC-180: Exploiting Incorrectly Configured Access Control Security Levels
- CAPEC-221: Data Serialization External Entities Blowup
- CAPEC-503: WebView Exposure
- CAPEC-1: Accessing Functionality Not Properly Constrained by ACLs
- CAPEC-233: Privilege Escalation
- CAPEC-390: Bypassing Physical Security
- CAPEC-507: Physical Theft
- CAPEC-560: Use of Known Domain Credentials
- Password Abuse
- Encryption Abuse
- CAPEC-549: Local Code Execution
- CAPEC-248: Command Injection
- CAPEC-136: LDAP Injection
- CAPEC-66: SQL Injection
- CAPEC-88: OS Command Injection
- CAPEC-183: IMAP/SMTP Command Injection
- CAPEC-250: XML Injection
- CAPEC-676: NoSQL Injection
- CAPEC-40: Manipulating Writeable Terminal Devices
- CAPEC-137: Parameter Injection
- CAPEC-175: Code Inclusion
- CAPEC-242: Code Injection
- CAPEC-19: Embedding Scripts within Scripts
- CAPEC-23: File Content Injection
- CAPEC-44: Overflow Binary Resource File
- CAPEC-41: Using Meta-Characters in E-mail Headers to Inject Malicious Payloads
- CAPEC-63: Cross-site Scripting (XSS)
- CAPEC-588: DOM-Based XSS
- CAPEC-18: XSS Through Non-Script Elements
- CAPEC-32: XSS Through HTTP Query String
- CAPEC-86: XSS Through HTTP Headers
- CAPEC-198: XSS Targeting Error Pages
- CAPEC-199: XSS Using Alternate Syntax
- CAPEC-243: XSS Targeting HTML Attributes
- CAPEC-244: XSS Targeting URI Placeholders
- CAPEC-245: XSS Using Doubled Characters
- CAPEC-247: XSS Using Invalid Characters
- CAPEC-591: Reflected XSS
- CAPEC-18: XSS Through Non-Script Elements
- CAPEC-32: XSS Through HTTP Query String
- CAPEC-86: XSS Through HTTP Headers
- CAPEC-198: XSS Targeting Error Pages
- CAPEC-199: XSS Using Alternate Syntax
- CAPEC-243: XSS Targeting HTML Attributes
- CAPEC-244: XSS Targeting URI Placeholders
- CAPEC-245: XSS Using Doubled Characters
- CAPEC-247: XSS Using Invalid Characters
- CAPEC-592: Stored XSS
- CAPEC-18: XSS Through Non-Script Elements
- CAPEC-32: XSS Through HTTP Query String
- CAPEC-86: XSS Through HTTP Headers
- CAPEC-198: XSS Targeting Error Pages
- CAPEC-199: XSS Using Alternate Syntax
- CAPEC-243: XSS Targeting HTML Attributes
- CAPEC-244: XSS Targeting URI Placeholders
- CAPEC-245: XSS Using Doubled Characters
- CAPEC-247: XSS Using Invalid Characters
- CAPEC-209: XSS Using MIME Type Mismatch
- CAPEC-588: DOM-Based XSS
- CAPEC-468: Generic Cross-Browser Cross-Domain Theft
- CAPEC-240: Resource Injection
- CAPEC-610: Cellular Data Injection
- CAPEC-586: Object Injection
Conclusion
By aligning STRIDE categories with CAPEC attack patterns, you can identify and mitigate potential threats more precisely. This method leverages the strengths of both frameworks, offering a structured approach to threat identification and response.
Brett Crawley’s mind maps provide a visual representation of these mappings, making it easier for you to comprehend and implement. However, for those who prefer a textual approach, the detailed breakdown of threat categories and their corresponding CAPEC attack patterns in this article serves as a valuable reference.
By utilizing this article, you can explore how different attack patterns may exploit the threats identified in your threat model. This dual approach—visual and textual—caters to different learning styles and ensures comprehensive coverage. It encourages experimentation and thorough analysis of data flows within your systems to identify and address weaknesses.
Remember, the key to effective threat modeling and security testing is continuous learning and adaptation. By staying informed about new attack patterns and regularly updating your threat model, you can better protect your systems from evolving threats.
Good luck and stay vigilant!
One last thing…

Have you joined The API Hacker Inner Circle yet? It’s my FREE weekly newsletter where I share articles like this, along with pro tips, industry insights, and community news that I don’t tend to share publicly. If you haven’t, subscribe today at https://apihacker.blog.


