
Table des Matières
Avec l'avancement des architectures informatiques, les processeurs modernes sont devenus vulnérables à une large gamme d'attaques exploitant des fonctionnalités matérielles de bas niveau. Les canaux microarchitecturaux—incluant les canaux latéraux et couverts—sont passés de curiosités théoriques à des menaces de sécurité pratiques, permettant aux attaquants de dévoiler des informations sensibles sans jamais déclencher les alarmes de sécurité classiques.
Un scénario d'utilisation particulièrement préoccupant est la création de canaux couverts de haute capacité, qui peuvent transmettre de manière fiable de grandes quantités d'informations secrètes entre deux processus de collusion, même à travers des frontières de processus ou de sécurité. Comme découvert et analysé dans Understanding and Improving High Capacity Covert Channels via Microarchitectural Channel Engineering (HPCA 2015) et des recherches ultérieures, ces vecteurs d'attaque ont un impact réel et exigent un examen rigoureux.
Cet article explique les canaux microarchitecturaux du niveau débutant au niveau avancé, examine comment les canaux de haute capacité sont conçus, fournit des exemples de code pour la détection et la mesure, passe en revue les mitigations disponibles, et détaille l'importance de ce sujet dans la cybersécurité moderne.
Les canaux microarchitecturaux proviennent de l'implémentation physique de l'architecture d'un processeur—la soi-disant « microarchitecture ». Tandis que l'architecture décrit ce que fait le processeur (le jeu d'instructions), la microarchitecture décrit comment il atteint cet objectif (pipelines, caches, tampons, tables de prédiction, etc.).
Les processeurs sont conçus pour la performance—et non pour l'isolation de sécurité au niveau microarchitectural. Les ressources partagées entraînent des variations de temporisation, de disponibilité ou de comportement observables par d'autres logiciels, qui peuvent être exploitées pour révéler des secrets.
Idée Clé : Même si deux processus ne partagent pas de mémoire, ils peuvent partager du matériel—ce qui permet de communiquer.
Différence :
Les canaux latéraux divulguent des secrets par inadvertance ; les canaux couverts sont construits explicitement pour la communication entre des conspirateurs à travers des frontières de sécurité.
Les canaux couverts modernes peuvent être conçus pour la fiabilité et une haute capacité (bande passante), capables de divulguer des données substantielles sur de courts délais. Décomposons comment les attaquants réalisent cela.
Pour que les canaux couverts fonctionnent, les ressources microarchitecturales partagées sont essentielles. Comme indiqué par AutoCC : Automatic Discovery of Covert Channels in Time-Division Multiplexed Processors (Princeton, 2023) :
| Type de Ressource | Mécanisme Exemple | Vecteur d'Attaque |
|---|---|---|
| Caches | Caches de données et d'instructions L1/L2/L3 | Prime+Probe, Flush+Reload |
| Prédicteurs de branchements | Tables d'historique de direction, BTB, RSB | BranchShadowing |
| TLBs | Buffers de recherche en translation partagée | Attaques de type TLBleed |
| Bus mémoire | Banques DRAM, tampons de ligne | Canaux de ligne DRAM |
| Buffers de prélecture | Préchargeurs matériels, prélecture victime | Variantes Spectre |
Un processus émetteur peut préparer un jeu de cache (charger des adresses spécifiques). Le récepteur, exécuté plus tard, vérifie le temps d'accès aux mêmes adresses :
Description :
L'émetteur remplit (prépare) un jeu de cache. Si la sonde du récepteur montre des lectures lentes, il en déduit que le cache a été évincé entre les sondes (indiquant un bit spécifique).
Utilisé pour :
Divulgation de données à partir d'environnements sécurisés ou isolés (par exemple, JavaScript de navigateur) vers des processus hostiles.
Bande passante :
Selon le matériel, plusieurs centaines de kilobits par seconde sont possibles comme montré dans HPCA 2015.
Description :
Repose sur la mémoire partagée, comme les bibliothèques de code mappées au même emplacement dans plusieurs processus (par exemple, via des bibliothèques partagées sous Linux).
La détection est difficile car les opérations des canaux couverts imitent les modèles d'accès aux ressources bénins. Cependant, avec une mesure minutieuse, les canaux peuvent être découverts et caractérisés.
rdtsc sur x86).Examinons des étapes pratiques pour les chercheurs en sécurité.
hwloc, lscpu, dmidecode# Afficher la topologie du cache et du CPU
lscpu
hwloc-ls
dmidecode --type cache
import time
start = time.perf_counter_ns()
# Accéder à la mémoire/appeler une fonction
end = time.perf_counter_ns()
print(f"Elapsed (ns): {end - start}")
Utilisez rdtsc pour mesurer les temps d'accès.
#include <stdio.h>
#include <x86intrin.h>
int main() {
volatile int data = 0;
unsigned long t1, t2;
int iterations = 1000;
for (int i = 0; i < iterations; i++) {
t1 = __rdtsc();
data += i; // Accéder à la mémoire
t2 = __rdtsc();
printf("%lu\n", t2 - t1); // Imprimer les cycles pris pour l'accès
}
return 0;
}
Supposons que vous ayez un fichier timings.txt (de l'exemple C ci-dessus) :
# Imprimer la temporisation min, max, avg
awk '{sum+=$1; if(min==""||$1<min) min=$1; if($1>max) max=$1} END {print "Min:", min, "Max:", max, "Avg:", sum/NR}' timings.txt
# Utiliser perf pour surveiller les événements du cache (nécessite les droits root)
sudo perf stat -e cache-misses,cache-references -p <pid>
Comme discuté dans Prevention of Microarchitectural Covert Channels on an SoC (Wistoff et al. 2020) :
perf, des analyseurs statiques, et des fonctionnalités spécifiques au constructeur (par exemple, Intel CAT, AMD SEV).Les canaux couverts microarchitecturaux représentent une classe sophistiquée et en évolution des vecteurs de menace en cybersécurité. À mesure que les attaquants développent des canaux fiables et de haute capacité exploitant le partage des ressources matérielles, les défenseurs doivent mélanger les stratégies matérielles, OS, et logicielles pour atténuer ces canaux.
Comprendre le comment et le pourquoi derrière ces vulnérabilités permet aux praticiens de détecter, prévenir et minimiser les risques. Avec la recherche en cours, de HPCA 2015 aux outils comme AutoCC et aux travaux contemporains, la lutte entre attaquants et défenseurs se poursuit aux niveaux les plus bas de l'informatique.
Par [Votre Nom], Chercheur en Cybersécurité — [Votre Site/Contact]
Si vous avez trouvé ce contenu utile, imaginez ce que vous pourriez accomplir avec notre programme de formation élite complet de 47 semaines. Rejoignez plus de 1 200 étudiants qui ont transformé leur carrière grâce aux techniques de l'Unité 8200.