In de Linux-kernel is de afgelopen twee weken een vijfde kritieke kwetsbaarheid vastgesteld, die een gebruiker in staat stelt zijn privileges in het systeem te verhogen. Twee werkende exploits zijn gepubliceerd: sshkeysign_pwn geeft een niet-geprivilegieerde gebruiker de mogelijkheid om de inhoud van de gesloten host SSH-sleutels /etc/ssh/ssh_host_*_key te lezen, en chage_pwn ā om de inhoud van het bestand /etc/shadow met de hashes van gebruikerswachtwoorden te lezen.
Informatie over de kwetsbaarheid was niet gepland voor openbaarmaking, maar een van de beveiligingsonderzoekers kon, op basis van de voorgestelde patch voor de kernel, de kern van de kwetsbaarheid vaststellen, die het mogelijk maakt bestanden die alleen toegankelijk zijn voor de root-gebruiker, zoals /etc/shadow, te lezen. In de wijziging die aan de kernel is toegevoegd, werd de logica van het gebruik van de functie get_dumpable() in ptrace aangepast bij het bepalen van het toegangslevel in de functie ptrace_may_access().
De kwetsbaarheid zelf wordt veroorzaakt door een race-conditie, die het mogelijk maakt voor een niet-geprivilegieerde toegang tot de bestandsdescriptor pidfd na toegang tot een bestand via een suid root-proces. In de tijd tussen het openen van het bestand en het herroepen van privileges in de suid-applicatie (bijvoorbeeld via de functie setreuid), ontstaat er een situatie waarin de applicatie die de suid root-applicatie heeft gestart, via de pidfd-descriptor toegang kan krijgen tot een bestand dat door de suid-applicatie is geopend, zelfs als de toegangsrechten op het bestand dat niet toestaan.
Het venster voor exploitatie ontstaat omdat de functie '__ptrace_may_access()' de controle op de toegang tot het bestand overslaat als het veld task->mm op NULL is ingesteld na het uitvoeren van exit_mm(), maar vóór het aanroepen van exit_files(). Op dat moment denkt de systeemaanroep pidfd_getfd dat de gebruikers-ID (uid) van het aanroepende proces overeenkomt met de ID die toegang tot het bestand heeft. Opmerkelijk is dat eerder, in 2020, al aandacht aan dit probleem werd besteed, maar het bleef onopgelost.
In de exploit die de inhoud van /etc/shadow verkrijgt, komt de aanval neer op het cyclisch uitvoeren van de applicatie /usr/bin/chage met de suid root-vlag, die de inhoud van /etc/shadow leest. Nadat het proces is afgeleid, wordt de systeemaanroep pidfd_open uitgevoerd en wordt er een cyclische doorloop van beschikbare pidfd-descriptoren uitgevoerd via de systeemaanroep pidfd_getfd en hun controle via /proc/self/fd. In de exploit sshkeysign_pwn worden vergelijkbare manipulaties uitgevoerd met de suid root-applicatie ssh-keysign.
CVE-identificator voor problemen is nog niet toegewezen, updates van de kernel en pakketten in distributies zijn nog niet gepubliceerd. In de een paar uur geleden uitgebrachte kernels 7.0.7, 6.18.30 en 6.12.88 is de kwetsbaarheid niet verholpen. Op het moment van schrijven kan alleen de patch worden gebruikt. Er worden mogelijke workarounds besproken om de kwetsbaarheid te blokkeren, zoals het instellen van sysctl kernel.yama.ptrace_scope=3 of het verwijderen van de suid root-vlag van uitvoerbare bestanden in het systeem (ten minste voor de tools ssh-keysign en chage, die in exploits worden gebruikt).
Aanvulling: De kwetsbaarheid is geĆÆdentificeerd met CVE-2026-46333. Er zijn updates voor de Linux-kernel 7.0.8, 6.18.31, 6.12.89, 6.6.139, 6.1.173, 5.15.207 en 5.10.256 uitgebracht ter oplossing van de kwetsbaarheid. De status van de aanpak van kwetsbaarheden in distributies kan worden beoordeeld op de volgende pagina's: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora.
Bron: opennet.ru
