Rubix : Une nouvelle approche pour défendre contre le Rowhammer
Rubix propose des solutions efficaces pour lutter contre les attaques Rowhammer tout en gardant les performances du système.
― 7 min lire
Table des matières
RowHammer, c'est un problème de sécurité dans les systèmes de mémoire des ordinateurs modernes. Ça se passe quand une ligne de mémoire est activée plein de fois sur une courte période, ce qui fait que les lignes voisine commencent à fuir du courant. Ça peut mener à des erreurs, appelées "bit flips", où des données importantes peuvent être corrompues. Rowhammer menace la sécurité des systèmes, permettant à des attaquants de manipuler des données et de gagner un accès non autorisé.
Le problème est devenu plus sérieux avec le temps. Avec l'avancée de la technologie de mémoire, il faut de moins en moins d'activations pour provoquer ces bit flips. En 2014, le nombre d'activations nécessaires, qu'on appelle le "Rowhammer Threshold", était d'environ 139 000. Mais en 2020, ce seuil est tombé à environ 4 800 activations. Cette tendance à la baisse devrait se poursuivre, ce qui veut dire que le risque des attaques Rowhammer va augmenter.
Beaucoup de systèmes essaient d'empêcher les attaques Rowhammer en rafraîchissant les lignes voisines quand une ligne est activée souvent. Mais, de nouvelles méthodes d'attaque peuvent contourner ces défenses. Les solutions récentes se concentrent sur le fait de réagir contre la ligne qui est en train d'être attaquée, plutôt que les lignes à côté. Des exemples incluent AQUA, SRS et Blockhammer. Même si ces méthodes sont efficaces, elles causent souvent des ralentissements importants, ce qui peut être un gros inconvénient dans des situations pratiques.
Besoin de Solutions Efficaces
À mesure que le Rowhammer Threshold diminue, de plus en plus de lignes de mémoire atteindront la limite d'activation, nécessitant plus d'actions de défense. Les stratégies de mitigation actuelles peuvent bien fonctionner à des seuils d'activation élevés, mais la performance chute drastiquement à des seuils plus bas, les rendant impraticables pour une utilisation réelle.
Notre recherche vise à résoudre ces défis en proposant une solution qui maintient des défenses efficaces contre Rowhammer sans engendrer de coûts de performance élevés, même à de faibles seuils d'activation. On se concentre sur une approche innovante de Mappage de mémoire pour réduire le nombre de "hot rows", ou lignes qui reçoivent trop d'activations.
Hot Rows et Leur Impact
Une hot row est définie comme une ligne qui dépasse le Rowhammer Threshold dans une période de temps spécifique, généralement 64 millisecondes. Plus le nombre de hot rows augmente, plus la performance des stratégies de mitigation diminue. Par exemple, un système peut n'avoir que quelques centaines de hot rows à un seuil d'activation plus élevé, alors que ce nombre peut exploser à des milliers à des seuils plus bas.
Notre étude trouve que la principale raison des hot rows est la fonction de mappage de mémoire, qui détermine comment les données sont stockées. Dans les systèmes modernes, les données proches en mémoire sont souvent placées dans la même ligne. Cette corrélation spatiale peut amener plusieurs lignes souvent accessibles à être dans la même ligne, entraînant trop d'activations.
Introduction de Rubix
Pour s'attaquer au problème des hot rows, on propose une solution appelée Rubix. Rubix change la façon dont les lignes de mémoire sont mappées sur les lignes en utilisant le chiffrement d'adresses. En randomisant l'adresse utilisée pour accéder à la mémoire, on peut casser la corrélation spatiale qui mène aux hot rows.
Caractéristiques de Rubix
Rubix a deux versions principales : Rubix-S (statique) et Rubix-D (dynamique).
Rubix-S : Cette version utilise une méthode de chiffrement pour changer la façon dont les lignes de mémoire sont mappées. Elle chiffre l'adresse de la ligne lors de l'accès à la mémoire, ce qui disperse les lignes souvent accessibles sur différentes lignes. Ça réduit énormément les chances que plusieurs lignes actives soient dans la même, diminuant ainsi le nombre de hot rows.
Rubix-D : Contrairement à Rubix-S, cette version change en continu le mappage de mémoire pendant le fonctionnement du système. Cette approche dynamique ajoute une couche de sécurité supplémentaire, rendant encore plus difficile pour les attaquants de prédire l'emplacement des lignes étroitement liées.
Comment Rubix Fonctionne
Rubix utilise une méthode simple mais efficace pour randomiser l'accès à la mémoire. Quand une demande d'accès à la mémoire arrive, Rubix chiffre l'adresse de la ligne avant de l'utiliser pour accéder à la mémoire. Ça veut dire que même si plusieurs lignes sont demandées en peu de temps, elles vont probablement être étalées sur différentes lignes, minimisant ainsi la probabilité de hot rows.
Impact sur la Performance
En mettant en œuvre Rubix, on peut réduire significativement le nombre de hot rows et par conséquent baisser les coûts de performance associés aux stratégies de mitigation existantes. Par exemple, alors que les méthodes conventionnelles peuvent occasionner des ralentissements de 15% ou plus à un Rowhammer Threshold de 128, Rubix-S peut réduire ce ralentissement à juste 1%.
Rubix-D va encore plus loin en permettant des changements d'adresses continus, ce qui rend moins probable que les attaquants planifient efficacement leurs méthodes. L'impact sur la performance reste bas, même quand le système s'adapte à de nouveaux modèles d'accès à la mémoire.
Analyse des Résultats
Dans nos expériences, on a constaté que Rubix pouvait éliminer efficacement les hot rows pour divers types de charges de travail. Les mappages de mémoire traditionnels résultaient souvent en des milliers de hot rows, tandis que Rubix réduisait ce nombre de manière drastique.
Méthodes de Performance : Nos résultats ont montré que Rubix-S pouvait faire chuter les ralentissements causés par AQUA de 15% à juste 1%. Pour SRS et Blockhammer, les ralentissements sont tombés de 60% et 600% à 2% et 3%, respectivement.
Surcoût de Stockage : Les besoins de stockage pour Rubix restent minimes, ce qui le rend bien adapté aux limites pratiques pour les systèmes de mémoire. Rubix-S nécessite seulement 16 octets de stockage pour son fonctionnement, ce qui le rend faisable pour une mise en œuvre à grande échelle.
Méthodologies de Test : On a utilisé un éventail de charges de travail, assurant une évaluation complète de l'efficacité de Rubix. Les tests ont été réalisés à l'aide de simulations qui reflétaient des scénarios réels, nous fournissant des données précises sur les indicateurs de performance.
L'Aspects Sécuritaire
La gestion sécurisée de la mémoire est cruciale pour prévenir les attaques Rowhammer. Rubix-S et Rubix-D maintiennent les garanties de sécurité fournies par les stratégies de mitigation existantes. Elles ne compromettent pas la sécurité des systèmes mais l'améliorent en s'attaquant à la cause des hot rows.
Prouver la Sécurité
On a défini un paramètre de sécurité, TRH, qui indique le nombre minimum d'activations nécessaires pour risquer des bit flips pour une ligne. Nos découvertes ont prouvé que les implémentations de Rubix maintenaient la sécurité contre des attaques essayant d'exploiter des vulnérabilités de mémoire.
Rubix-D, avec son mappage dynamique, pose un défi encore plus grand pour les attaquants potentiels. Les changements constants dans le mappage obscurcissent les relations entre les lignes de mémoire, rendant des attaques complexes comme Half-Double beaucoup plus difficiles à exécuter.
Conclusion
La montée de Rowhammer en tant que préoccupation de sécurité exige des solutions innovantes qui protègent les systèmes tout en maintenant la performance. Rubix offre une approche pratique pour atteindre ces objectifs. Grâce à un mappage de mémoire efficace, les versions statiques et dynamiques de Rubix peuvent réduire significativement les hot rows et le surcoût généralement associé aux défenses contre Rowhammer.
À mesure que la technologie de mémoire continue d'évoluer, l'importance de solutions robustes et efficaces comme Rubix ne fera que croître. En embrassant ces avancées, on peut améliorer la sécurité de la mémoire tout en s'assurant que les systèmes restent réactifs et efficaces.
Titre: Randomized Line-to-Row Mapping for Low-Overhead Rowhammer Mitigations
Résumé: Modern systems mitigate Rowhammer using victim refresh, which refreshes the two neighbours of an aggressor row when it encounters a specified number of activations. Unfortunately, complex attack patterns like Half-Double break victim-refresh, rendering current systems vulnerable. Instead, recently proposed secure Rowhammer mitigations rely on performing mitigative action on the aggressor rather than the victims. Such schemes employ mitigative actions such as row-migration or access-control and include AQUA, SRS, and Blockhammer. While these schemes incur only modest slowdowns at Rowhammer thresholds of few thousand, they incur prohibitive slowdowns (15%-600%) for lower thresholds that are likely in the near future. The goal of our paper is to make secure Rowhammer mitigations practical at such low thresholds. Our paper provides the key insights that benign application encounter thousands of hot rows (receiving more activations than the threshold) due to the memory mapping, which places spatially proximate lines in the same row to maximize row-buffer hitrate. Unfortunately, this causes row to receive activations for many frequently used lines. We propose Rubix, which breaks the spatial correlation in the line-to-row mapping by using an encrypted address to access the memory, reducing the likelihood of hot rows by 2 to 3 orders of magnitude. To aid row-buffer hits, Rubix randomizes a group of 1-4 lines. We also propose Rubix-D, which dynamically changes the line-to-row mapping. Rubix-D minimizes hot-rows and makes it much harder for an adversary to learn the spatial neighbourhood of a row. Rubix reduces the slowdown of AQUA (from 15% to 1%), SRS (from 60% to 2%), and Blockhammer (from 600% to 3%) while incurring a storage of less than 1 Kilobyte.
Auteurs: Anish Saxena, Saurav Mathur, Moinuddin Qureshi
Dernière mise à jour: 2023-08-28 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2308.14907
Source PDF: https://arxiv.org/pdf/2308.14907
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.