
Boîte à outils en C implémentant des attaques par canal auxiliaire micro-architectural sur Intel x86-64, notamment Prime+Probe, Flush+Reload, Flush+Flush, CacheBleed et Prime+Abort.
Les attaques par canal auxiliaire micro-architectural exploitent la contention sur les composants internes du processeur pour faire fuiter des informations entre processus. Bien qu'en théorie ces attaques soient simples, les implémentations pratiques ont tendance à être délicates et nécessitent une compréhension approfondie de fonctionnalités du processeur mal documentées et d'autres connaissances ésotériques propres au domaine. Par conséquent, il existe une barrière à l'entrée dans les travaux sur les attaques par canal auxiliaire micro-architectural, qui entrave le développement du domaine et l'analyse de la résilience des logiciels existants face à ces attaques.
Ce dépôt contient Mastik, une boîte à outils pour expérimenter les attaques par canal auxiliaire micro-architectural. Mastik vise à fournir des implémentations des techniques d'attaque et d'analyse publiées. Actuellement, Mastik prend en charge six techniques d'attaque par canal auxiliaire sur l'architecture Intel x86-64 :
Mastik suit le processus d'installation Linux de facto standard.
Si le système dispose de tous les logiciels requis et
que vous souhaitez la configuration par défaut, utilisez :
$ ./configure && make && sudo make install
Voir ci-dessous pour plus d'informations.
Pour le fonctionnement de base, Mastik ne nécessite aucun paquet.
Cependant, la capacité à résoudre les symboles dans les binaires est extrêmement utile,
et nécessite les paquets de compilation binutils et libdwarf sous Linux.
Sur Mac OS X, la prise en charge des symboles de débogage n'est pas encore disponible.
L'interface graphique de Mastik doubloon
nécessite Python 3 avec les paquets suivants :
wx, numpy, paramiko, matplotlib et tqdm.
L'installation dépend de la variante du système d'exploitation.
Fedora :
$ sudo dnf install binutils-devel libdwarf-devel
Ubuntu :
$ sudo apt-get install binutils-dev libdwarf-dev libelf-dev
CentOS :
Activez le dépôt PowerTools :
$ sudo dnf config-manager --set-enabled PowerTools
Puis installez les paquets :
$ sudo dnf install libdwarf binutils-devel elfutils-libelf-devel libdwarf-devel python3
Pour configurer l'environnement de compilation, utilisez le script configure.
Pour utiliser les options par défaut, utilisez :
$ ./configure
Le script accepte plusieurs options pour modifier son comportement.
Certaines d'entre elles sont listées ci-dessous.
Utilisez ./configure --help pour obtenir une liste complète.
| Option | Description |
|---|---|
--help | Message d'aide |
--prefix=PREFIX | Installe les fichiers dans PREFIX [/usr/local] |
--disable-symbols | Désactive la gestion des tables de symboles dans les binaires. Supprime également l'exigence de binutils et libdwarf |
--disable-debug-symbols | Désactive la gestion des symboles de débogage dans les binaires. Supprime l'exigence de libdwarf |
--disable-doubloon | N'installe pas doubloon. Supprime l'exigence de Python3 |
Après avoir configuré l'environnement de compilation, compilez Mastik avec :
$ make
Pour installer Mastik, utilisez :
$ make install
Pour changer le répertoire d'installation, utilisez :
$ make prefix=DIR install
Pour un exemple d'utilisation, consultez le dossier de démonstration.
Mastik est soutenu par :