Des chercheurs ont récemment montré que l’attaque GPUThor pouvait viser des cartes graphiques professionnelles de Nvidia, provoquer des corruptions dans la mémoire GDDR6 malgré l’ECC (Error Correcting Code), puis se servir de ces erreurs pour obtenir un accès root sur la machine hôte.
Leur démonstration la plus frappante a été menée sur une Nvidia RTX A6000, un modèle très présent dans les stations de travail, le calcul haute performance et une partie des infrastructures cloud.
Pour les entreprises qui font tourner du code non fiable sur des GPU partagés, le signal est simple.
GPUThor fait partie de la famille des attaques Rowhammer. Le principe est connu: marteler certaines zones de la mémoire jusqu’à provoquer des bit-flips, autrement dit des inversions de bits.
Ce qui change ici, d’après les chercheurs, c’est l’efficacité de la méthode sur les GPU Nvidia de génération Ampere équipés de mémoire GDDR6, en particulier les RTX A4000, A4500, A5000 et A6000.
Toujours d’après leurs mesures, GPUThor provoque 4 548 à 23 597 fois plus de bit-flips que la précédente attaque GPUHammer. Le saut est énorme. Là où ce genre d’attaque passait jusque-là pour quelque chose de surtout théorique, ou de trop instable pour inquiéter vraiment, l’exploitation devient nettement plus crédible.
Le point le plus délicat concerne sa capacité à passer au travers des protections de l’ECC. Sur le papier, l’ECC corrige les erreurs simples et détecte certaines erreurs plus graves.
Dans les faits, les chercheurs expliquent que l’attaque peut provoquer assez de corruptions pour dépasser la correction sur un bit, produire des erreurs sur deux bits qui sont seulement détectées, et même entraîner des erreurs sur trois bits susceptibles d’être mal corrigées.
Et c’est là que la situation devient plus inquiétante: l’erreur n’est pas forcément bloquée. Elle peut aussi déboucher sur une corruption silencieuse des données, un cas bien plus dangereux qu’un plantage visible et immédiat.
L’exploitation ne s’arrête pas à cette étape. En visant les tables de pages du GPU, GPUThor peut, d’après les chercheurs, donner à un programme non privilégié un accès arbitraire à la mémoire, puis ouvrir la voie à une élévation de privilèges jusqu’au niveau root sur le système hôte.
L’équipe de recherche met aussi en avant un autre effet très concret: l’attaque peut servir à provoquer un déni de service. Dans leurs essais, elle a entraîné des réinitialisations du GPU environ toutes les deux heures, avec un risque non négligeable au passage, certains systèmes pouvant finir par considérer le matériel comme défaillant et décider de le remplacer.
Le risque monte d’un cran dans les environnements mutualisés, quand plusieurs charges de travail cohabitent sur le même matériel physique. C’est dans ce cadre que l’exécution de code non fiable devient le scénario le plus sensible.
Nvidia a reconnu le problème et recommande une réponse à plusieurs niveaux: activer l’ECC, mettre en place l’isolation IOMMU et DMA, surveiller les erreurs ECC, et limiter l’exécution de code GPU non approuvé.
Les chercheurs conseillent aussi d’éviter, autant que possible, de faire partager le même GPU à des clients distincts. Fait intéressant, les mêmes techniques n’auraient pas fonctionné sur des GPU équipés de mémoire GDDR6X ou HBM2e.