Kopiointi epäonnistui: Linux-haavoittuvuus, joka myöntää pääkäyttäjän oikeudet sivun välimuistin kautta

Avainkohdat:
  • Hyökkääjä avaa AF_ALG-socketin ja pyytää todennusalgoritmia.
  • Hyökkääjä käyttää splice()-funktiota syöttääkseen sokettiin sivuja kohdetiedoston välimuistista (esim. /usr/bin/su). Näistä sivuista tulee sitten osa tulostettavaa hajautuslistaa (kirjoitettavissa).
  • Hyökkääjä lähettää viestin (sendmsg), jossa on haitallisesti suunniteltua Associated Authenticated Data (AAD) -tiedostoa, jossa tavut 4–7 sisältävät tiedot, joihin hyökkääjä haluaa kirjoittaa (esim. haitallista koodia).
  • Kun salauksen purku käynnistyy, authencesn ottaa nuo neljä tavua AAD:stä ja kirjoittaa ne väliaikaisesti puskurin loppuun. Paikallaan tapahtuvan optimoinnin ansiosta puskurin tämä pää osoittaa suoraan tiedostovälimuistisivulle.
  • Salausoperaatio epäonnistuu (salausteksti on virheellinen), mutta 4-tavuinen kirjoitus on jo tapahtunut eikä sitä koskaan peruuteta.
  • Hyökkääjä toistaa prosessin lisätäkseen koodiaan. Kun /usr/bin/su suoritetaan, ydin lataa muokatun version muistista ja suorittaa injektoidun koodin pääkäyttäjän oikeuksilla.

kopiointi epäonnistui

Linuxin tietoturva kohtaa uuden haasteen löydettyään... haavoittuvuus CVE-2026-31431, nimeltään "Copy Fail" Xint Coden tutkijoiden toimesta. Tämä suunnitteluongelma ei ole teoreettinen virhe, vaan Se antaa paikalliselle käyttäjälle, jolla ei ole käyttöoikeuksia, mahdollisuuden laajentaa käyttöoikeuksiaan ja saada täydet käyttöoikeudet. superkäyttäjänä ennustettavalla ja hiljaisella tavalla.

Tutkijat mainitsevat, että tätä haavoittuvuutta on onnistuneesti hyödynnetty johtavissa jakeluissa, kuten Ubuntu, Amazon Linux, RHEL ja SUSE, mikä vahvistaa, että mikä tahansa järjestelmä, jossa on uudempi kernel-versio kuin 4.14 ja jatka AF_ALG-sockettien tuen käyttöönotto on mahdollisesti haavoittuvainen tähän hyökkäykseen.

Paikallaan tapahtuvat toiminnot ja sivun välimuistin ylivuoto

Päätöksen osalta mainitaan, että tämä Se juontaa juurensa vuonna 2017 ytimen kryptografisessa API:ssa (AF_ALG) esiteltyyn optimointiin. Tämä modifikaatio Halusin poistaa tarpeettoman puskuroinnin. suorittamalla todennetun salauksen (AEAD) toimintoja suoraan samassa muistitilassa, mikä tunnetaan "paikan päällä" tapahtuvina operaatioina.

El Kriittinen ongelma syntyy yhdistettäessä tätä optimointia splice()-funktioon, Tämä menetelmä siirtää tietoja tiedostodeskriptorien välillä siirtämällä suoria viittauksia ytimen sivuvälimuistiin sen sijaan, että tiedot fyysisesti kopioitaisiin. Salauksen purkua pyydettäessä muistirakenne konfiguroitiin siten, että kohdepuskuri, jonka piti olla käyttäjän väliaikainen tila, linkitettiin suoraan järjestelmätiedostotiedot sisältäviin välimuistisivuihin.

Todennus ja kirjoittaminen muistin rajojen ulkopuolelle

El Haavoittuvuuden viimeinen laukaiseva tekijä on authencesn-algoritmin poikkeava toiminta. Toisin kuin muut kryptografiset rutiinit, jotka kunnioittavat tarkasti kohdepuskuriensa rajoja, Tämä tietty algoritmi käyttää käyttäjän muistitilaa väliaikaisena työtilana (työmuistiinpano) tavusekvenssien uudelleenjärjestämiseksi todennustunnisteen laskennan aikana.

Tässä prosessissa algoritmi kirjoittaa neljä tavua tulostusalueelle asetetun rajan yli. Paikallaan optimoinnin ja splice()-funktion luoman referenssiketjun ansiostaTämä näennäisesti harmiton kirjoitus ylittää käyttäjän muistin rajat ja päätyy suoraan käsiteltävään tiedostoon liittyvälle ytimen välimuistisivulle.

Tämä loogisten epäonnistumisten ketju Se antaa hyökkääjälle mahdollisuuden mielivaltaisesti korvata neljä tavua tietyissä välimuistipaikoissa sivuja mille tahansa tiedostolle, jota se voi lukea. Lähettämällä sarjan laskettuja pyyntöjä, hyökkääjä voi syöttää haitallista koodia kriittisten suoritettavien tiedostojen muistissa olevissa versioissa, joissa on suid-bitti, kuten käyttäjänvaihtotyökalussa.

Koska kaikki lukutoiminnot kyselevät ensin sivun välimuistista, seuraavalla kerralla, kun laillista apuohjelmaa kutsutaan, Järjestelmä suorittaa injektoidun koodin muistista, jolloin pääkäyttäjän oikeudet ovat välittömästi saatavilla. ilman, että kiintolevyn fyysistä tiedostoa koskaan muutetaan. Vielä hälyttävämpää on, että koska säilön eristäminen jakaa alla olevan isännän sivuvälimuistin, tämä haavoittuvuus toimii suorana porttina virtualisoiduista ympäristöistä, kuten Kubernetes-klustereista, poistumiseen ja ensisijaisen solmun vaarantamiseen.

Hätäkorjaukset ja lieventämisratkaisut

Ottaen huomioon tämän päätöksen vakavuuden, Ylläpitotiimit ovat ottaneet käyttöön hätäpäivityksiä, missä lopullinen ratkaisu piilee Palauta algif_aead.c-tiedoston paikallinen optimointi erottamalla lähde- ja kohdemuistiluettelot tarkasti toisistaan. estääkseen välimuistissa olevien sivujen päätymisen kirjoitettaviin polkuihin.

Nämä korjaukset on jo integroitu ytimiin 6.18.22, 6.19.12 ja 7.0, ja ne siirretään takaisin pitkäaikaisen tuen haaroihin. Järjestelmänvalvojille, jotka eivät voi välittömästi käynnistää palvelimiaan uudelleen tai päivittää niitä, on suositeltavaa poistaa algif_aead-ytimen moduuli käytöstä, jos se on käännetty ulkoisesti, tai rajoittaa AF_ALG-sockettien luomista merkittävästi käyttämällä suojauskäytäntöjä, kuten SELinuxia, joka on esimerkiksi pitänyt nykyiset Android-laitteet turvassa tältä uhalta.

Lopuksi, jos olet kiinnostunut oppimaan lisää, löydät tiedot seuraavasta linkistä.


Lisää ensisijaiseksi lähteeksi Googlessa