Des chercheurs du Massachusetts Institute of Technology ont identifié la technique d'attaque TONTOU (Time-of-Neutralization to Time-of-Use), qui propose un nouveau moyen d'exploiter les vulnérabilités microarchitecturales de la classe Spectre v2. Cette vulnérabilité permet de déterminer le contenu de la mémoire du noyau lors de l'exécution de l'exploit dans l'espace utilisateur. Le code pour bloquer l'exploitation de cette vulnérabilité a été intégré au noyau Linux le 5 août et inclus dans les versions 7.1.7, 6.18.43, 6.12.102, 6.6.149, 6.1.181, 5.15.214 et 5.10.263.
Les chercheurs ont démontré la possibilité pour un utilisateur local non privilégié de déterminer le hachage du mot de passe de l'utilisateur root, stocké dans le fichier /etc/shadow et chargé en mémoire lors de l'authentification dans le systÚme. Ils ont réussi à provoquer une fuite de données de la mémoire du noyau avec une vitesse de 5,47 octets par seconde et une précision de 91,97 %. Sur 10 tests de l'exploit, dont la durée moyenne était de 18 minutes, il a été possible dans la moitié des cas de détecter la présence du fichier /etc/shadow en mémoire et d'en extraire le contenu.
L'exploit a Ă©tĂ© dĂ©montrĂ© sur des systĂšmes Ă©quipĂ©s de processeurs AMD et peut ĂȘtre appliquĂ© avec des CPU AMD des familles Zen 1-4. Sur les systĂšmes Intel, l'attaque est Ă©galement rĂ©alisable, mais l'exploitation est plus complexe. Pour se protĂ©ger contre le dĂ©bordement de la pile d'adresses de retour et pour bloquer la vulnĂ©rabilitĂ© SRSO (Speculative Return Stack Overflow), un mĂ©canisme de protection Safe-RET est utilisĂ© dans les processeurs AMD, qui efface le tampon de prĂ©diction des sauts aprĂšs chaque utilisation et rĂ©duit la fenĂȘtre de l'attaque Ă 2 instructions, exĂ©cutĂ©es sur plusieurs dizaines de nanosecondes.
Pour contourner cette protection et Ă©largir la fenĂȘtre d'attaque, une technique de ralentissement du CPU a Ă©tĂ© mise en Ćuvre, permettant de rĂ©ussir Ă effectuer le remplacement de l'interruption au moment appropriĂ© pour rediriger le flux d'exĂ©cution dans le noyau et d'utiliser le gestionnaire d'interruption pour corrompre l'enregistrement dans le buffer de prĂ©diction des branches. Pour exploiter la vulnĂ©rabilitĂ© SRSO, l'attaquant peut crĂ©er des conditions dans lesquelles le bloc de prĂ©diction des branches exĂ©cute de maniĂšre spĂ©culative un grand nombre d'appels CALL incorrectement prĂ©dits, suffisants pour saturer la pile des adresses de retour et réécrire les points de retour correctement prĂ©dits, situĂ©s au dĂ©but de la pile. En fin de compte, les premiers Ă©lĂ©ments de la pile peuvent ĂȘtre réécrits avec des valeurs choisies par l'attaquant, ce qui conduit par la suite Ă l'utilisation de ces valeurs remplacĂ©es lors de l'exĂ©cution spĂ©culative de l'instruction RET dans le contexte d'un autre processus.
Le processeur dĂ©terminera que la prĂ©diction de branchement est incorrecte et annulera l'opĂ©ration Ă son Ă©tat initial, mais les donnĂ©es traitĂ©es pendant l'exĂ©cution spĂ©culative resteront dans le cache et les buffers microarchitecturaux. Si un bloc exĂ©cutĂ© par erreur accĂšde Ă la mĂ©moire, son exĂ©cution spĂ©culative entraĂźnera le dĂ©pĂŽt dans le cache gĂ©nĂ©ral et des donnĂ©es lues de la mĂ©moire. Pour extraire des informations du cache, l'une des mĂ©thodes d'analyse du contenu du cache peut ĂȘtre utilisĂ©e, basĂ©e sur l'analyse de la variation du temps d'accĂšs aux donnĂ©es mises en cache et non mises en cache.
Source : opennet.ru
