Automated Detection, Exploitation, and Elimination of Double-Fetch Bugs using Modern CPU Features

11/03/2017
by   Michael Schwarz, et al.
0

Double-fetch bugs are a special type of race condition, where an unprivileged execution thread is able to change a memory location between the time-of-check and time-of-use of a privileged execution thread. If an unprivileged attacker changes the value at the right time, the privileged operation becomes inconsistent, leading to a change in control flow, and thus an escalation of privileges for the attacker. More severely, such double-fetch bugs can be introduced by the compiler, entirely invisible on the source-code level. We propose novel techniques to efficiently detect, exploit, and eliminate double-fetch bugs. We demonstrate the first combination of state-of-the-art cache attacks with kernel-fuzzing techniques to allow fully automated identification of double fetches. We demonstrate the first fully automated reliable detection and exploitation of double-fetch bugs, making manual analysis as in previous work superfluous. We show that cache-based triggers outperform state-of-the-art exploitation techniques significantly, leading to an exploitation success rate of up to 97 detects double fetches and automatically narrows down this candidate set for double-fetch bugs to the exploitable ones. We present the first generic technique based on hardware transactional memory, to eliminate double-fetch bugs in a fully automated and transparent manner. We extend defensive programming techniques by retrofitting arbitrary code with automated double-fetch prevention, both in trusted execution environments as well as in syscalls, with a performance overhead below 1

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/25/2018

SgxPectre Attacks: Leaking Enclave Secrets via Speculative Execution

This paper presents SgxPectre Attacks that exploit the recently disclose...
research
03/01/2019

Automatic Techniques to Systematically Discover New Heap Exploitation Primitives

Heap exploitation techniques to abuse the metadata of allocators have be...
research
01/31/2023

ICICLE: A Re-Designed Emulator for Grey-Box Firmware Fuzzing

Emulation-based fuzzers enable testing binaries without source code, and...
research
08/02/2018

Chaff Bugs: Deterring Attackers by Making Software Buggier

Sophisticated attackers find bugs in software, evaluate their exploitabi...
research
01/18/2022

BinGo: Pinpointing Concurrency Bugs in Go via Binary Analysis

Golang (also known as Go for short) has become popular in building concu...
research
12/10/2022

A Quantitative Flavour of Robust Reachability

Many software analysis techniques attempt to determine whether bugs are ...
research
06/16/2021

Loki: Hardening Code Obfuscation Against Automated Attacks

Software obfuscation is a crucial technology to protect intellectual pro...

Please sign up or login with your details

Forgot password? Click here to reset