Zlyhanie kopírovania: Zraniteľnosť systému Linux, ktorá poskytuje root prístup prostredníctvom ukladania stránok do vyrovnávacej pamäte

Kľúčové body:
  • Útočník otvorí soket AF_ALG a vyžiada si autentifikačný algoritmus.
  • Útočník použije splice() na naplnenie socketu stránkami z vyrovnávacej pamäte cieľového súboru (napr. /usr/bin/su). Tieto stránky sa potom stanú súčasťou výstupného hash zoznamu (zapisovateľné).
  • Útočník odošle správu (sendmsg) so škodlivým spôsobom navrhnutými pridruženými overenými údajmi (AAD), kde bajty 4-7 obsahujú údaje, ktoré chce zapísať (napr. škodlivý kód).
  • Keď sa spustí dešifrovanie, funkcia authencesn vezme tieto 4 bajty z AAD a dočasne ich zapíše na koniec vyrovnávacej pamäte. Vďaka optimalizácii na mieste tento koniec vyrovnávacej pamäte odkazuje priamo na stránku vyrovnávacej pamäte súborov.
  • Kryptografická operácia zlyhá (šifrovaný text je neplatný), ale zápis 4-bajtového súboru už prebehol a nikdy sa nevráti späť.
  • Útočník opakuje proces, aby vložil svoj kód. Po spustení súboru /usr/bin/su jadro načíta upravenú verziu z pamäte a vykoná vložený kód s oprávneniami root.

kopírovanie zlyhalo

Bezpečnosť Linuxu čelí ďalšej výzve po objavení... zraniteľnosť CVE-2026-31431 s názvom „Zlyhanie kopírovania“ výskumníkmi zo spoločnosti Xint Code. Tento problém s dizajnom zďaleka nie je len teoretickou chybou, ale Umožňuje lokálnemu používateľovi bez privilégií zvýšiť svoje oprávnenia a získať plný prístup. ako superpoužívateľ predvídateľným a tichým spôsobom.

Výskumníci uvádzajú, že táto zraniteľnosť bola úspešne zneužitá v popredných distribúciách, ako sú Ubuntu, Amazon Linux, RHEL a SUSE, čo potvrdzuje... akýkoľvek systém s jadrom novším ako verzia 4.14 a drž krok Povolenie podpory pre sokety AF_ALG je potenciálne zraniteľné k tomuto útoku.

Operácie na mieste a pretečenie vyrovnávacej pamäte stránky

Pokiaľ ide o rozhodnutie, uvádza sa, že toto Pochádza z optimalizácie zavedenej v roku 2017 v rámci kryptografického API jadra (AF_ALG). Táto modifikácia Chcel som eliminovať zbytočné ukladanie do vyrovnávacej pamäte. vykonávanie operácií overeného šifrovania (AEAD) priamo v tom istom pamäťovom priestore, čo je známe ako operácie „na mieste“.

El Pri kombinácii tejto optimalizácie s funkciou splice() vzniká kritický problém, Táto metóda prenáša dáta medzi deskriptormi súborov prenosom priamych odkazov do vyrovnávacej pamäte stránok jadra namiesto fyzického kopírovania dát. Pri požiadavke na dešifrovanie bola štruktúra pamäte nakonfigurovaná tak, aby cieľová vyrovnávacia pamäť, ktorá mala byť dočasným priestorom pre používateľa, bola nakoniec priamo prepojená so stránkami vyrovnávacej pamäte obsahujúcimi dáta systémových súborov.

Autentifikácia a zápis mimo limitov pamäte

El Poslednou príčinou zraniteľnosti je anomálne správanie autentifikačného algoritmu. Na rozdiel od iných kryptografických rutín, ktoré striktne rešpektujú hranice svojich cieľových vyrovnávacích pamätí, Tento špecifický algoritmus využíva pamäť používateľa ako dočasnú pracovnú oblasť. (zápisník) na zmenu usporiadania bajtových sekvencií počas výpočtu autentifikačného tagu.

V tomto procese algoritmus zapíše štyri bajty nad rámec stanoveného limitu pre výstupnú oblasť. Vďaka optimalizácii na mieste a referenčnému reťazcu vytvorenému funkciou splice(),Toto zdanlivo neškodné písmo prekračuje hranice pamäte používateľa a pristane priamo na stránke vyrovnávacej pamäte jadra, ktorá je spojená so spracovávaným súborom.

Tento reťazec logických zlyhaní Umožňuje útočníkovi ľubovoľne prepísať štyri bajty v špecifických pozíciách vyrovnávacej pamäte. stránok pre akýkoľvek súbor, ktorý dokáže prečítať. Odoslaním série vypočítaných požiadaviek, útočník môže vložiť škodlivý kód v pamäťovej verzii kritických spustiteľných súborov s nastaveným bitom SUID, ako napríklad nástroj na prepínanie používateľov.

Keďže všetky operácie čítania najprv dotazujú vyrovnávaciu pamäť stránok, pri ďalšom spustení legitímneho nástroja, Systém vykoná vložený kód z pamäte a okamžite udelí root oprávnenia. bez toho, aby sa fyzický súbor na pevnom disku zmenil. Ešte alarmujúcejšie je, že keďže izolácia kontajnerov zdieľa vyrovnávaciu pamäť stránok podkladového hostiteľa, táto zraniteľnosť slúži ako priama brána k úniku z virtualizovaných prostredí, ako sú klastre Kubernetes, a k ohrozeniu primárneho uzla.

Núdzové záplaty a riešenia na zmiernenie následkov

Vzhľadom na závažnosť tohto rozhodnutia, Tímy údržby nasadili núdzové aktualizácie, kde sa nachádza definitívne riešenie Vráťte optimalizáciu na mieste v súbore algif_aead.c a striktne oddeľte zdrojové a cieľové zoznamy pamäte aby sa zabránilo tomu, aby sa stránky z vyrovnávacej pamäte dostali do zapisovateľných ciest.

Tieto záplaty už boli integrované do jadier 6.18.22, 6.19.12 a 7.0 a sú spätne portované do vetiev dlhodobej podpory. Pre administrátorov, ktorí nemôžu okamžite reštartovať alebo aktualizovať svoje servery, sa odporúča vypnúť modul jadra algif_aead, ak bol skompilovaný externe, alebo výrazne obmedziť vytváranie socketov AF_ALG pomocou bezpečnostných politík, ako je SELinux, čo je ochrana, ktorá napríklad chráni súčasné zariadenia so systémom Android pred touto hrozbou.

Na záver, ak máte záujem dozvedieť sa viac, podrobnosti nájdete na nasledujúcom odkaze.


Pridať ako preferovaný zdroj v Google