
Toolkit C che implementa attacchi side-channel micro-architetturali su Intel x86-64, tra cui Prime+Probe, Flush+Reload, Flush+Flush, CacheBleed e Prime+Abort.
Gli attacchi a canale laterale micro-architetturale sfruttano la contesa sui componenti interni del processore per far trapelare informazioni tra processi. Sebbene in teoria tali attacchi siano semplici, le implementazioni pratiche tendono a essere capricciose e richiedono una comprensione significativa di funzionalità del processore scarsamente documentate e di altre conoscenze arcane specifiche del dominio. Di conseguenza, esiste una barriera all'ingresso nel lavoro sugli attacchi a canale laterale micro-architetturale, che ostacola lo sviluppo dell'area e l'analisi della resilienza del software esistente contro tali attacchi.
Questo repository contiene Mastik, un toolkit per sperimentare con attacchi a canale laterale micro-architetturale. Mastik mira a fornire implementazioni di tecniche di attacco e analisi pubblicate. Attualmente, Mastik supporta sei tecniche di attacco a canale laterale sull'architettura Intel x86-64:
Mastik segue il processo di installazione standard de facto di Linux.
Se il sistema dispone di tutto il software richiesto e
si desidera la configurazione predefinita, usare:
$ ./configure && make && sudo make install
Vedere sotto per maggiori informazioni.
Per il funzionamento principale, Mastik non richiede alcun pacchetto.
Tuttavia, la capacità di risolvere i simboli nei binari è estremamente utile,
e richiede i pacchetti di build binutils e libdwarf su Linux.
Su Mac OS X non è ancora disponibile il supporto per i simboli di debug.
L'interfaccia GUI di Mastik doubloon
richiede Python 3 con i seguenti pacchetti:
wx, numpy, paramiko, matplotlib e tqdm.
L'installazione dipende dalla variante del sistema operativo.
Fedora:
$ sudo dnf install binutils-devel libdwarf-devel
Ubuntu:
$ sudo apt-get install binutils-dev libdwarf-dev libelf-dev
CentOS:
Abilitare il repository PowerTools:
$ sudo dnf config-manager --set-enabled PowerTools
Poi installare i pacchetti:
$ sudo dnf install libdwarf binutils-devel elfutils-libelf-devel libdwarf-devel python3
Per impostare l'ambiente di build, usare lo script configure.
Per usare le opzioni predefinite, usare:
$ ./configure
Lo script accetta diversi flag per modificarne il comportamento.
Alcuni di questi sono elencati di seguito.
Usare ./configure --help per un elenco completo.
| Flag | Descrizione |
|---|---|
--help | Messaggio di aiuto |
--prefix=PREFIX | Installa i file in PREFIX [/usr/local] |
--disable-symbols | Disabilita la gestione delle tabelle dei simboli nei binari. Inoltre, rimuove il requisito per binutils e libdwarf |
--disable-debug-symbols | Disabilita la gestione dei simboli di debug nei binari. Rimuove il requisito per libdwarf |
--disable-doubloon | Non installa doubloon. Rimuove il requisito per Python3 |
Dopo aver configurato l'ambiente di build, compilare Mastik usando:
$ make
Per installare Mastik, usa:
$ make install
Per cambiare la directory di installazione usare:
$ make prefix=DIR install
Per un esempio di utilizzo, consulta la cartella demo.
Mastik è supportato da: