Pēc CVE-2026-31431 ievainojamības atklāšanas , ko Xint Code pētnieki nodēvējuši par "kopēšanas kļūmi", Linux drošība saskaras ar vēl vienu izaicinājumu. Tālu no teorētiska trūkuma, šī dizaina problēma ļauj neprivileģētam lokālajam lietotājam paredzami un nemanāmi palielināt savas privilēģijas un iegūt pilnīgu superlietotāja piekļuvi.
Pētnieki min, ka šī nepilnība ir veiksmīgi izmantota tādās vadošajās distribūcijās kā Ubuntu, Amazon Linux, RHEL un SUSE, apstiprinot, ka jebkura sistēma, kurā darbojas kodols, kas jaunāks par 4.14 versiju un saglabā atbalstu AF_ALG ligzdām, ir potenciāli neaizsargāta pret šo uzbrukumu.
Darbības uz vietas un lapas kešatmiņas pārpilde
Runājot par ievainojamību, tiek minēts, ka tā radusies 2017. gadā ieviestās kodola kriptogrāfiskās API (AF_ALG) optimizācijas rezultātā. Šīs modifikācijas mērķis bija novērst nevajadzīgu buferizāciju, veicot autentificētas šifrēšanas operācijas (AEAD) tieši tajā pašā atmiņas vietā, kas pazīstamas kā "in-place" operācijas.
Kritiskā problēma rodas, apvienojot šo optimizāciju ar splice() funkciju, kas pārsūta datus starp failu deskriptoriem, pārsūtot tiešas atsauces uz kodola lapas kešatmiņu, nevis fiziski kopējot datus. Pieprasot atšifrēšanu, atmiņas struktūra tika konfigurēta tā, lai mērķa buferis, kam vajadzētu būt pagaidu vietai lietotājam, galu galā būtu tieši saistīts ar kešatmiņas lapām, kurās atrodas sistēmas failu dati.
Autentifikācija un rakstīšana ārpus atmiņas robežām
Galvenais ievainojamības izraisītājs ir anomālā autentifikācijas algoritma darbība. Atšķirībā no citām kriptogrāfiskām rutīnām, kas stingri ievēro mērķa buferu robežas, šis specifiskais algoritms izmanto lietotāja atmiņu kā pagaidu darba vietu (skrāpju paliktni), lai pārkārtotu baitu secības autentifikācijas tagu aprēķināšanas laikā.
Šajā procesā algoritms ieraksta četrus baitus ārpus noteiktās izvades apgabala robežas. Pateicoties optimizācijai uz vietas un splice() izveidotajai atsauces ķēdei, šis šķietami nekaitīgais ieraksts šķērso lietotāja atmiņas robežu un nonāk tieši kodola kešatmiņas lapā, kas saistīta ar apstrādājamo failu.
Šī loģisko trūkumu ķēde dod uzbrucējam iespēju patvaļīgi pārrakstīt četrus baitus noteiktās lapas kešatmiņas pozīcijās jebkuram failam, ko tas var nolasīt. Nosūtot virkni aprēķinātu pieprasījumu, uzbrucējs var ievietot ļaunprātīgu kodu kritiski svarīgu izpildāmo failu atmiņā esošajā versijā ar iestatītu suid bitu, piemēram, lietotāja pārslēdzēja rīkā.
Tā kā visas lasīšanas operācijas vispirms vaicā lapas kešatmiņu, nākamajā reizē, kad tiks izsaukta likumīgā utilīta, sistēma izpildīs ievadīto kodu no atmiņas, piešķirot tūlītējas root privilēģijas, nekad nemainot fizisko failu cietajā diskā. Vēl satraucošāk ir tas, ka, tā kā konteinera izolācija koplieto pamatā esošā resursdatora lapas kešatmiņu, šī ievainojamība kalpo kā tieša vārteja, lai izkļūtu no virtualizētām vidēm, piemēram, Kubernetes klasteriem, un apdraudētu primāro mezglu.
Avārijas ielāpi un mazināšanas risinājumi
Ņemot vērā šīs nepilnības nopietnību, apkopes komandas ir ieviesušas ārkārtas atjauninājumus, kuros galīgais risinājums ir atjaunot optimizāciju uz vietas algif_aead.c failā, stingri atdalot avota un mērķa atmiņas sarakstus, lai novērstu kešatmiņas lapu nonākšanu rakstāmos ceļos.
Šie ielāpi jau ir integrēti kodola 6.18.22, 6.19.12 un 7.0 versijās un tiek pārnesti uz ilgtermiņa atbalsta filiālēm. Administratoriem, kuri nevar nekavējoties restartēt vai atjaunināt savus serverus, ieteicams atspējot kodola moduli algif_aead, ja tas tika kompilēts ārēji, vai arī ievērojami ierobežot AF_ALG ligzdu izveidi, izmantojot tādas drošības politikas kā SELinux — vairogu, kas, piemēram, ir pasargājis pašreizējās Android ierīces no šī apdraudējuma.
Visbeidzot, ja vēlaties uzzināt vairāk, informāciju varat atrast tālāk norādītajā saitē.