Neuspješno kopiranje: Ranjivost Linuxa koja omogućava root pristup putem keširanja stranice

Ključne točke:
  • Napadač otvara AF_ALG socket i zahtijeva algoritam za autentifikaciju.
  • Napadač koristi splice() da bi u socket ubacio stranice iz keša ciljne datoteke (npr. /usr/bin/su). Ove stranice zatim postaju dio izlazne hash liste (u koje se može pisati).
  • Napadač šalje poruku (sendmsg) sa zlonamjerno dizajniranim Pridruženim autentifikovanim podacima (AAD), gdje bajtovi 4-7 sadrže podatke koje žele zapisati (npr. zlonamjerni kod).
  • Kada se pokrene dešifriranje, authencesn uzima ta 4 bajta iz AAD-a i privremeno ih upisuje na kraj bafera. Zbog optimizacije na mjestu, ovaj kraj bafera direktno ukazuje na stranicu keša datoteke.
  • Kriptografska operacija ne uspijeva (šifrirani tekst je nevažeći), ali se pisanje od 4 bajta već dogodilo i nikada se ne poništava.
  • Napadač ponavlja proces kako bi ubrizgao svoj kod. Kada se izvrši /usr/bin/su, kernel učitava modificiranu verziju iz memorije, izvršavajući ubrizgani kod s root privilegijama.

kopiranje nije uspjelo

Sigurnost Linuxa suočava se s još jednim izazovom nakon otkrića ranjivost CVE-2026-31431, nazvana "Neuspješno kopiranje" od strane istraživača u Xint Code-u. Daleko od toga da je teorijski nedostatak, ovaj problem dizajna Omogućava lokalnom korisniku bez privilegija da poveća svoja ovlaštenja i dobije puni pristup. kao superkorisnik na predvidljiv i tih način.

Istraživači spominju da je ova ranjivost uspješno iskorištena u vodećim distribucijama kao što su Ubuntu, Amazon Linux, RHEL i SUSE, što potvrđuje da bilo koji sistem koji koristi kernel noviji od verzije 4.14 i držati korak Omogućavanje podrške za AF_ALG sockete je potencijalno ranjivo na ovaj napad.

Operacije na mjestu i prelijevanje predmemorije stranice

Što se tiče presude, navodi se da je ovo Datira iz optimizacije uvedene 2017. godine unutar kriptografskog API-ja kernela (AF_ALG). Ova modifikacija Želio sam eliminirati nepotrebno baferiranje. izvršavanje operacija autentificiranog šifriranja (AEAD) direktno u istom memorijskom prostoru, što je poznato kao operacije "na mjestu".

El Kritičan problem nastaje pri kombinovanju ove optimizacije sa funkcijom splice(), Ova metoda prenosi podatke između deskriptora datoteka prenošenjem direktnih referenci na keš stranice kernela umjesto fizičkog kopiranja podataka. Prilikom zahtjeva za dešifriranjem, struktura memorije je konfigurisana tako da je odredišni bafer, koji je trebao biti privremeni prostor za korisnika, na kraju bio direktno povezan sa stranicama keša koje sadrže podatke sistemskih datoteka.

Autentifikacija i pisanje izvan granica memorije

El Konačni okidač ranjivosti leži u anomalnom ponašanju algoritma za autentifikaciju. Za razliku od drugih kriptografskih rutina koje strogo poštuju granice svojih odredišnih bafera, Ovaj specifični algoritam koristi memorijski prostor korisnika kao privremeno radno područje. (bilježnica) za preuređivanje nizova bajtova tokom izračunavanja oznake za autentifikaciju.

U ovom procesu, algoritam upisuje četiri bajta izvan utvrđenog ograničenja za izlaznu regiju. Zbog optimizacije na mjestu i referentnog lanca kreiranog pomoću splice(),Ovaj naizgled bezopasan tekst prelazi granicu korisnikove memorije. i direktno se spušta na stranicu keša kernela povezanu s datotekom koja se obrađuje.

Ovaj lanac logičkih grešaka Omogućava napadaču da proizvoljno prepiše četiri bajta u određenim pozicijama keša. stranica za bilo koju datoteku koju može pročitati. Slanjem niza izračunatih zahtjeva, napadač može ubaciti zlonamjerni kod u verziji kritičnih izvršnih datoteka u memoriji sa postavljenim suid bitom, kao što je alat za prebacivanje korisnika.

Budući da sve operacije čitanja prvo upituju keš stranice, sljedeći put kada se pozove legitimni uslužni program, Sistem će izvršiti ubrizgani kod iz memorije, dodjeljujući trenutne root privilegije. bez ikakve promjene fizičke datoteke na tvrdom disku. Još alarmantnije, budući da izolacija kontejnera dijeli keš memoriju stranica osnovnog hosta, ova ranjivost služi kao direktan put za izbjegavanje virtualiziranih okruženja poput Kubernetes klastera i kompromitiranje primarnog čvora.

Hitne zakrpe i rješenja za ublažavanje

S obzirom na ozbiljnost ove presude, Timovi za održavanje su implementirali hitne nadogradnje, gdje se nalazi konačno rješenje Vratite optimizaciju na licu mjesta unutar datoteke algif_aead.c, striktno odvajajući izvorne i odredišne ​​liste memorije kako bi se spriječilo da keširane stranice završe u putanjama u koje se može pisati.

Ove zakrpe su već integrirane u kernele 6.18.22, 6.19.12 i 7.0, te se vraćaju na dugoročne grane podrške. Administratorima koji ne mogu odmah ponovo pokrenuti ili ažurirati svoje servere preporučuje se onemogućavanje kernel modula algif_aead ako je kompajliran eksterno ili ozbiljno ograničavanje kreiranja AF_ALG socketa korištenjem sigurnosnih politika kao što je SELinux, štita koji je, na primjer, zaštitio trenutne Android uređaje od ove prijetnje.

Konačno, ako ste zainteresirani da saznate više, detalje možete pronaći na sljedećem linku.


Dodaj kao preferirani izvor na Googleu