Un groupe de chercheurs de l'École polytechnique fédérale de Zurich, de l'Université libre d'Amsterdam et de Qualcomm a publié une nouvelle méthode d'attaque de type RowHammer, permettant de modifier le contenu de bits individuels dans la mémoire dynamique (DRAM). L'attaque a été nommée Blacksmith et a reçu l'identifiant CVE-2021-42114. De nombreux puces DDR4, dotées de protections contre les méthodes d'attaques RowHammer précédemment connues, sont vulnérables. Un outil permettant de tester la vulnérabilité de ses systèmes a été publié sur GitHub.
Rappelons que les attaques de type RowHammer permettent de déformer le contenu de bits individuels de la mémoire par une lecture cyclique des données dans des cellules de mémoire adjacentes. La mémoire DRAM étant une matrice bidimensionnelle de cellules, chacune composée d'un condensateur et d'un transistor, une lecture continue 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 dans les cellules voisines. Si l'intensité de lecture est élevée, la cellule adjacente peut perdre une quantité considérable de charge et le cycle de régénération suivant n'aura pas le temps de restaurer son état initial, ce qui entraînera une modification de la valeur des données stockées dans la cellule.
Pour se protéger contre les attaques RowHammer, les fabricants de puces ont proposé le mécanisme TRR (Target Row Refresh), qui protège contre la déformation des cellules dans des lignes adjacentes. Cependant, comme cette protection reposait sur le principe de 'sécurité par obscurité', elle ne résolvait pas le problème à la racine et ne protégeait que contre des cas particuliers connus, ce qui permettait de trouver facilement des moyens de contourner cette protection. Par exemple, en mai, Google a proposé la méthode Half-Double, qui ne pouvait pas être contournée par la protection TRR, car durant l'attaque, des cellules qui ne sont pas directement adjacentes à la cible étaient affectées.
La nouvelle méthode Blacksmith propose un moyen alternatif de contourner la protection TRR, basé sur un accès inhomogène avec une fréquence variable à deux lignes ou plus considérées comme agressives pour provoquer des fuites de charge. Pour déterminer le modèle d'accès à la mémoire provoquant une fuite de charge, un fuzzer spécial a été développé, capable de sélectionner automatiquement les paramètres d'attaque pour une puce donnée, en variant l'ordre, l'intensité et la systématicité de l'accès aux cellules.
Une approche similaire, non liée à l'impact sur les mêmes cellules, rend inefficaces les méthodes de protection TRR actuelles, qui se réduisent d'une manière ou d'une autre à compter le nombre d'accès répétés aux cellules et, lorsqu'un certain seuil est atteint, à initier le rechargement des cellules voisines. Avec Blacksmith, le modèle d'accès est étendu à plusieurs cellules de différents côtés de la cellule cible, permettant ainsi d'obtenir une fuite de charge sans atteindre les seuils critiques.
La méthode s'est révélée nettement plus efficace que les méthodes précédemment proposées pour contourner le TRR — les chercheurs ont réussi à obtenir une distorsion des bits sur tous les 40 différents chips de mémoire DDR4 récemment achetés, fabriqués par Samsung, Micron, SK Hynix et un fabricant inconnu (le fabricant n'était pas spécifié pour 4 chips). En comparaison, la méthode TRRespass précédemment proposée par les mêmes chercheurs n'a été efficace que pour 13 des 42 chips testés à l'époque.
De manière générale, il est supposé que la méthode Blacksmith est applicable à 94 % de tous les chips DRAM disponibles sur le marché, mais selon les chercheurs, certains chips sont plus vulnérables et plus faciles à attaquer que d'autres. L'utilisation de codes de correction d'erreurs (ECC) dans les chips et le doublement de la fréquence de rafraîchissement de la mémoire n'offrent pas une protection complète, mais compliquent l'exploitation. Il est remarquable que le problème ne puisse pas être bloqué sur les chips déjà commercialisés et nécessite la mise en œuvre d'une nouvelle protection au niveau matériel, ce qui signifie que l'attaque restera pertinente pendant encore de nombreuses années.
Comme exemples pratiques, il est mentionné des méthodes utilisant Blacksmith pour modifier le contenu des entrées de la table des pages de mémoire (PTE, page table entry) afin d'obtenir des privilèges noyau, de corrompre la clé publique RSA-2048 stockée en mémoire dans OpenSSH (une clé publique pourrait être mise en correspondance avec la clé privée de l'attaquant pour se connecter à la VM de la victime) et de contourner la vérification des autorisations en modifiant la mémoire du processus sudo pour obtenir des privilèges root. Selon le chip, la modification d'un seul bit cible nécessite entre 3 secondes et plusieurs heures pour mener l'attaque. une machine virtuelle à la correspondance avec la clé privée de l'attaquant pour se connecter à la VM de la victime) et contourner la vérification des autorisations par la modification de la mémoire du processus sudo afin d'obtenir des privilèges root. Selon la puce, la modification d'un seul bit cible nécessite entre 3 secondes et plusieurs heures pour mener à bien l'attaque.

On peut également noter la publication du framework open-source LiteX Row Hammer Tester pour tester les méthodes de protection de la mémoire contre les attaques de type RowHammer, développé par Antmicro à la demande de Google. Ce framework est basé sur l'utilisation de FPGA pour un contrôle total des commandes envoyées directement au chip DRAM, afin d'exclure l'influence du contrôleur de mémoire. Un kit d'outils en Python est proposé pour interagir avec les FPGA. Le portail basé sur FPGA comprend un module pour le transfert de données par paquets (définit les modèles d'accès à la mémoire), un Payload Executor, un contrôleur basé sur LiteDRAM (qui gère toute la logique requise pour le DRAM, y compris l'activation des lignes et la mise à jour de la mémoire) et un CPU VexRiscv. Les résultats du projet sont distribués sous licence Apache 2.0. L'utilisation de différentes plateformes FPGA est prise en charge, y compris Lattice ECP5, Xilinx Series 6, 7, UltraScale et UltraScale+.
Source : opennet.ru
