a mistake or condition that, if left unaddressed, could under the proper conditions contribute to a cyber-enabled capability being vulnerable to attack, allowing an adversary to make items function in unintended ways.
Property | Type | Description | Required? |
---|---|---|---|
description | Markdown String | should be short and limited to the key points that define this weakness | ✓ |
id | String | Globally unique URI identifying this object. | ✓ |
schema_version | String | CTIM schema version for this entity | ✓ |
type | WeaknessTypeIdentifier String | The fixed value weakness | ✓ |
abstraction_level | WeaknessAbstractionLevel String | defines the abstraction level for this weakness | |
affected_resources | SystemResource String List | identify system resources that can be affected by an exploit of this weakness | |
alternate_terms | AlternateTerm Object List | indicates one or more other names used to describe this weakness | |
architectures | Architecture Object List | Applicable architectures | |
background_details | Markdown String | information that is relevant but not related to the nature of the weakness itself | |
common_consequences | Consequence Object List | specify individual consequences associated with a weakness | |
detection_methods | DetectionMethod Object List | identify methods that may be employed to detect this weakness, including their strengths and limitations | |
external_ids | String List | ||
external_references | ExternalReference Object List | Specifies a list of external references which refers to non-CTIM information. This property is used to provide one or more URLs, descriptions, or IDs to records in other systems. | |
functional_areas | FunctionalArea String List | identifies the functional area of the software in which the weakness is most likely to occur | |
language | ShortString String | The human language this object is specified in. | |
languages | Language Object List | Applicable Languages | |
likelihood | HighMedLow String | Likelihood of exploit | |
modes_of_introduction | ModeOfIntroduction Object List | information about how and when a given weakness may be introduced | |
notes | Note Object List | provide any additional comments about the weakness | |
operating_systems | OperatingSystem Object List | Applicable operating systems | |
paradigms | Paradigm Object List | Applicable paradigms | |
potential_mitigations | Mitigation Object List | describe potential mitigations associated with a weakness | |
revision | Integer | A monotonically increasing revision, incremented each time the object is changed. | |
short_description | MedString String | A single line, short summary of the object. | |
source | MedString String | ||
source_uri | String | ||
structure | WeaknessStructure String | defines the structural nature of the weakness | |
technologies | Technology Object List | Applicable technologies | |
timestamp | Inst (Date) | The time this object was created at, or last modified. | |
title | ShortString String | A short title for this object, used as primary display and reference value | |
tlp | TLP String | Specification for how, and to whom, this object can be shared. |
- Reference: WeaknessType
defines the abstraction level for this weakness
-
This entry is optional
- defines the different abstraction levels that apply to a weakness. A
Class
is the most abstract type of weakness, typically described independent of any specific language or technology. ABase
is a more specific type of weakness that is still mostly independent of a resource or technology, but with sufficient details to provide specific methods for detection and prevention. AVariant
is a weakness that is described at a very low level of detail, typically limited to a specific language or technology. ACompound
weakness is a meaningful aggregation of several weaknesses, currently known as either a Chain or Composite. - Allowed Values:
- Base
- Class
- Compound
- Variant
- Reference: AbstractionEnumeration
- defines the different abstraction levels that apply to a weakness. A
identify system resources that can be affected by an exploit of this weakness
-
This entry is optional
-
This entry's type is sequential (allows zero or more values)
- defines a resource of a system
- Allowed Values:
- CPU
- File or Directory
- Memory
- System Process
- Reference: ResourceEnumeration
indicates one or more other names used to describe this weakness
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- AlternateTerm Object Value
- Details: AlternateTerm Object
Applicable architectures
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- Architecture Object Value
- Details: Architecture Object
information that is relevant but not related to the nature of the weakness itself
-
This entry is optional
- Markdown string with at most 5000 characters
specify individual consequences associated with a weakness
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- Consequence Object Value
- Details: Consequence Object
should be short and limited to the key points that define this weakness
-
This entry is required
- Markdown string with at most 5000 characters
identify methods that may be employed to detect this weakness, including their strengths and limitations
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- DetectionMethod Object Value
- Details: DetectionMethod Object
- This entry is optional
- This entry's type is sequential (allows zero or more values)
Specifies a list of external references which refers to non-CTIM information. This property is used to provide one or more URLs, descriptions, or IDs to records in other systems.
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- ExternalReference Object Value
- Details: ExternalReference Object
identifies the functional area of the software in which the weakness is most likely to occur
-
This entry is optional
-
This entry's type is sequential (allows zero or more values)
- Defines the different functional areas of software in which the weakness may appear
- Allowed Values:
- Authentication
- Authorization
- Code Libraries
- Counters
- Cryptography
- Error Handling
- File Processing
- Functional-Area-Independent
- Interprocess Communication
- Logging
- Memory Management
- Networking
- Number Processing
- Program Invocation
- Protection Mechanism
- Session Management
- Signals
- String Processing
- Reference: FunctionalAreaEnumeration
Globally unique URI identifying this object.
-
This entry is required
- IDs are URIs, for example
https://www.domain.com/ctia/judgement/judgement-de305d54-75b4-431b-adb2-eb6b9e546014
for a Judgement. This ID type compares to the STIX id field. The optional STIX idref field is not used.
- IDs are URIs, for example
The human language this object is specified in.
-
This entry is optional
- String with at most 1024 characters
Applicable Languages
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- Language Object Value
- Details: Language Object
Likelihood of exploit
-
This entry is optional
- Allowed Values:
- High
- Info
- Low
- Medium
- None
- Unknown
- Reference: HighMedLowVocab
- Allowed Values:
information about how and when a given weakness may be introduced
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- ModeOfIntroduction Object Value
- Details: ModeOfIntroduction Object
provide any additional comments about the weakness
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- Note Object Value
- Details: Note Object
Applicable operating systems
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- OperatingSystem Object Value
- Details: OperatingSystem Object
Applicable paradigms
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- Paradigm Object Value
- Details: Paradigm Object
describe potential mitigations associated with a weakness
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- Mitigation Object Value
- Details: Mitigation Object
A monotonically increasing revision, incremented each time the object is changed.
-
This entry is optional
- Zero, or a positive integer
CTIM schema version for this entity
-
This entry is required
- A semantic version matching the CTIM version against which this object should be valid.
A single line, short summary of the object.
-
This entry is optional
- String with at most 2048 characters
-
This entry is optional
- String with at most 2048 characters
-
This entry is optional
- A URI
defines the structural nature of the weakness
-
This entry is optional
- structural natures of a weakness. A Simple structure represents a single weakness whose exploitation is not dependent on the presence of another weakness. A Composite is a set of weaknesses that must all be present simultaneously in order to produce an exploitable vulnerability, while a Chain is a set of weaknesses that must be reachable consecutively in order to produce an exploitable vulnerability.
- Allowed Values:
- Chain
- Composite
- Simple
- Reference: StructureEnumeration)
Applicable technologies
- This entry is optional
- This entry's type is sequential (allows zero or more values)
- Technology Object Value
- Details: Technology Object
The time this object was created at, or last modified.
-
This entry is optional
- Schema definition for all date or timestamp values. Serialized as a string, the field should follow the rules of the ISO8601 standard.
A short title for this object, used as primary display and reference value
-
This entry is optional
- String with at most 1024 characters
Specification for how, and to whom, this object can be shared.
-
This entry is optional
- TLP stands for Traffic Light Protocol, which indicates precisely how this resource is intended to be shared, replicated, copied, etc.
- Default: green
- Allowed Values:
- amber
- green
- red
- white
The fixed value weakness
-
This entry is required
- The fixed value "weakness"
- Must equal: "weakness"
External references are used to describe pointers to information represented outside of CTIM. For example, a Malware object could use an external reference to indicate an ID for that malware in an external database or a report could use references to represent source material.
Property | Type | Description | Required? |
---|---|---|---|
source_name | MedString String | The source within which the external-reference is defined (system, registry, organization, etc.) | ✓ |
description | Markdown String | ||
external_id | String | An identifier for the external reference content. | |
hashes | String List | Specifies a dictionary of hashes for the contents of the url. | |
url | String | A URL reference to an external resource |
- Reference: External Reference
-
This entry is optional
- Markdown string with at most 5000 characters
An identifier for the external reference content.
- This entry is optional
Specifies a dictionary of hashes for the contents of the url.
- This entry is optional
- This entry's type is sequential (allows zero or more values)
The source within which the external-reference is defined (system, registry, organization, etc.)
-
This entry is required
- String with at most 2048 characters
A URL reference to an external resource
-
This entry is optional
- A URI
Property | Type | Description | Required? |
---|---|---|---|
prevalence | Prevalence String | defines the different regularities that guide the applicability of platforms | ✓ |
class | LanguageClass String | class of language | |
name | ShortString String | Language name (Clojure, Java, ...) |
class of language
-
This entry is optional
- class of source code language
- Allowed Values:
- Assembly
- Compiled
- Interpreted
- Reference: LanguageClassEnumeration
Language name (Clojure, Java, ...)
-
This entry is optional
- String with at most 1024 characters
defines the different regularities that guide the applicability of platforms
-
This entry is required
- defines the different regularities that guide the applicability of platforms
- Allowed Values:
- Often
- Rarely
- Sometimes
- Undetermined
- Reference: PrevalenceEnumeration
Property | Type | Description | Required? |
---|---|---|---|
prevalence | Prevalence String | defines the different regularities that guide the applicability of platforms | ✓ |
class | OperatingSystemClass String | ||
cpe_id | ShortString String | ||
name | ShortString String | ||
version | ShortString String |
-
This entry is optional
- class of operating systems
- Allowed Values:
- Android
- Apple iOS
- Cisco IOS
- Linux
- Unix
- Windows
- macOs
- Reference: OperatingSystemClassEnumeration
-
This entry is optional
- String with at most 1024 characters
-
This entry is optional
- String with at most 1024 characters
defines the different regularities that guide the applicability of platforms
-
This entry is required
- defines the different regularities that guide the applicability of platforms
- Allowed Values:
- Often
- Rarely
- Sometimes
- Undetermined
- Reference: PrevalenceEnumeration
-
This entry is optional
- String with at most 1024 characters
Property | Type | Description | Required? |
---|---|---|---|
prevalence | Prevalence String | defines the different regularities that guide the applicability of platforms | ✓ |
class | ArchitectureClass String | class of architecture | |
name | ShortString String | architecture name (ARM, x86, ...) |
class of architecture
-
This entry is optional
- Allowed Values:
- Embedded
- Microcomputer
- Workstation
- Reference: ArchitectureClassEnumeration
- Allowed Values:
architecture name (ARM, x86, ...)
-
This entry is optional
- String with at most 1024 characters
defines the different regularities that guide the applicability of platforms
-
This entry is required
- defines the different regularities that guide the applicability of platforms
- Allowed Values:
- Often
- Rarely
- Sometimes
- Undetermined
- Reference: PrevalenceEnumeration
Property | Type | Description | Required? |
---|---|---|---|
prevalence | Prevalence String | defines the different regularities that guide the applicability of platforms | ✓ |
name | ShortString String | paradigm name (Client Server, Mainframe) |
paradigm name (Client Server, Mainframe)
-
This entry is optional
- String with at most 1024 characters
defines the different regularities that guide the applicability of platforms
-
This entry is required
- defines the different regularities that guide the applicability of platforms
- Allowed Values:
- Often
- Rarely
- Sometimes
- Undetermined
- Reference: PrevalenceEnumeration
Property | Type | Description | Required? |
---|---|---|---|
prevalence | Prevalence String | defines the different regularities that guide the applicability of platforms | ✓ |
name | ShortString String | technology name (Web Server, Web Client) |
technology name (Web Server, Web Client)
-
This entry is optional
- String with at most 1024 characters
defines the different regularities that guide the applicability of platforms
-
This entry is required
- defines the different regularities that guide the applicability of platforms
- Allowed Values:
- Often
- Rarely
- Sometimes
- Undetermined
- Reference: PrevalenceEnumeration
Property | Type | Description | Required? |
---|---|---|---|
term | ShortString String | the actual alternate term | ✓ |
description | Markdown String | provides context for the alternate term by which this weakness may be known. |
provides context for the alternate term by which this weakness may be known.
-
This entry is optional
- Markdown string with at most 5000 characters
the actual alternate term
-
This entry is required
- String with at most 1024 characters
Property | Type | Description | Required? |
---|---|---|---|
phase | SoftwarePhase String | identifies the point in the software life cycle at which the weakness may be introduced | ✓ |
note | Markdown String | provides a typical scenario related to introduction during the given phase |
- Reference: ModesOfIntroductionType
provides a typical scenario related to introduction during the given phase
-
This entry is optional
- Markdown string with at most 5000 characters
identifies the point in the software life cycle at which the weakness may be introduced
-
This entry is required
- defines the different regularities that guide the applicability of platforms
- Allowed Values:
- Architecture and Design
- Build and Compilation
- Bundling
- Distribution
- Documentation
- Implementation
- Installation
- Operation
- Patching and Maintenance
- Policy
- Porting
- Requirements
- System Configuration
- Testing
- Reference: PhaseEnumeration
Property | Type | Description | Required? |
---|---|---|---|
scopes | ConsequenceScope String List | identifies the security property that is violated | ✓ |
impacts | TechnicalImpact String List | describes the technical impact that arises if an adversary succeeds in exploiting this weakness | |
likelihood | HighMedLow String | how likely the specific consequence is expected to be seen relative to the other consequences | |
note | Markdown String | additional commentary about a consequence |
- Reference: CommonConsequencesType
describes the technical impact that arises if an adversary succeeds in exploiting this weakness
-
This entry is optional
-
This entry's type is sequential (allows zero or more values)
- Allowed Values:
- Alter Execution Logic
- Bypass Protection Mechanism
- DoS: Amplification
- DoS: Crash, Exit, or Restart
- DoS: Instability
- DoS: Resource Consumption (CPU)
- DoS: Resource Consumption (Memory)
- DoS: Resource Consumption (Other)
- Execute Unauthorized Code or Commands
- Gain Privileges or Assume Identity
- Hide Activities
- Modify Application Data
- Modify Files or Directories
- Modify Memory
- Quality Degradation
- Read Application Data
- Read Files or Directories
- Read Memory
- Unexpected State
- Varies by Context
- Reference: TechnicalImpactEnumeration
- Allowed Values:
how likely the specific consequence is expected to be seen relative to the other consequences
-
This entry is optional
- Allowed Values:
- High
- Info
- Low
- Medium
- None
- Unknown
- Reference: HighMedLowVocab
- Allowed Values:
additional commentary about a consequence
-
This entry is optional
- Markdown string with at most 5000 characters
identifies the security property that is violated
-
This entry is required
-
This entry's type is sequential (allows zero or more values)
- defines the different areas of software security that can be affected by exploiting a weakness.
- Allowed Values:
- Access Control
- Accountability
- Authentication
- Authorization
- Availability
- Confidentiality
- Integrity
- Non-Repudiation
- Reference: ScopeEnumeration
Property | Type | Description | Required? |
---|---|---|---|
description | Markdown String | provide some context of how this method can be applied to a specific weakness | ✓ |
method | DetectionMethod String | identifies the particular detection method being described | ✓ |
effectiveness | DetectionEffectiveness String | how effective the detection method may be in detecting the associated weakness | |
effectiveness_notes | Markdown String | provides additional discussion of the strengths and shortcomings of this detection method |
- Reference: DetectionMethodsType
provide some context of how this method can be applied to a specific weakness
-
This entry is required
- Markdown string with at most 5000 characters
how effective the detection method may be in detecting the associated weakness
-
This entry is optional
- level of effectiveness that a detection method may have in detecting an associated weakness
- Allowed Values:
- High
- Limited
- Moderate
- None
- Opportunistic
- SOAR Partial
- Reference: DetectionEffectivenessEnumeration
provides additional discussion of the strengths and shortcomings of this detection method
-
This entry is optional
- Markdown string with at most 5000 characters
identifies the particular detection method being described
-
This entry is required
- method used to detect a weakness
- Allowed Values:
- Architecture or Design Review
- Automated Analysis
- Automated Dynamic Analysis
- Automated Static Analysis
- Automated Static Analysis - Binary or Bytecode
- Automated Static Analysis - Source Code
- Black Box
- Dynamic Analysis with Automated Results Interpretation
- Dynamic Analysis with Manual Results Interpretation
- Fuzzing
- Manual Analysis
- Manual Dynamic Analysis
- Manual Static Analysis
- Manual Static Analysis - Binary or Bytecode
- Manual Static Analysis - Source Code
- Other
- White Box
- Reference: DetectionMethodEnumeration
Property | Type | Description | Required? |
---|---|---|---|
description | Markdown String | a description of this individual mitigation including any strengths and shortcomings of this mitigation for the weakness | ✓ |
effectiveness | Effectiveness String | summarizes how effective the mitigation may be in preventing the weakness | |
effectiveness_notes | Markdown String | ||
phases | SoftwarePhase String List | indicates the development life cycle phase during which this particular mitigation may be applied | |
strategy | MitigationStrategy String | a general strategy for protecting a system to which this mitigation contributes |
- Reference: PotentialMitigationsType
a description of this individual mitigation including any strengths and shortcomings of this mitigation for the weakness
-
This entry is required
- Markdown string with at most 5000 characters
summarizes how effective the mitigation may be in preventing the weakness
-
This entry is optional
- related to how effective a mitigation may be in preventing the weakness
- Allowed Values:
- Defense in Depth
- High
- Incidental
- Limited
- Moderate
- None
- Reference: EffectivenessEnumeration
-
This entry is optional
- Markdown string with at most 5000 characters
indicates the development life cycle phase during which this particular mitigation may be applied
-
This entry is optional
-
This entry's type is sequential (allows zero or more values)
- defines the different regularities that guide the applicability of platforms
- Allowed Values:
- Architecture and Design
- Build and Compilation
- Bundling
- Distribution
- Documentation
- Implementation
- Installation
- Operation
- Patching and Maintenance
- Policy
- Porting
- Requirements
- System Configuration
- Testing
- Reference: PhaseEnumeration
a general strategy for protecting a system to which this mitigation contributes
-
This entry is optional
- strategy for protecting a system to which a mitigation contributes
- Allowed Values:
- Attack Surface Reduction
- Compilation or Build Hardening
- Enforcement by Conversion
- Environment Hardening
- Firewall
- Input Validation
- Language Selection
- Libraries or Frameworks
- Output Encoding
- Parameterization
- Refactoring
- Resource Limitation
- Sandbox or Jail
- Separation of Privilege
- Reference: MitigationStrategyEnumeration
Property | Type | Description | Required? |
---|---|---|---|
note | Markdown String | ✓ | |
type | NoteType String | ✓ |
-
This entry is required
- Markdown string with at most 5000 characters
-
This entry is required
- defines the different types of notes that can be associated with a weakness
- Allowed Values:
- Applicable Platform
- Maintenance
- Relationship
- Research Gap
- Terminology
- Theoretical
- Reference: [NoteTypeEnumeration] (https://cwe.mitre.org/documents/schema/#NoteTypeEnumeration)