drošība · 5 min · 22.07.2026

Bad Epoll caurums dod root uz Linux un Android — publisks PoC strādā 99 % gadījumu

6. jūlijā internetā parādījās uzticams izmantošanas paraugs Linux kodola caurumam, kas parastam lietotājam bez īpašām tiesībām dod root. Kļūda CVE-2026-46242 jeb “Bad Epoll” sēž epoll paziņojumu mehānismā, un tā aizsniedzama pat no Chrome renderētāja smilškastes un Android lietotņu smilškastes. Autors Jaeyoung Chung no Seoul National University drošības laboratorijas ziņo, ka viņa izmantošanas paraugs uz pārbaudītajām sistēmām sasniedz root aptuveni 99 % gadījumu.

CVSS vērtējums ir 7,8. Skarti ir kodoli 6.4 un jaunāki — serveri, darbvirsmas un Android ierīces. Google Pixel 10 ar 6.6 kodolu ir apstiprināts kā ievainojams, bet Pixel 8 ar 6.1 bāzes kodolu nav skarts. Apiešanas nav: epoll nevar izslēgt, tāpēc vienīgais risinājums ir ielāps.

Kas notiek epoll iekšienē

Epoll ir Linux mehānisms, ar ko programma vienlaikus seko līdzi daudziem failu deskriptoriem un uzzina, kurš no tiem ir gatavs lasīšanai vai rakstīšanai. To izmanto teju katrs tīkla serveris un notikumu cikls — nginx, Node.js, PostgreSQL un daudz kas cits. Tieši tāpēc kļūda šajā koda apgabalā skar tik plašu sistēmu loku: epoll izsaukumu var veikt jebkura parasta programma bez īpašām tiesībām.

Bad Epoll ir sacīkstes stāvokļa lietošana pēc atbrīvošanas funkcijā ep_remove(). Funkcija notīra file->f_ep zem file->f_lock slēdzenes, bet turpina lietot to pašu file objektu kritiskajā sekcijā — hlist_del_rcu() un spin_unlock() laikā. Paralēls __fput() izsaukums šajā brīdī ierauga īslaicīgu NULL vērtību, izlaiž eventpoll_release_file() un uzreiz pāriet uz f_op->release. Rezultātā tiek atbrīvots struct eventpoll, kuru kāds vēl lieto, un kodola atmiņa sabojājas.

Laika logs, kurā abi kodola pavedieni sadalās, ir aptuveni sešas mašīnkomandas garš. Tik šaurs logs padara kļūdu grūti izmantojamu, bet ne neiespējami. Chung paraugs strādā ar četriem epoll objektiem, sagrupētiem divos pāros: viena pāra aizvēršana iedarbina sacīksti, bet otrs kļūst par upura objektu. Ar cross-cache paņēmienu 8 baitu ierakstu pārvērš par lietošanu pēc atbrīvošanas uz file objektu, no turienes noplūdina kodola atmiņu un pārtver netiešu izsaukumu, lai iegūtu kontroli pār procesora instrukciju rādītāju.

Kāpēc tas ir bīstami

Lokālas tiesību paaugstināšanas kļūdas parasti prasa, lai uzbrucējs jau būtu ieguvis kaut kādu piekļuvi mašīnai. Bad Epoll pazemina šo slieksni. Kļūda ir sasniedzama no Chrome renderētāja smilškastes, kas apiet lielāko daļu kodola kļūdu aizsardzības mehānismu. Praksē ceļš no ļaunprātīgas tīmekļa lapas līdz root uz Linux mašīnas kļūst īsāks.

Uz koplietošanas serveriem un konteineru platformām risks ir vēl tiešāks. Ja vairāki klienti dala vienu kodolu, viens ļaunprātīgs lietotājs ar root piekļuvi var izlauzties no sava konteinera un piekļūt kaimiņu datiem. Konteineri paši par sevi nedod jaunu kodolu, tāpēc epoll kļūda darbojas cauri konteinera robežai tāpat kā uz parastas mašīnas.

Chung izmantošanas paraugs paplašina šauro laika logu un atkārto mēģinājumu bez avārijas, sasniedzot root aptuveni 99 % gadījumu uz pārbaudītajām sistēmām.

Skartajās un neskartajās sistēmās robeža iet pa kodola versiju:

  • Ievainojami: Linux serveri un darbvirsmas ar kodolu 6.4 vai jaunāku, kā arī Android ierīces ar jaunākiem kodoliem (apstiprināts Pixel 10 ar 6.6).
  • Nav skarti: sistēmas ar vecākiem kodoliem, piemēram, Pixel 8 uz 6.1 bāzes kodola, un tās, kur ielāps jau uzlikts.

Kā radās ielāps

Chung ievainojamību ziņoja privāti. Pirmais uzturētāja labojums izrādījās nepilnīgs, un pareizais labojums pienāca aptuveni divus mēnešus vēlāk. Augšupplūsmas labojums ir commit a6dc643c6931; distribūcijām nāk atsevišķi backporti. Publiskā atklāšana notika 3. jūlijā, izmantošanas paraugs — 6. jūlijā.

Kļūda tika iesniegta Google kernelCTF programmā, kas par derīgu Linux kodola izmantošanu maksā vairāk nekā 71 000 dolāru. Šobrīd nav pierādījumu par izmantošanu reālos uzbrukumos, un CVE nav iekļauts CISA zināmo izmantoto ievainojamību sarakstā. Tas nemazina steidzamību: publisks un uzticams paraugs parasti maina situāciju dažu nedēļu laikā.

AI atrada pirmo kļūdu, bet ne šo

Ar epoll saistīto sacīkstes kļūdu CVE-2026-43074 atrada Anthropic AI modelis Mythos. Bad Epoll — grūtāk pamanāmo otro kļūdu tajā pašā apgabalā — modelis palaida garām. Chung skaidro, ka tieši mazais laika logs un tas, ka KASAN to neuztver darbības laikā, apgrūtināja atklāšanu automatizētiem rīkiem. Cilvēks, kurš zināja, kur meklēt, atrada to, ko statiskā un dinamiskā analīze nepamanīja.

Administratoriem darbība ir vienkārša: uzlikt distribūcijas kodola atjauninājumu ar backportu vai pāriet uz kodolu, kurā ir commit a6dc643c6931. Uz Android jāgaida ražotāja labojums, jo lietotājs pats kodolu nomainīt nevar.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no drošībasaistītie