4.6 Article

oo7: Low-Overhead Defense Against Spectre Attacks via Program Analysis

Journal

IEEE TRANSACTIONS ON SOFTWARE ENGINEERING
Volume 47, Issue 11, Pages 2504-2519

Publisher

IEEE COMPUTER SOC
DOI: 10.1109/TSE.2019.2953709

Keywords

Program processors; Malware; Arrays; Transient analysis; Benchmark testing; Analytical models; Maintenance engineering; Cache side-channel attacks; taint analysis; binary analysis; binary hardening; software security

Funding

  1. National Research Foundation, Prime Ministers Office, Singapore under its National Cybersecurity R&D Program (TSUNAMi project) [NRF2014NCRNCR00121]

Ask authors/readers for more resources

The Spectre vulnerability in modern processors has been widely reported, and the static analysis approach oo7 is proposed to mitigate Spectre attacks by detecting and patching potentially vulnerable code snippets in program binaries. This method can detect various Spectre-vulnerable code patterns, insert fences at vulnerable conditional branches to prevent speculative execution, with an observed performance overhead of around 5.9% on SPECint benchmarks.
The Spectre vulnerability in modern processors has been widely reported. The key insight in this vulnerability is that speculative execution in processors can be misused to access the secrets. Subsequently, even though the speculatively executed instructions are squashed, the secret may linger in micro-architectural states such as cache, and can potentially be accessed by an attacker via side channels. In this paper, we propose oo7, a static analysis approach that can mitigate Spectre attacks by detecting potentially vulnerable code snippets in program binaries and protecting them against the attack by patching them. Our key contribution is to balance the concerns of effectiveness, analysis time and run-time overheads. We employ control flow extraction, taint analysis, and address analysis to detect tainted conditional branches and speculative memory accesses. oo7 can detect all fifteen purpose-built Spectre-vulnerable code patterns [1] , whereas Microsoft compiler with Spectre mitigation option can only detect two of them. We also report the results of a large-scale study on applying oo7 to over 500 program binaries (average binary size 261 KB) from different real-world projects. We protect programs against Spectre attack by selectively inserting fences only at vulnerable conditional branches to prevent speculative execution. Our approach is experimentally observed to incur around 5.9 percent performance overheads on SPECint benchmarks.

Authors

I am an author on this paper
Click your name to claim this paper and add it to your profile.

Reviews

Primary Rating

4.6
Not enough ratings

Secondary Ratings

Novelty
-
Significance
-
Scientific rigor
-
Rate this paper

Recommended

No Data Available
No Data Available