Des chercheurs de plusieurs universités aux États-Unis et en Australie ont développé deux attaques de type Rowhammer — GDDRHammer et GeForge, permettant de modifier des bits individuels dans les puces de mémoire vidéo GDDR tout en exécutant un noyau CUDA non privilégié sur un GPU NVIDIA. Contrairement à la méthode GPUHammer présentée l'année dernière, les nouvelles attaques ne se limitent pas aux données traitées dans la mémoire GPU, mais permettent d'accéder à l'ensemble de la mémoire principale associée à l'espace d'adressage du CPU. Les chercheurs ont démontré des exploits fournissant un accès root au système principal lors de l'exécution d'un noyau CUDA non privilégié sur le GPU.
Les deux attaques entraînent une déperdition prématurée de charge dans certaines cellules de la mémoire vidéo auxquelles les attaquants n'ont pas accès directement, entraînant une modification des bits stockés dans ces cellules. La possibilité de lire et d'écrire dans la mémoire associée à l'espace d'adressage du CPU est réalisée par l'interférence avec le fonctionnement de l'allocateur de mémoire GPU (cudaMalloc) pour violer l'isolation de la mémoire GPU et mapper des adresses virtuelles GPU sur des adresses physiques arbitraires de la mémoire GPU ou du CPU.
L'interférence s'effectue par la modification des valeurs des bits dans la mémoire vidéo, où sont stockées les tables de pages de la mémoire GPU, responsables de la traduction des adresses virtuelles en adresses physiques. Les différences entre les attaques GDDRHammer et GeForge se résument au fait que la méthode GDDRHammer modifie la table de pages de dernier niveau (PT — Last Level Page Table), tandis que la méthode GeForge modifie le répertoire de pages de dernier niveau (PD0 — Last Level Page Directory).
Parmi d'autres choses, les tables de traduction des adresses mentionnées sont utilisées pour organiser l'accès direct du GPU à la mémoire du CPU, c'est pourquoi la modification d'une adresse dans la table des pages GPU vers une adresse physique dans la mémoire principale et l'activation du drapeau APERTURE, qui active le mode de mappage de la mémoire CPU, permettent de lire et d'écrire des données en accédant à la mémoire principale via le bus PCIe avec l'IOMMU désactivé (par défaut désactivé).


Des attaques réussies ont été démontrées pour les cartes graphiques professionnelles hautes performances NVIDIA RTX A6000 basées sur l'architecture micro-architecturale Ampere (le coût des nouvelles cartes commence à 6850 $, tandis que les modèles d'occasion se chiffrent à 4000 $) et les modèles grand public NVIDIA RTX 3060 (250-300 $). La technique de contournement de la protection contre le Rowhammer combinée à l'utilisation des ressources de parallélisation fournies par le GPU a permis d'augmenter de 64 fois la fréquence d'occurrence des distorsions des cellules par rapport aux attaques précédentes. En tant que mesure temporaire pour bloquer les attaques, le mode de correction d'erreurs ECC (Error Correcting Codes) peut être activé par la commande « nvidia-smi -e 1 », mais cela entraîne des frais supplémentaires et peut potentiellement être contourné en utilisant des méthodes d'attaque telles que ECCploit et ECC.fail.
L'attaque RowHammer permet de distordre le contenu de bits individuels de la mémoire DRAM par la lecture cyclique de données à partir de cellules de mémoire adjacentes. Étant donné que la mémoire DRAM se présente sous la forme d'un tableau bidimensionnel de cellules, chacune composée d'un condensateur et d'un transistor, le fait d'effectuer des lectures continues d'une même zone de mémoire entraîne des fluctuations de tension et des anomalies, provoquant une légère perte de charge des cellules voisines. Si l'intensité de lecture est élevée, la cellule adjacente peut perdre une quantité suffisamment importante de charge et le cycle de régénération suivant ne parviendra pas à restaurer son état d'origine, ce qui entraînera un changement de la valeur des données enregistrées dans la cellule.
La méthode d'attaque Rowhammer a été proposée en 2014, après quoi un jeu du « chat et de la souris » a commencé entre les chercheurs en sécurité et les fabricants de matériel — les fabricants de puces mémoire ont tenté de bloquer la vulnérabilité, tandis que les chercheurs trouvaient de nouveaux moyens de la contourner. Par exemple, pour protéger contre le RowHammer, les fabricants de puces ont ajouté un mécanisme TRR (Target Row Refresh), mais il s'est avéré qu'il ne bloque la distorsion des cellules que dans des cas particuliers, sans protéger contre toutes les variantes d'attaque possibles. Des méthodes d'attaque ont été développées pour les puces DDR3, DDR4 et DDR5 sur des systèmes avec des processeurs Intel, AMD et ARM, ainsi que pour la mémoire GDDR des GPU NVIDIA. De plus, des moyens ont été trouvés pour contourner la correction d'erreurs ECC et des options pour réaliser des attaques via le réseau et l'exécution de code JavaScript dans le navigateur ont été proposées.
Source : opennet.ru
