
Table des Matières
Les canaux cachés microarchitecturaux sont une préoccupation cruciale dans la sécurité informatique moderne. Au cœur de ces canaux se trouvent des comportements matériels subtils qui permettent de divulguer des informations entre des frontières de sécurité isolées, contournant les défenses traditionnelles au niveau du système d'exploitation et des applications. Avec le calcul en nuage et les environnements multi-locataires devenant la norme, la détection et l'atténuation automatiques de telles menaces n'ont jamais été aussi importantes.
AutoCC est un cadre innovant qui automatise la découverte de ces canaux de chronométrage cachés, permettant aux parties prenantes offensives et défensives d'améliorer leur compréhension et leurs protections. Dans ce guide, nous couvrirons la technologie et la recherche derrière AutoCC, expliquerons comment détecter efficacement ces canaux, et soulignerons l'importance des canaux cachés microarchitecturaux dans le paysage actuel des menaces.
En sécurité informatique, un canal caché est une voie de communication involontaire qui peut être exploitée pour transférer des informations d'une manière qui viole les politiques de sécurité du système. Contrairement aux canaux secondaires (qui fuient généralement des données par des émissions ou des observations non intentionnelles), les canaux cachés sont utilisés pour transmettre des informations de manière sournoise entre des agents coopérants, contournant souvent les contrôles d'accès.
Principales caractéristiques :
La microarchitecture se réfère aux détails de l'implémentation matérielle d'un CPU conçue pour sembler invisible au logiciel par abstraction.
Les canaux cachés microarchitecturaux exploitent ces transitions d'état matériel, qui sont :
Citation de la recherche :
Les canaux microarchitecturaux exploitent les états matériels invisibles à l'ISA pour permettre le flux non autorisé d'informations.
L'écart entre les caractéristiques matérielles (ex : caches, tampons, prédicteurs de branchement) et la vue abstraite fournie par l'ISA ouvre des opportunités pour les canaux cachés.
Les programmes partageant le même matériel peuvent influencer le temps d'exécution ou le comportement l'un de l'autre, même en l'absence de canaux de communication directe.
Les canaux de temps sont les canaux cachés microarchitecturaux les plus courants. Ils fonctionnent en :
Ressources typiquement exploitées :
Les canaux surgissent souvent lorsque deux processus se concurrencent pour une ressource matérielle limitée (par ex., un ensemble de cache, une file d'attente de contrôleur de mémoire).
Les canaux cachés microarchitecturaux exploitent les changements dans le chronométrage d'exécution résultant d'un accès concurrent à des ressources matérielles limitées.
Cette concurrence provoque des différences de chronométrage mesurables qui peuvent encoder des informations cachées.
Le cache de CPU, partagé à travers plusieurs cœurs/fils, est une mine d'or pour l'exploitation de canaux cachés.
Scénario :
Prime+Probe : Utilise l'accès chronométré pour vérifier si la ligne de cache a été remplacée.
Flush+Reload : S'appuie sur la mémoire partagée, plus précis que Prime+Probe.
# Pseudocode : Boucle Prime+Probe en Python (conceptuel)
import time
CACHE_SET = 0xdeadbeef # Adresse simulée
def access_memory(addr):
# Simuler l'accès à une ligne de cache
pass
def prime():
for i in range(NUM_LINES):
access_memory(CACHE_SET + i * CACHE_LINE_SIZE)
def probe():
start = time.perf_counter_ns()
for i in range(NUM_LINES):
access_memory(CACHE_SET + i * CACHE_LINE_SIZE)
end = time.perf_counter_ns()
return end - start
# L'émetteur prépare, attend, puis le récepteur sonde et chronomètre l'accès
Bien qu'elles ne soient pas des canaux cachés purs (souvent classées comme vulnérabilités de canaux secondaires), ces attaques ont inspiré un regain d'intérêt pour les fuites d'informations microarchitecturales en montrant comment la spéculation et l'exécution hors ordre peuvent casser les frontières de sécurité et divulguer des secrets par le biais de changements de statut microarchitectural.
Les attaques de type Spectre : Exploitent l'exécution spéculative pour injecter des données contrôlées par l'attaquant dans les structures microarchitecturales, affectant l'exécution du code de la victime de manière observable.
AutoCC signifie Découverte Automatique de Canaux Cachés dans le Temps. C'est une approche systématique et un outil développé pour trouver automatiquement des canaux de chronométrage cachés dans les ressources microarchitecturales des CPU.
De Marcelo et al., MICRO 2023 :
AutoCC :
Point Clef de la Recherche :
AutoCC a trouvé des canaux et des faiblesses non documentés dans les CPU populaires, indiquant le besoin urgent d'une analyse et défense automatisées.
AutoCC emploie un mélange de techniques :
Avec AutoCC, les attaquants et les défenseurs gagnent :
Prévenir ou atténuer les canaux cachés est difficile en raison de leur nature au niveau matériel. Cependant, quelques stratégies à haut niveau incluent :
Les systèmes d'exploitation peuvent aider en :
rdtsc ou à des instructions similaires.Les fournisseurs de matériel peuvent :
Linux offre des compteurs de surveillance de performance via l'outil perf, qui peut être utilisé pour détecter une activité microarchitecturale suspecte ou des anomalies de performance pouvant indiquer l'utilisation de canaux cachés.
perf list
# Enregistrer les cache-misses et cycles pour le processus avec PID 1234
sudo perf stat -e cache-misses,cycles -p 1234
# Analyse de sortie (exemple de sortie)
# 1,234,567 cache-misses
# 23,456,789 cycles
Les applications utilisant rdtsc ou /dev/tsc peuvent être des indices de code d'attaque basé sur le chronométrage.
# Lister les processus utilisant /dev/tsc ou similaire
lsof | grep '/dev/tsc'
# Trouver des binaires qui se réfèrent à l'opcode rdtsc (0f 31)
grep -rl -E $'\x0f\x31' /usr/bin /usr/local/bin
# Alternative : Utiliser strace pour surveiller les appels système liés au temps dans un processus suspect
strace -e trace=clock_gettime,gettimeofday -p <pid>
import subprocess
def monitor_perf(pid, duration=10):
cmd = [
'perf', 'stat', '-e', 'cache-misses,cycles',
'-p', str(pid), 'sleep', str(duration)
]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
return out.decode(), err.decode()
# Exemple d'utilisation
out, err = monitor_perf(1234)
print("Sortie Perf :", out)
print("Erreurs Perf :", err)
Pour une automatisation plus profonde, vous pouvez analyser la sortie perf pour des changements suspects dans les taux de cache miss, suggérant possiblement une activité de canal caché actif basé sur le cache.
import re
def parse_perf_output(perf_err):
cache_misses = re.search(r'([\d,]+)\s+cache-misses', perf_err)
cycles = re.search(r'([\d,]+)\s+cycles', perf_err)
return {
'cache_misses': int(cache_misses.group(1).replace(',', '')) if cache_misses else 0,
'cycles': int(cycles.group(1).replace(',', '')) if cycles else 0,
}
metrics = parse_perf_output(err)
print(f"Cache Misses : {metrics['cache_misses']}, Cycles : {metrics['cycles']}")
Les canaux cachés doivent être inclus dans les modèles de menaces pour :
Questions à poser :
Les équipes rouges peuvent déployer des outils de type AutoCC pour identifier des méthodes d'exfiltration viables et simuler des attaques réelles.
Les équipes bleues et les analystes en criminalistique peuvent utiliser des compteurs de performance, des journaux de traçage du système d'exploitation et des profils comportementaux pour traquer les anomalies symptomatiques d'une activité de canal caché.
Les canaux cachés microarchitecturaux représentent l'une des menaces les plus insidieuses en matière de sécurité matérielle aujourd'hui. Loin en dessous du niveau des vulnérabilités classiques au niveau réseau ou applicatif, ils exploitent les fondements mêmes de l'informatique moderne pour permettre le flux non autorisé d'informations entre utilisateurs et processus isolés.
AutoCC et des recherches similaires font avancer le domaine, en fournissant les outils et méthodologies nécessaires pour découvrir et fermer ces canaux—avant que les attaquants aient une chance de les utiliser. Alors que les CPU et les défenseurs évoluent, la seule constante est que nous devons continuer à chercher (et à apprendre de) chaque canal caché qui émerge.
En intégrant la surveillance, l'analyse et la modélisation proactive des menaces dans les processus de sécurité, les organisations peuvent rester à l'avant-garde de ce vecteur de menace subtil mais puissant.
AutoCC : Découverte Automatique de Canaux Cachés dans le Temps
Auteurs : Marcelo Santos, et al. MICRO 2023
Article complet en PDF
Prévention des Canaux Cachés Microarchitecturaux sur un Processeur 64 bits RISC-V Open-Source
Auteurs : Wistoff et al.
Prépublication arXiv
Texte complet en PDF
Documentation de Linux perf
https://perf.wiki.kernel.org/index.php/Main_Page
Intel® 64 et IA-32 Architectures Manuel de Référence d'Optimisation
https://software.intel.com/content/www/us/en/develop/articles/intel-sdm.html
Attaques Spectre et Meltdown
https://meltdownattack.com/
Intéressé par plus de guides approfondis ? Abonnez-vous à notre lettre d'information sur les insights de cybersécurité !
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.