Neuspješno kopiranje: Ranjivost Linuxa koja omogućuje root pristup putem predmemoriranja stranice

Ključne točke:
  • Napadač otvara AF_ALG socket i zahtijeva algoritam za autentifikaciju.
  • Napadač koristi splice() za punjenje socketa stranicama iz predmemorije ciljne datoteke (npr. /usr/bin/su). Te stranice zatim postaju dio izlazne hash liste (za pisanje).
  • Napadač šalje poruku (sendmsg) sa zlonamjerno dizajniranim Pridruženim autentificiranim 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 zapisuje na kraj međuspremnika. Zbog optimizacije na mjestu, ovaj kraj međuspremnika izravno upućuje na stranicu predmemorije datoteke.
  • Kriptografska operacija ne uspijeva (šifrirani tekst je nevažeći), ali pisanje od 4 bajta se već dogodilo i nikada se ne poništava.
  • Napadač ponavlja postupak 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 Codeu. Daleko od toga da je teorijski nedostatak, ovaj problem dizajna Omogućuje lokalnom korisniku bez privilegija da poveća svoja dopuš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 sustav koji koristi kernel noviji od verzije 4.14 i nastavi Omogućavanje podrške za AF_ALG utičnice je potencijalno ranjivo na ovaj napad.

Operacije na mjestu i prelijevanje predmemorije stranice

Što se tiče presude, spominje se da je ovo Datira iz optimizacije uvedene 2017. godine unutar kriptografskog API-ja kernela (AF_ALG). Ova izmjena Htio sam eliminirati nepotrebno međuspremništvo. izvršavanje operacija autentificiranog šifriranja (AEAD) izravno u istom memorijskom prostoru, što je poznato kao operacije "na mjestu".

El Kritičan problem nastaje pri kombiniranju ove optimizacije s funkcijom splice(), Ova metoda prenosi podatke između deskriptora datoteka prijenosom izravnih referenci na predmemoriju stranica kernela umjesto fizičkog kopiranja podataka. Prilikom zahtjeva za dešifriranjem, struktura memorije konfigurirana je tako da je odredišni međuspremnik, koji bi trebao biti privremeni prostor za korisnika, na kraju bio izravno povezan sa stranicama predmemorije 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 međuspremnika, Ovaj specifični algoritam koristi memorijski prostor korisnika kao privremeno radno područje. (bilježnica) za preuređivanje nizova bajtova tijekom izračuna oznake za autentifikaciju.

U ovom procesu, algoritam zapisuje četiri bajta izvan utvrđenog ograničenja za izlazno područje. Zbog optimizacije na mjestu i referentnog lanca koji je stvorio splice(),Ovaj naizgled bezopasan tekst prelazi granice korisnikove memorije. i sleti izravno na stranicu predmemorije kernela povezanu s datotekom koja se obrađuje.

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

Budući da sve operacije čitanja prvo upituju predmemoriju stranice, sljedeći put kada se pozove legitimni uslužni program, Sustav ć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 predmemoriju stranica temeljnog hosta, ova ranjivost služi kao izravni ulaz za izbjegavanje virtualiziranih okruženja poput Kubernetes klastera i ugrožavanje primarnog čvora.

Zakrpe za hitne slučajeve i rješenja za ublažavanje

S obzirom na ozbiljnost ove presude, Timovi za održavanje su implementirali hitna ažuriranja, gdje leži konačno rješenje Vratite optimizaciju na mjestu unutar datoteke algif_aead.c, strogo odvajajući izvorne i odredišne ​​popise memorije kako bi se spriječilo da predmemorirane 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 u grane dugoročne podrške. Administratorima koji ne mogu odmah ponovno pokrenuti ili ažurirati svoje poslužitelje preporučuje se onemogućavanje kernel modula algif_aead ako je kompiliran izvana ili ozbiljno ograničavanje stvaranja AF_ALG utičnica pomoću 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 saznati više, detalje možete pronaći na sljedećoj poveznici.


Dodaj kao preferirani izvor na Googleu