HeadlinesBriefing HeadlinesBriefing.com

Bogue noyau de 37 ans dans OpenBSD : root

Hacker News •
×

Calif, une société de recherche en sécurité, a publié les détails d'une vulnérabilité dans OpenBSD qui remonte à environ 37 ans, jusqu'aux sources originales de BSD. Un compteur d'attachements de mémoire partagée était défini comme un short signé de 16 bits. En créant de façon répétée des processus fils ayant des enregistrements d'attachement de mémoire partagée, il était possible de faire dépasser à ce compteur sa valeur maximale de 32 767, le faisant basculer vers une valeur négative. Ce dépassement d'entier pouvait mener à une utilisation après libération via une condition de course. Combiné à une écriture hors limites distincte dans le noyau, il permettait une élévation locale de privilèges jusqu'à root. Les problèmes ont été corrigés dans les errata 026 et 018.

Les chercheurs ont décrit une voie d'exploitation qui a permis d'obtenir un accès root local sur OpenBSD avec KARL, SMAP et SMEP activés, sans recourir à une vulnérabilité de divulgation d'informations. La méthode consistait à mapper 127 segments de mémoire partagée System V, à les démapper, puis à créer 259 processus pour faire basculer le compteur d'attachements. Un grooming du tas et une condition de course ont ensuite servi à aligner les allocations, corrompre une structure multicast et, finalement, obtenir l'exécution de code noyau en écrasant un pointeur noyau prévisible.

L'exploit reposait sur une primitive d'écriture write-what-where : l'écriture provenait d'une opération TAILQ_REMOVE, la cible était une mémoire userland rendue accessible en mode superviseur, et l'emplacement était un pointeur noyau prévisible. KARL d'OpenBSD randomise les adresses des fonctions et des données, mais les allocateurs mémoire du noyau restent déterministes, ce qui a fait de certaines allocations de démarrage précoce des cibles fiables.

Pour réduire le risque d'attaques similaires, les auteurs suggèrent des mesures comme le safe-unlinking, qui vérifie les invariants des listes doublement chaînées avant d'effectuer les écritures de déchaînage et interrompt l'exécution par abort ou panic en cas de violation. Calif indique qu'elle signale régulièrement des vulnérabilités aux projets open source, souvent accompagnées de correctifs suggérés.

Source: Hacker News · Résumé par HeadlinesBriefing