SLAP : attaques par spéculation de données (data Speculation attacks via Load Address Prediction)
- L’attaque SLAP est une nouvelle attaque par exécution spéculative affectant les CPU Apple Silicon M2/A15.
- Elle améliore les performances via le Load Address Predictor (LAP), qui anticipe la prochaine adresse mémoire à partir des schémas d’accès mémoire.
- En cas de mauvaise prédiction, le CPU peut traiter en exécution spéculative des données auxquelles il ne devrait pas accéder, ce qui crée un risque de sécurité.
- Un cas concret a montré qu’un attaquant distant pouvait récupérer le contenu d’e-mails et le comportement de navigation dans le navigateur web Safari.
FLOP : fausses prédictions de sortie de chargement (False Load Output Predictions)
- L’attaque FLOP est une autre attaque par exécution spéculative touchant les CPU Apple M3/A17, basée sur la prédiction des dépendances de données.
- Elle améliore les performances via le Load Value Predictor (LVP), qui anticipe la valeur de données que le sous-système mémoire va renvoyer.
- En cas de mauvaise prédiction, elle peut contourner des vérifications critiques de la logique logicielle destinées à la sûreté mémoire, ouvrant une surface d’attaque permettant d’exfiltrer des secrets stockés en mémoire.
- Des démonstrations ont montré la récupération d’historiques de localisation, d’événements de calendrier et d’informations de carte bancaire dans les navigateurs Safari et Chrome.
Démos
- Exfiltration des données de boîte de réception de Proton Mail : le LVP d’un CPU M3 est entraîné depuis du code JavaScript dans WebKit afin de faire remonter le contenu de la boîte de réception dans l’espace d’adressage.
- Lecture de Gatsby le Magnifique : démonstration de faisabilité récupérant une chaîne secrète sur un CPU Apple M2 à l’aide du LAP.
- Lecture de Harry Potter : démonstration de faisabilité sur un CPU Apple M3 utilisant le LVP pour prédire un mauvais index de tableau et référencer les caractères d’une chaîne.
Équipe de recherche
- Jason Kim, Jalen Chuang, Daniel Genkin (Georgia Institute of Technology)
- Yuval Yarom (Ruhr University Bochum)
FAQ sur SLAP et FLOP
Is my Apple device affected?
- Ordinateurs portables Mac : tous les modèles lancés depuis 2022 (MacBook Air, MacBook Pro)
- Ordinateurs de bureau Mac : tous les modèles lancés depuis 2023 (Mac Mini, iMac, Mac Studio, Mac Pro)
- iPad : tous les modèles iPad Pro, Air et Mini lancés depuis septembre 2021
- Pro 6e et 7e génération, Air 6e génération, Mini 6e génération
- iPhone : tous les modèles lancés depuis septembre 2021
- Tous les iPhone 13, 14, 15, 16 ainsi que l’iPhone SE 3e génération
Why are the SLAP and FLOP attacks significant?
- Mécanisme de protection : en général, les navigateurs web isolent deux pages ouvertes afin qu’une page ne puisse pas lire le contenu de l’autre
- Vulnérabilité : SLAP et FLOP neutralisent cette protection, permettant à une page attaquante de lire des données sensibles d’une page cible
- Données exposées : historique de localisation, informations de carte bancaire, etc.
How can I defend against SLAP and FLOP?
- Il existe des mesures d’atténuation pour FLOP, mais elles nécessitent des correctifs des éditeurs logiciels et ne peuvent pas être appliquées directement par l’utilisateur
- Apple a indiqué qu’un correctif serait apporté dans de futures mises à jour de sécurité ; il est important d’activer les mises à jour automatiques et de conserver un OS et des applications à jour
What about other processor vendors?
- Aucun signe de SLAP ou FLOP n’a encore été observé sur des produits Intel, AMD, Qualcomm, Ampere, etc.
What about other web browsers?
- Les autres navigateurs comme Firefox n’ont pas été testés
Can I detect if someone is using SLAP or FLOP on my device?
- SLAP et FLOP sont des attaques microarchitecturales qui ne laissent pas de traces dans les journaux système
Are any malicious actors abusing SLAP or FLOP in the wild?
- À ce jour, aucune preuve ne montre un usage réel de SLAP ou FLOP dans la nature
When did you notify Apple?
- SLAP : signalé à Apple le 24 mai 2024
- FLOP : signalé à Apple le 3 septembre 2024
Questions techniques
Qu’est-ce qu’un side channel ?
- Une attaque qui exploite des faiblesses dans l’implémentation matérielle de l’ordinateur
- Elle exploite des fuites d’information dues au comportement du matériel plutôt qu’à un bug logiciel
- Canaux de fuite de données
- Des phénomènes physiques comme le son, les ondes électromagnétiques ou la dissipation thermique
- La contention sur les ressources partagées du CPU (cœurs, cache, buffers internes, etc.)
- Exposition d’informations due à la contention CPU
- Déduction des schémas de comportement de la cible via des variables indirectes comme la mesure du temps ou la consommation électrique
Qu’est-ce qu’une attaque par exécution spéculative ?
- Exécution spéculative : technique d’optimisation où le CPU prédit le flux de contrôle et exécute des instructions à l’avance
- Si la prédiction est fausse, l’état est restauré, mais des traces subtiles subsistent, par exemple dans le cache
- Attaque Spectre
- Elle pousse le processeur à spéculer sur un mauvais flux
- Si des instructions utilisant des données sensibles s’exécutent pendant cette phase, la valeur des données peut être révélée indirectement
- Extension dans SLAP et FLOP
- Les CPU Apple prédisent non seulement le flux de contrôle, mais aussi le flux de données
- FLOP provoque l’exécution d’instructions sur des valeurs de données erronées
Fonctionnement de SLAP
- Analyse du Load Address Prediction (LAP)
- Lorsqu’on lui fait apprendre un motif d’adresses mémoire spécifique, le LAP prédit l’adresse suivante et exécute des opérations sur les données
- Contrairement au prefetching matériel, il exécute des instructions avec les données prédites
- Exploitation de la vulnérabilité Safari
- En s’appuyant sur le problème d’isolation de Safari découvert par iLeakage, il devient possible de forcer le traitement de pages web différentes dans un même processus
- Une page web attaquante peut alors accéder aux données de chaîne d’une page cible
Fonctionnement de FLOP
- Analyse du Load Value Prediction (LVP)
- Lorsqu’une même valeur de données est renvoyée de manière répétée, le LVP prédit le résultat
- Il exécute alors des instructions à partir d’une mauvaise valeur mémoire
- Attaques contre Safari et Chrome
- Safari : exécution d’instructions avec une mauvaise structure de données en prédisant les informations de type des structures JavaScript
- Chrome : erreur de lecture mémoire provoquée par de mauvais arguments lors d’un appel de fonction WebAssembly
Différences entre SLAP et FLOP
- SLAP : utilise le Load Address Predictor (LAP) pour exploiter la proximité d’allocation des chaînes
- FLOP : utilise le Load Value Predictor (LVP) pour contourner les contrôles d’intégrité des données
- LAP vs LVP
- LAP : prédit l’adresse mémoire suivante
- LVP : prédit la prochaine valeur mémoire renvoyée
- Le LAP nécessite une longue phase d’entraînement, mais permet la prédiction de motifs
Que sont JavaScript et WebAssembly ?
- JavaScript : langage permettant de mettre à jour dynamiquement le contenu web
- WebAssembly : langage destiné aux applications web hautes performances, interopérable avec JavaScript
- Impact des attaques
- Comme les deux langages s’exécutent automatiquement dans le navigateur, une attaque est possible sans télécharger de code malveillant
Pourquoi avoir choisi Safari et Chrome comme cibles ?
- Safari :
- En l’absence de Site Isolation, des pages web de domaines différents peuvent s’exécuter dans le même processus
- Cela élargit la surface d’attaque fondée sur le LAP et le LVP
- Chrome :
- Site Isolation est en place, mais dans certains cas, des sous-domaines d’un même site sont traités dans un seul processus
- Les attaques LAP et LVP restent donc possibles
Soutien à la recherche
- Cette recherche a reçu le soutien de l’AFOSR, de l’Alfred P Sloan Research Fellowship, de l’ARC Discovery Project, de la DARPA, de la DFG, de Qualcomm, de Cisco et de Zama.
1 commentaires
Avis Hacker News
La démo de SLAP montre bien comment une défense en profondeur peut déterminer la faisabilité de l’exploitation d’une vulnérabilité. La faille de Safari vient du fait que l’appel à
window.openn’isole pas la nouvelle fenêtre dans un processus distinctLa partie sur la rétro-ingénierie de la présence de LVP sur M3 est intéressante. Pour les chargements de 8 octets, LVP ne s’active que lorsque la valeur chargée est 0. Cela pourrait être une mesure de protection pour la sûreté mémoire
Les attaques Spectre et Meltdown, ainsi que les articles associés, valent la peine d’être lus pour ceux qui les découvrent
Dans Safari, ils utilisent un principe d’amplification de cache basé sur une porte NOT pour distinguer les cache hits des cache misses. Il est possible de les distinguer même dans un environnement web
Cela montre que l’isolation de site de Chrome n’est pas une mesure d’atténuation parfaite. Il existe un cas limite où deux sous-domaines d’un même site peuvent être fusionnés dans un seul processus
La culture marketing autour des annonces de vulnérabilités matérielles semble étrange. On peut se demander pourquoi créer un domaine personnalisé, un logo, une FAQ, etc., au lieu de simplement signaler la vulnérabilité et publier un article
J’ai rencontré le professeur Daniel Genkin l’an dernier dans un cours d’Intro to Cyber Security. Il disait travailler sur des attaques spéculatives contre les CPU d’Apple. Cela m’a fait comprendre que la sécurité n’est presque jamais garantie
J’ai tendance à désactiver JavaScript par défaut sur les sites non fiables. Après tout, c’est le programme de quelqu’un d’autre qu’on exécute sur notre machine
Apple a récemment publié des mises à jour mineures de macOS et iOS incluant des correctifs de sécurité. Je me demande si quelqu’un a vérifié si cette vulnérabilité a été corrigée
On dirait que RUB est devenu un centre mondial majeur pour la recherche avancée sur les attaques de sécurité. Je me demande si je n’y prêtais simplement pas attention il y a 10 ans, ou si c’est un phénomène récent