Kopijavimo klaida: „Linux“ pažeidžiamumas, suteikiantis root prieigą per puslapio talpyklą

Pagrindiniai klausimai:
  • Užpuolikas atidaro AF_ALG lizdą ir prašo autentifikavimo algoritmo.
  • Užpuolikas naudoja splice() funkciją, kad į lizdą įkeltų puslapius iš tikslinio failo talpyklos (pvz., /usr/bin/su). Šie puslapiai tampa išvesties maišos sąrašo dalimi (į juos galima rašyti).
  • Užpuolikas siunčia pranešimą („sendmsg“) su kenkėjiškais susijusiais autentifikuotais duomenimis (AAD), kur 4–7 baituose yra duomenys, kuriuos jis nori įrašyti (pvz., kenkėjiškas kodas).
  • Kai suaktyvinamas iššifravimas, „authencesn“ paima tuos 4 baitus iš AAD ir laikinai įrašo juos į buferio galą. Dėl optimizavimo vietoje šis buferio galas nukreipia tiesiai į failų talpyklos puslapį.
  • Kriptografinė operacija nepavyksta (šifruotas tekstas negalioja), bet 4 baitų įrašymas jau įvyko ir niekada negrįžtamas.
  • Užpuolikas pakartoja procesą, kad įterptų savo kodą. Kai vykdomas /usr/bin/su, branduolys įkelia modifikuotą versiją iš atminties ir vykdo įterptą kodą su root teisėmis.

kopijavimas nepavyko

„Linux“ saugumas susiduria su dar vienu iššūkiu po to, kai buvo atrasta pažeidžiamumas CVE-2026-31431, pramintas „Kopijavimo klaida“ „Xint Code“ tyrėjų. Ši projektavimo problema toli gražu nėra teorinis trūkumas Tai leidžia vietiniam vartotojui be privilegijų padidinti savo teises ir gauti visišką prieigą. kaip supervartotojas nuspėjamu ir tyliu būdu.

Tyrėjai teigia, kad šiuo pažeidžiamumu buvo sėkmingai pasinaudota tokiose pagrindinėse platinamose sistemose kaip „Ubuntu“, „Amazon Linux“, „RHEL“ ir „SUSE“, o tai patvirtina, kad... bet kurioje sistemoje, kurioje veikia branduolio versija, vėlesnė nei 4.14, ir Laikytis AF_ALG lizdų palaikymo įjungimas yra potencialiai pažeidžiamas į šią ataką.

Operacijos vietoje ir puslapio talpyklos perpildymas

Kalbant apie nutartį, paminėta, kad ši Tai datuojama 2017 m. branduolio kriptografinės API (AF_ALG) optimizavimu. Ši modifikacija Norėjau pašalinti nereikalingą buferizavimą. vykdant autentifikuoto šifravimo (AEAD) operacijas tiesiogiai toje pačioje atminties erdvėje, tai vadinama operacijomis „vietoje“.

El Derinant šią optimizaciją su splice() funkcija, iškyla kritinė problema, Šis metodas perduoda duomenis tarp failų deskriptorių, perkeldamas tiesiogines nuorodas į branduolio puslapio talpyklą, o ne fiziškai kopijuodamas duomenis. Pateikiant užklausą dėl iššifravimo, atminties struktūra buvo sukonfigūruota taip, kad paskirties buferis, kuris turėtų būti laikina vartotojo vieta, galiausiai būtų tiesiogiai susietas su talpyklos puslapiais, kuriuose yra sistemos failų duomenys.

Autentifikavimas ir rašymas už atminties ribų

El Galutinis pažeidžiamumo veiksnys slypi anomaliame autentifikavimo algoritmo elgesyje. Skirtingai nuo kitų kriptografinių procedūrų, kurios griežtai laikosi savo paskirties buferių ribų, Šis konkretus algoritmas naudoja vartotojo atminties erdvę kaip laikiną darbo sritį (pranešimų bloknotas), skirtas baitų sekų pertvarkymui autentifikavimo žymos skaičiavimo metu.

Šio proceso metu algoritmas įrašo keturis baitus už nustatytos išvesties srities ribos. Dėl optimizavimo vietoje ir splice() sukurtos nuorodų grandinės,Šis, atrodytų, nekenksmingas rašymas peržengia vartotojo atminties ribas ir patenka tiesiai į branduolio talpyklos puslapį, susietą su apdorojamu failu.

Ši loginių klaidų grandinė Tai suteikia užpuolikui galimybę savavališkai perrašyti keturis baitus tam tikrose talpyklos pozicijose puslapių bet kuriam failui, kurį jis gali nuskaityti. Siųsdamas apskaičiuotų užklausų seriją, užpuolikas gali įterpti kenkėjišką kodą svarbių vykdomųjų failų atmintyje esančioje versijoje su nustatytu suid bitu, pvz., vartotojo perjungimo įrankyje.

Kadangi visos skaitymo operacijos pirmiausia užklausia puslapio talpyklą, kitą kartą iškvietus teisėtą įrankį, Sistema vykdys įterptą kodą iš atminties, suteikdama akimirksniu root teises. niekada nekeičiant fizinio failo standžiajame diske. Dar labiau nerimą kelia tai, kad konteinerio izoliacija dalijasi pagrindinio kompiuterio puslapio talpykla, todėl ši pažeidžiamumas tarnauja kaip tiesioginis vartai, leidžiantys išvengti virtualizuotų aplinkų, tokių kaip „Kubernetes“ klasteriai, ir pažeisti pagrindinį mazgą.

Avariniai pataisymai ir švelninimo sprendimai

Atsižvelgiant į šio nutarimo rimtumą, Priežiūros komandos išleido avarinius atnaujinimus, kur slypi galutinis sprendimas Grąžinkite optimizavimą vietoje algif_aead.c faile, griežtai atskirdami šaltinio ir paskirties atminties sąrašus. kad talpykloje saugomi puslapiai nepatektų į rašymo kelius.

Šie pataisymai jau integruoti į 6.18.22, 6.19.12 ir 7.0 branduolių versijas ir yra perkeliami į ilgalaikės pagalbos šakas. Administratoriams, kurie negali iš karto paleisti iš naujo arba atnaujinti savo serverių, rekomenduojama išjungti „algif_aead“ branduolio modulį, jei jis buvo kompiliuotas išoriškai, arba griežtai apriboti AF_ALG lizdų kūrimą naudojant tokias saugumo politikas kaip „SELinux“ – skydą, kuris, pavyzdžiui, apsaugojo dabartinius „Android“ įrenginius nuo šios grėsmės.

Galiausiai, jei norite sužinoti daugiau, išsamią informaciją galite rasti šioje nuorodoje.


Pridėti kaip pageidaujamą šaltinį „Google“ sistemoje