Ce qui se passe
Après GPUHammer, NVIDIA avait répondu par un avis de sécurité : activez l'ECC de niveau système, le problème est traité. La même équipe de l'université de Toronto publie GPUThor, qui obtient un shell root sur l'hôte avec l'ECC activé. Il suffit de pouvoir lancer un noyau CUDA non privilégié sur la carte.
Quatre cartes Ampere ont été testées, toutes vulnérables :
| Carte | Mémoire | Inversions de bits par Go (ECC désactivé) |
|---|---|---|
| RTX A5000 | 24 Go GDDR6 | 377 552 |
| RTX A6000 | 48 Go GDDR6 | dans la fourchette 72 000 – 377 000 |
| RTX A4500 | 20 Go GDDR6 | idem |
| RTX A4000 | 16 Go GDDR6 | idem |
Pour situer : GPUHammer produisait 16 inversions par gigaoctet, GDDRHammer 758. L'A5000 fait donc 23 597 fois GPUHammer, et se rapproche des ~550 000 de Blacksmith sur DDR4.
Le mécanisme
Deux trouvailles portent l'attaque.
La première est le martèlement non uniforme : la rangée agresseuse voisine de la victime est activée bien plus souvent que les rangées leurres qui noient la défense Target Row Refresh. Les attaques GPU précédentes activaient tout au même rythme. Le papier estime que le TRR de ces puces GDDR6 n'intervient qu'environ une fois tous les 72 intervalles de rafraîchissement, et construit un motif sur six intervalles calé sur cet horaire.
La seconde tient à l'exécution GPU : des accès répétés émis dans un même warp — les 32 threads exécutés en verrou — sont fusionnés par le contrôleur mémoire en une seule activation DRAM. Les noyaux répartissent donc leurs accès sur des warps et des lignes de cache différents, où ils survivent comme activations distinctes.
Pourquoi l'ECC ne suffit plus
L'ECC de ces cartes est du SECDED : il corrige un bit inversé, en détecte deux. Les chercheurs ont relevé 387 doubles inversions et deux triples sur les quatre cartes. Or un triple est mal corrigé — la carte rend une donnée fausse sans rien signaler, une corruption silencieuse (SDC). C'est par là que passe l'obtention de root sur un hôte dont l'IOMMU est activée.
Les erreurs doubles (DUE) sont détectées sans être corrigibles, et restent exploitables : NVIDIA les traite paresseusement, laissant environ 10 ms entre la détection et l'arrêt du GPU — de quoi consommer la donnée corrompue.
L'escalade réutilise le code de GPUBreach : on place des tables de pages dans une rangée vulnérable, on martèle les rangées voisines pour corrompre le numéro de trame d'une entrée, puis un second noyau lit hors du processus et écrase la structure de credentials.
Une seule banque martelée sur une A6000 avec ECC activé produit 11 DUE et une SDC par jour — soit une DUE toutes les deux heures. Chaque DUE tue tous les noyaux de la carte, qui reste inutilisable jusqu'au reset : le déni de service est acquis même sans escalade.
Ce que ça change
Aucun correctif n'existe : une vraie parade demande une correction multi-bits plus forte et des défenses in-DRAM (Refresh Management, Per-Row Activation Counting) dans les générations suivantes. La conduite à tenir est donc opérationnelle :
- ne pas partager une carte entre plusieurs locataires ;
- surveiller les compteurs d'erreurs ECC ;
- restreindre l'exécution de charges CUDA non fiables.
Les autres puces testées — A10, L4, L40, RTX 4090, A30 en HBM2e — n'ont produit aucune inversion, probablement grâce à un TRR différent ; A100 et H100 n'étaient pas dans le lot. Les GPU serveur récents confinent la faute (Error Containment, Dynamic Page Offlining) mais reposent toujours sur du SECDED : la voie par corruption silencieuse leur reste ouverte.
Source : The Hacker News, New GPUThor Rowhammer Defeats ECC on NVIDIA RTX A6000 to Gain Host Root Access · papier : CCS26_GPUThor.pdf · gputhor.com