OWASP Threat Model Library
Our Mission
🎯
To enable secure software architectures by democratising threat modeling through open-source, community engagement and AI advancements with clean, vetted and reliable data.
Welcome to the first, open-sourced, structured, peer-reviewed threat modeling dataset. By generating this open-source curated dataset of real-world threat models, we aim to:
- Promote and contribute to the standardization of threat modelling
- Contribute to the knowledge exchange between peers by reviewing every model.
- Improve the security of open-source applications by having them openly threat modeled. Death to security via obscurity!
- Create a dataset to fine-tune existing pre-trained LLMs to achieve more reliable threat modeling results
News
Project will be presented at the OWASP Global AppSec in Barcelona on 29th of May 2025, along with the release of the schema!
v1.0.0 of the schema is out!
Road Map
- Start Receiving Contributions!
- See the schema, uploaded examples and start threat modelling!
- Community Engagement:
- Workshops and hackathons will be organized to promote collaboration and encourage community involvement.
- Threat Modeling for Popular Open Source Software:
- Initiatives will be launched to model the security threats of widely used open-source software.
FAQs
-
How do I contribute?
- Start by threat modeling! The JSON schema is available, and there are example threat models too. Use these examples to create your threat model and submit a pull request (PR) on the repository. Detailed contribution guidelines will be provided once the schema is finalized.
- Contribute by donating - head over to the OWASP Projects Page, click donate and contributions can go directly to us if you donate more than $1000!
- Register interest for a hackathon here.
-
What is the CycloneDx TM-BOM?
CycloneDx TM-BOM (Threat Model Bill of Materials) is an industry-standard specification that provides a way to describe threat models. The official release is pending! Once TM-BOM is released, there will be another version released of the Threat Model Library Schema to ensure compatibility.
-
What tools can I use for threat modeling?
There are several tools available for threat modeling, both open-source and commercial. Some popular options include:
- OWASP Threat Dragon (open-source)
- OWASP pytm (open-source)
- Microsoft Threat Modeling Tool (free, proprietary)
You can use any tool you’re comfortable with as long as the output can be converted into the JSON format once the schema is published.
-
How will threat models be reviewed and validated?
Threat models submitted to the repository will be reviewed by the maintainers and the community. The review process will ensure that the model adheres to the schema, follows best practices, and provides meaningful insights. Reviewers may request adjustments or additional details before merging.
-
What happens after I submit a threat model?
After submission, the maintainers and community will review the model. If it meets the standards, it will be merged into the library. We encourage contributors to continuously update and refine threat models as new information or threats emerge.
-
Will there be support or training for beginners in threat modeling?
Yes, we plan to offer training resources, workshops, and tutorials for those who are new to threat modeling. These resources will help you understand the key concepts, tools, and best practices in threat modeling.
-
How do I report issues or suggest improvements to the project?
If you encounter any issues or have suggestions for improvement, you can open an issue in the project’s GitHub repository. Be sure to provide as much detail as possible, and if applicable, a proposed solution or workaround.
Thank You Notes
Thank you to our sponsors from DevArmor!
Contributions will be used for organising hackathons and community engagement. Register interest for a hackathon here.
Thank you to the CycloneDX TM-BOM workgroup - including:
Contact Us
OWASP Threat Model Library Schema Specification
This specification explains each major element defined in the OWASP Threat Model Library JSON Schema. It is designed to help understand the purpose and relationships of various schema components.
Document Metadata
version
A structured version number (e.g., “1.0”) representing the current version of the threat model. Helps track evolution of the model over time.
$schema
Specifies the Threat Model Library schema, and its specific version, the threat model document conforms to. For example:
“$schema”: “https://github.com/OWASP/www-project-threat-model-library/blob/v1.0.0/threat-model.schema.json”
System Description
The following top-level properties describe the system being threat-modeled.
scope
Defines the boundary and criticality of what is being modeled. This is foundational to any threat modeling exercise, as it determines what is included/excluded - “scoping the work” is a common terminology used in threat modelling or other security domains like pentesting.
title
: Name of the system being modeled.description
: Describes what’s in scope and what’s out of scope. This is distinct from the description of the system’s purpose and behavior, which goes in the top-leveldescription
property, separate fromscope
.business_criticality
: Indicates how important the system is to business operations. This helps prioritize risk mitigation.data_sensitivity
: Flags if the system handles sensitive data types (e.g., credentials, PII). Critical for compliance and privacy.exposure
:internal
orexternal
access. Externally facing systems are at higher risk.tier
: Prioritization tier used to guide depth of modeling, risk exposure and review frequency.mission_critical:
- business criticality maximal + external
- business critical maximal + stores sensitive data
- business criticality high + stores sensitive data + external
business_critical
- business criticality maximal and no sensitive data, internal
- business criticality high + external but no sensitive data
- business criticality high + sensitive data + internal
- business criticality moderate but sensitive data + external
important
- business criticality moderate and below + sensitive data
- business criticality moderate + external, no sensitive data
non_critical
- business criticality moderate and below + internal and no sensitive data
- business criticality low and minimal, no sensitive data, can be external
description
Describes the system’s purpose and behavior and any other business context not otherwise captured.
Architecture Modeling
trust_zones
Logical areas with uniform trust assumptions (e.g., public internet, internal VPC, secure enclave). Used to define boundaries of exposure and control. Each component
is assigned to a trust zone
.
trust_boundaries
Interfaces where data crosses from one trust zone to another. These are high-risk areas in any architecture:
- Controls (e.g., authentication, access control) must be explicitly modeled here.
- To exist they must be defined with controls such as encryption, authentication, token management, session security …
- If a trust boundary is not defined then that is a threat modelling finding - the root cause of potential threats!
actors
These are commonly known as entities. Human or machine entities that interact with the system. Key to identifying external threats and misuse scenarios.
components
Building blocks of the system (e.g., APIs, backend services). Central to threat modeling since most threats target specific components.
data_stores
Where data is stored or persisted. Important for identifying risks like unauthorized access, data corruption, and backups.
data_sets
Logical groupings of data. Mapping datasets to their stores helps clarify data flow, exposure, and sensitivity.
data_flows
Represents communication between components, actors, and data stores. Data flows are key to STRIDE-based threat modeling and attack path analysis.
diagrams
Enables visual system modeling using PlantUML, Mermaid, or similar. Essential for collaboration and reviewing architecture.
Security Modeling
assumptions
Things you take as true about your system (e.g., “TLS terminates at the load balancer”). Helps clarify model boundaries and gaps.
description
: An arbitrary statement about the system.topics
: A list of topics on which the assumption makes a statement. These topics will be of a standardized taxonomy and must not be arbitrarily chosen. As of right now, no topics have been standardized, so this property must not be specified.validity
: Whether the assumption isunconfirmed
(proposed/assumed by a stakeholder),confirmed
(definitely true), orrejected
(proposed but known to be false).
threat_personas
Adversary profiles that inform how and why threats might be realized. Useful for risk assessment and simulating realistic attacker behavior.
Aids in justifying and validating threats. Supports structured persona-based modeling and possible support for integration with threat detection tools in the future.
threats
Individual threat events. Each threat references its persona, attack vector (CAPEC), and weakness (CWE). They are the core unit of security concern in the model.
controls
Implementations of mitigations tied to specific threats. Helps ensure your model leads to actionable recommendations.
Effectiveness of controls: Added as a property (e.g., minimal to maximal scale) to assess relative control strength.
Distinguished from mitigations which is the process of implementing countermeasures. A mitigation is the effect or strategy of reducing risk, rather than the specific tool or mechanism.
We chose the term “controls” over alternatives like “mitigations” or “countermeasures” because:
- controls is more aligned with risk and governance frameworks such as ISO 27001, NIST, CIS, and SOC2
- it reflects the language used in security audits, risk treatment plans, and governance reporting
- it’s broader and implementation-agnostic, a control can be preventive, detective, or corrective - not just a technical fix
- “mitigation” often implies reduction in risk, but not full prevention
- “countermeasure” is more military/technical and less used in enterprise security governance
- it enables clearer mapping between threat models and control libraries, using controls makes it easier to link threat model outputs to control catalogs like NIST 800-53, OWASP ASVS, or CIS Controls
In short, “control” unifies threat modeling with risk governance and enterprise security frameworks — making threat models more actionable and aligned with business processes.
risks
Risk is a function of the likelihood of a threat event / scenario’s occurrence and potential adverse impact should the event occur. A risk should be present only if a vulnerability or weakness are present that could lead to a threat event. Ties the threat model to risk management practices and governance. Enables prioritization.
Even though risks are influenced by org-specific factors (impact context, likelihood drivers), the schema retains this optional element to support linkage with enterprise risk registers.
summary
To formulate a risk summary consider how a threat with an exploitable weakness or vulnerability leads to a risk event and certain impact.
likelihood
Likelihood is a factor of risk. To estimate the likelihood consider the applicability of the threat persona to the business context, threat source, threat scenario, existing vulnerabilities or pre-existing conditions.
impact
Impact is a factor of Risk. Key considerations for impact are:
- Operational Impact: How the threat affects business processes.
- Financial Impact: The potential monetary loss.
- Reputation Impact: Public perception and long-term trust.
- Regulatory/Legal Impact: Fines, penalties, or legal consequences.
level
- Methodology:
Likelihood x Impact
- Output:
- Score: Numerical
- Descriptive: Text label (e.g., Low, Medium, High)
score
The cross product of impact and likelihood yields the risk score, a scale from 1 to 25:
5x5 Risk Level Matrix
The cross product of impact and likelihood yields the risk score (1–25). Color-coded with emojis to reflect severity bands:
5x5 Risk Level Matrix
The cross product of impact and likelihood yields the risk score (1–25). The matrix below is color-coded with square emojis to reflect severity bands:
Likelihood \ Impact | 1 (Negligible) | 2 (Minor) | 3 (Moderate) | 4 (Major) | 5 (Severe) |
---|---|---|---|---|---|
1 (Rare) | 🟩 1 (Very Low) | 🟩 2 (Very Low) | 🟨 3 (Low) | 🟨 4 (Low) | 🟧 5 (Medium) |
2 (Unlikely) | 🟩 2 (Very Low) | 🟨 4 (Low) | 🟧 6 (Medium) | 🟧 8 (Medium) | 🟥 10 (High) |
3 (Possible) | 🟨 3 (Low) | 🟧 6 (Medium) | 🟧 9 (Medium) | 🟥 12 (High) | 🟪 15 (Very High) |
4 (Likely) | 🟨 4 (Low) | 🟧 8 (Medium) | 🟥 12 (High) | 🟪 16 (Very High) | 🔴 20 (Critical) |
5 (Almost Certain) | 🟧 5 (Medium) | 🟥 10 (High) | 🟪 15 (Very High) | 🔴 20 (Critical) | 🔴 25 (Critical) |
Based on the numerical value of the risk score, we define the following risk levels:
Risk Score Range | Risk Level |
---|---|
🟩 1–2 | Very Low |
🟨3–4 | Low |
🟧 5–9 | Medium |
🟥 10–12 | High |
🟪13–16 | Very High |
🔴20–25 | Critical |
Likelihood and impact assesment guidance
Value | Likelihood | Definition |
---|---|---|
1 | Rare | Very unlikely to occur; may happen only in exceptional circumstances, such as once in 10+ years. |
2 | Unlikely | Could occur but not expected; has happened once in 5–10 years. |
3 | Possible | Might occur under some circumstances; happens every 2–5 years. |
4 | Likely | Expected to occur in some situations; happens at least once a year. |
5 | Almost Certain | Expected to occur regularly; happens multiple times a year or more frequently. |
Impact Severity Definitions
Value | Impact Severity | Operational Impact | Financial Impact | Reputation Impact | Regulatory/Legal Impact |
---|---|---|---|---|---|
1 | Insignificant | Minimal disruption, no noticeable effect on business operations. | <0.1% of annual revenue. | No damage to reputation. | No legal or regulatory implications. |
2 | Minor | Some minor disruption, but recoverable with little effort. | 0.1% to 0.5% of annual revenue. | Small, localized damage to reputation, quickly recoverable. | Minor compliance issues, no fines or legal action. |
3 | Moderate | Noticeable operational impact, moderate recovery efforts required. | 0.5% to 1% of annual revenue. | Moderate reputation damage; some negative press, recoverable. | Possible fines or legal action; warning from regulators. |
4 | Major | Significant operational disruption; requires substantial resources. | 1% to 5% of annual revenue. | Significant damage to reputation; major loss of customer trust. | Substantial legal issues; fines and regulatory penalties. |
5 | Severe | Critical operational impact; operations cease or major losses. | >5% of annual revenue. | Severe reputation damage; long-term loss of market position. | Major legal action; large fines; potential shutdown. |
Extensions
extensions
Allows custom fields while enforcing namespace uniqueness. Enables organizations to capture additional data relevant to their threat modeling workflows. For example:
{
...
"extensions": {
"example.com/owasp-threat-model-foobar-extension": {
// Whatever schema is needed, whereas the schema should be clearly
// documented at https://example.com/owasp-threat-model-foobar-extension.
...
},
"example.net/other-extension": {
// Analogously.
...
}
}
}
This schema enables traceable, evidence-backed, and enterprise-ready threat modeling for modern systems. It is optimized for structured outputs, tool integration, and supports formal risk analysis through linkage of threats, risks, and mitigations.
For implementation guidance or examples, refer to https://github.com/OWASP/www-project-threat-model-library.