CWE-1420
Exposure of Sensitive Information during Transient Execution
A processor event or prediction may allow incorrect operations (or correct operations with incorrect data) to execute transiently, potentially exposing data over a covert channel.
Abstraction
Base
Structure
Simple
Likelihood of Exploit
Medium
Understand the problem
What is the problem?
Extended description
Root cause
How and when does the problem arise?
Lifecycle phase
Architecture and Design
Lifecycle phase
Implementation
Risk
What does successful exploitation lead to?
Affected security scopes: Confidentiality
Defence
How is it prevented and fixed?
Architecture and Design
Architecture and design approach
Detail
Architecture and Design
Architecture and design approach
Effectiveness: Limited
This technique has many pitfalls. For example, InvisiSpec was an early attempt to mitigate this weakness by blocking "micro-architectural covert and side channels through the multiprocessor data cache hierarchy due to speculative loads" [REF-1417]. Commodity processors and SoCs have many covert and side channels that exist outside of the data cache hierarchy. Even when some of these channels are blocked, others (such as execution ports [REF-1418]) may allow an attacker to infer confidential data. Mitigation strategies that attempt to prevent transient execution from causing observable discrepancies also have other pitfalls, for example, see [REF-1419].
Requirements
Security requirement
Detail
Requirements
Security requirement
Effectiveness: Moderate
Instructions or features that constrain transient execution or suppress its side effects may impact performance.
Requirements
Security requirement
Detail
Requirements
Security requirement
Effectiveness: Limited
Disabling specific predictors or other hardware features may result in significant performance overhead.
Requirements
Security requirement
Detail
Requirements
Security requirement
Effectiveness: Defense in Depth
Specific software algorithms can be used by an attacker to compensate for a lack of a high-resolution time source [REF-1420].
Build and Compilation
Build and Compilation aşaması savunması
Detail
Build and Compilation
Build and Compilation aşaması savunması
Effectiveness: High
Build and Compilation
Build and Compilation aşaması savunması
Detail
Build and Compilation
Build and Compilation aşaması savunması
Effectiveness: Moderate
When used to comprehensively mitigate a transient execution weakness (for example, by inserting an LFENCE after every instruction in a program), serialization instructions can introduce significant performance overhead. On the other hand, when used to mitigate only a relatively small number of high-risk code sequences, serialization instructions may have a low or negligible impact on performance.
Build and Compilation
Build and Compilation aşaması savunması
Detail
Build and Compilation
Build and Compilation aşaması savunması
Effectiveness: Moderate
Some CFI techniques may not be able to constrain transient execution, even though they are effective at constraining architectural execution. Or they may be able to provide some additional protection against a transient execution weakness, but without comprehensively mitigating the weakness. For example, Clang-CFI provides strong architectural CFI properties and can make some transient execution weaknesses more difficult to exploit [REF-1398].
Build and Compilation
Build and Compilation aşaması savunması
Detail
Build and Compilation
Build and Compilation aşaması savunması
Effectiveness: Limited
This technique may only be effective for software that is compiled with this mitigation. For some transient execution weaknesses, this technique may not be sufficient to protect software that is compiled without the affected instruction(s). For example, see CWE-1421.
Build and Compilation
Build and Compilation aşaması savunması
Detail
Build and Compilation
Build and Compilation aşaması savunması
Effectiveness: Limited
Address masking and related software mitigation techniques have been used to harden specific code sequences that could potentially be exploited via transient execution. For example, the Linux kernel makes limited use of manually inserted address masks to mitigate bounds-check bypass [REF-1390]. Compiler-based techniques have also been used to automatically harden software [REF-1425].
Build and Compilation
Build and Compilation aşaması savunması
Detail
Build and Compilation
Build and Compilation aşaması savunması
Effectiveness: Incidental
Some transient execution weaknesses can be exploited even if a single instruction is executed transiently after a processor event or mis-prediction. This mitigation strategy has many other pitfalls that prevent it from eliminating this weakness entirely. For example, see [REF-1389].
Documentation
Documentation aşaması savunması
Detail
Documentation
Documentation aşaması savunması
Effectiveness: High
Verification
How is it detected?
Manual Analysis
ModerateHardware designers can also scrutinize aspects of the instruction set architecture that have undefined behavior; these can become a focal point when applying other detection methods. Manual analysis may not reveal all weaknesses in a processor specification and should be combined with other detection methods to improve coverage.
Fuzzing
OpportunisticFuzzing may not reveal all weaknesses in a processor specification and should be combined with other detection methods to improve coverage.
Fuzzing
OpportunisticAt the time of this writing, publicly available software fuzzing tools can only detect a subset of transient execution weaknesses in software (for example, [REF-1429] can only detect instances of Spectre v1) and may produce false positives.
Automated Static Analysis
LimitedAt the time of this writing, publicly available software static analysis tools can only detect a subset of transient execution weaknesses in software and may produce false positives.
Automated Analysis
HighThis method can be useful for detecting whether a processor is affected by known weaknesses, but it may not be useful for detecting unknown weaknesses.