An adversary exploits a hardware design flaw in a CPU implementation of transient instruction execution to expose sensitive data and bypass/subvert access control over restricted resources. Typically, the adversary conducts a covert channel attack to target non-discarded microarchitectural changes caused by transient executions such as speculative execution, branch prediction, instruction pipelining, and/or out-of-order execution. The transient execution results in a series of instructions (gadgets) which construct covert channel and access/transfer the secret data.
Description
Attack Execution Flow
Step 1
Explore[Survey target application and relevant OS shared code libraries] Adversary identifies vulnerable transient instruction sets and the code/function calls to trigger them as well as instruction sets or code fragments (gadgets) to perform attack.
Utilize Disassembler and Debugger tools to examine and trace instruction set execution of source code and shared code libraries on a system.
[Indaga sull'applicazione target e sulle librerie di codice condiviso del sistema operativo rilevanti] L'avversario identifica set di istruzioni transitori vulnerabili e le chiamate di codice/funzione per attivarli, nonché set di istruzioni o frammenti di codice (gadgets) per eseguire l'attacco.
Utilizza strumenti di Disassembler e Debugger per esaminare e tracciare l'esecuzione dei set di istruzioni del codice sorgente e delle librerie di codice condiviso su un sistema.
Attack Techniques
-
Utilize Disassembler and Debugger tools to examine and trace instruction set execution of source code and shared code libraries on a system.
Step 2
Explore[Explore cache and identify impacts] Utilize tools to understand the impact of transient instruction execution upon address spaces and CPU operations.
Run OS or application specific tools that examine the contents of cache.
[Esplora cache e identifica gli impatti] Utilizza strumenti per comprendere l'impatto dell'esecuzione transitoria delle istruzioni sugli spazi di indirizzo e sulle operazioni della CPU.
Esegui strumenti specifici del sistema operativo o dell'applicazione che esaminano il contenuto della cache.
Attack Techniques
-
Run OS or application specific tools that examine the contents of cache.
Step 3
Experiment[Cause conditions for identified transient instruction set execution] Adversary ensures that specific code/instructions of the target process are executed by CPU, so desired transient instructions are executed.
[Condizioni causali per l'esecuzione transitoria dell'insieme di istruzioni identificato] L'avversario garantisce che specifici codici/istruzioni del processo target vengano eseguiti dalla CPU, affinché le istruzioni transitorie desiderate vengano eseguite.
Step 4
Experiment[Cause specific secret data to be cached from restricted address space] Executed instruction sets (gadgets) in target address space, initially executed via adversary-chosen transient instructions sets, establish covert channel and transfer secret data across this channel to cache.
Prediction-based - adversary trains CPU to incorrectly predict/speculate conditions for instruction execution to be true, hence executing adversary-chosen transient instructions. These prediction-based methods include: Pattern History Table (PHT)/Input Validation Bypass, Branch Target Buffer (BTB)/Branch Target Injection, Return Stack Buffer (RSB)/Return Address Injection, and Store To Load (STL)/Speculative Store Bypass.
Exception/Fault-based - adversary has CPU execute transient instructions that raise an exception allowing inaccessible memory space to be accessed via out-of-order execution. These exception/fault-based methods include: Supervisor-only Bypass, Virtual Translation Bypass, System Register Bypass, FPU Register Bypass, Read-only Bypass, Protection Key Bypass, and Bounds Check Bypass.
[Indurre la memorizzazione nella cache di dati segreti specifici causati da un'area di indirizzo limitata] Set di istruzioni eseguite (gadgets) nello spazio di indirizzi target, inizialmente eseguite tramite set di istruzioni transitorie scelte dall'attaccante, stabiliscono un canale nascosto e trasferiscono dati segreti attraverso questo canale nella cache.
Prediction-based - l'attaccante addestra la CPU a prevedere/speculare erroneamente le condizioni per l'esecuzione delle istruzioni affinché siano vere, eseguendo così istruzioni transitorie scelte dall'attaccante. Questi metodi basati sulla previsione includono: Pattern History Table (PHT)/Input Validation Bypass, Branch Target Buffer (BTB)/Branch Target Injection, Return Stack Buffer (RSB)/Return Address Injection, e Store To Load (STL)/Speculative Store Bypass.
Exception/Fault-based - l'attaccante fa eseguire alla CPU istruzioni transitorie che generano un'eccezione consentendo l'accesso a uno spazio di memoria inaccessibile tramite esecuzione fuori ordine. Questi metodi basati su eccezioni/fault includono: Supervisor-only Bypass, Virtual Translation Bypass, System Register Bypass, FPU Register Bypass, Read-only Bypass, Protection Key Bypass, e Bounds Check Bypass.
Attack Techniques
-
Prediction-based - adversary trains CPU to incorrectly predict/speculate conditions for instruction execution to be true, hence executing adversary-chosen transient instructions. These prediction-based methods include: Pattern History Table (PHT)/Input Validation Bypass, Branch Target Buffer (BTB)/Branch Target Injection, Return Stack Buffer (RSB)/Return Address Injection, and Store To Load (STL)/Speculative Store Bypass.
-
Exception/Fault-based - adversary has CPU execute transient instructions that raise an exception allowing inaccessible memory space to be accessed via out-of-order execution. These exception/fault-based methods include: Supervisor-only Bypass, Virtual Translation Bypass, System Register Bypass, FPU Register Bypass, Read-only Bypass, Protection Key Bypass, and Bounds Check Bypass.IT: Basate sulla previsione - l'attaccante addestra la CPU a prevedere/speculare in modo errato le condizioni per l'esecuzione delle istruzioni, facendo sì che vengano eseguite istruzioni transitorie scelte dall'attaccante. Questi metodi basati sulla previsione includono: Pattern History Table (PHT)/Input Validation Bypass, Branch Target Buffer (BTB)/Branch Target Injection, Return Stack Buffer (RSB)/Return Address Injection e Store To Load (STL)/Speculative Store Bypass.
Step 5
Exploit[Perform covert channel attack to obtain/access secret data] Adversary process code removes instructions/data from shared cache set, waits for target process to reinsert them back into cache, to identify location of secret data via a timing method. Adversary continuously repeat this process to identify and access entirety of targeted secret data.
Flush+Reload - adversary frequently flushes targeted memory cache line using a dedicated machine flush instruction, and uses another process to measure time taken for CPU to load victim secret data.
Evict+Time - adversary causes victim to load target set into cache and measures time for victim process to load this data, setting a baseline. Adversary evicts a specified cache line and causes victim process to execute again, and measures any change in execution time, to determine if cache line was accessed.
Prime+Probe - adversary primes cache by filling cache line(s) or set(s) with data, after some time victim process evicts this adversary data to replace it with secret data. The adversary then probes/accesses all the previously accessed cache lines detecting cache misses, which determine that their attacker data has been evicted and replaced with secret data from victim process.
[Esecuzione di attacchi a canale nascosto per ottenere/accesso a dati segreti] Il processo dell'attore malevolo rimuove istruzioni/dati dal set di cache condiviso, attende che il processo target li reinserisca nella cache, per identificare la posizione dei dati segreti tramite una tecnica di timing. L'attore malevolo ripete continuamente questo processo per identificare e accedere all'intera quantità di dati segreti mirati.
Flush+Reload - l'attaccante svuota frequentemente la linea di cache di memoria mirata utilizzando un'istruzione di flush dedicata, e utilizza un altro processo per misurare il tempo impiegato dalla CPU per caricare i dati segreti della vittima.
Evict+Time - l'attaccante induce la vittima a caricare il set target nella cache e misura il tempo impiegato dal processo vittima per caricare questi dati, stabilendo una baseline. L'attaccante evacua una linea di cache specifica e induce il processo vittima a eseguirsi nuovamente, misurando eventuali variazioni nel tempo di esecuzione, per determinare se la linea di cache è stata accessata.
Prime+Probe - l'attaccante prepara la cache riempiendo le linee o i set di cache con dati, dopo un certo tempo la vittima evacua questi dati dell'attaccante per sostituirli con dati segreti. L'attaccante quindi esegue una probe/accesso a tutte le linee di cache precedentemente accessate, rilevando cache miss, che indicano che i dati dell'attaccante sono stati evacuati e sostituiti con dati segreti della vittima.
Attack Techniques
-
Prime+Probe - adversary primes cache by filling cache line(s) or set(s) with data, after some time victim process evicts this adversary data to replace it with secret data. The adversary then probes/accesses all the previously accessed cache lines detecting cache misses, which determine that their attacker data has been evicted and replaced with secret data from victim process.
-
Flush+Reload - adversary frequently flushes targeted memory cache line using a dedicated machine flush instruction, and uses another process to measure time taken for CPU to load victim secret data.IT: Prime+Probe - l'attaccante pre-carica la cache riempiendo le linee o i set della cache con dati, dopodiché, dopo un certo tempo, il processo vittima evacua questi dati dell'attaccante per sostituirli con dati segreti. L'attaccante quindi esegue un probe/accesso a tutte le linee di cache precedentemente accessate rilevando i cache miss, che determinano che i dati dell'attaccante sono stati evacuati e sostituiti con dati segreti del processo vittima.
-
Evict+Time - adversary causes victim to load target set into cache and measures time for victim process to load this data, setting a baseline. Adversary evicts a specified cache line and causes victim process to execute again, and measures any change in execution time, to determine if cache line was accessed.IT: Prime+Probe - l'attaccante pre-carica la cache riempiendo le linee o i set della cache con dati, dopodiché, dopo un certo tempo, il processo vittima evacua questi dati dell'attaccante per sostituirli con dati segreti. L'attaccante quindi esegue un probe/accesso a tutte le linee di cache precedentemente accessate rilevando i cache miss, che determinano che i dati dell'attaccante sono stati evacuati e sostituiti con dati segreti del processo vittima.