drošība · 5 min · 16.07.2026

Bad Epoll: parasts lietotājs iegūst root uz Linux kodola 6.4 un jaunākiem — publiskais exploit strādā 99% gadījumu

Vietējs lietotājs bez nekādām īpašām tiesībām var iegūt root Linux datorā ar kodolu 6.4 vai jaunāku. Kļūda saucas Bad Epoll, tās numurs ir CVE-2026-46242, un 3. jūlijā tā tika publiskota kopā ar strādājošu izmantošanas kodu. Uz pārbaudītajām sistēmām tas sasniedz root aptuveni 99% gadījumu.

CVSS vērtējums ir 7,8. Uzbrucējam nav vajadzīga ne parole, ne kāda cita atļauja — pietiek ar parasta konta piekļuvi mašīnai. Tas padara kļūdu bīstamu koplietošanas serveriem, konteineru mezgliem un jebkurai videi, kur uz viena kodola strādā vairāki lietotāji.

Kas notiek kodolā

Bad Epoll ir use-after-free, tas ir, piekļuve jau atbrīvotai atmiņai. Tā slēpjas epoll apakšsistēmā — mehānismā, ar ko Linux seko lielam skaitam failu deskriptoru un paziņo programmai, kad kāds no tiem ir gatavs lasīšanai vai rakstīšanai. Kļūda parādās tīrīšanas ceļā, kad epoll objektu aizver: divas kodola daļas vienlaikus mēģina sakārtot vienu un to pašu iekšējo struktūru. Viena to atbrīvo, kamēr otra tajā vēl raksta. Viens aizvēršanas ceļš notīra faila saiti uz epoll un turpina to lietot, kamēr paralēls faila atbrīvošanas ceļš, redzot jau notīrīto saiti, atbrīvo objektu zem tā. Tieši 2023. gada pārstrāde ienesa laika logu, kurā abi ceļi var pārklāties.

Tā ir sacīkstes situācija jeb race condition. Kad abu ceļu laiks sakrīt, uzbrucējs panāk rakstīšanu pāri jau atbrīvotai atmiņai un no turienes pārņem kontroli. Chung publiskotais kods noplūdina kodola atmiņu, pārķer netiešu funkcijas izsaukumu un ar ROP ķēdi pārraksta procesora instrukciju rādītāju, līdz kods darbojas ar root tiesībām. Uz pārbaudītajām mašīnām šī secība nostrādā gandrīz katrā mēģinājumā.

Cik plaši tas sniedzas

epoll ir viens no visbiežāk izmantotajiem kodola mehānismiem. To izmanto nginx, Apache, Node.js un Python asyncio, tāpat arī lielākā daļa datubāžu un Android notikumu cikls. Katrs, kas grib izmantot šo kļūdu, atrod epoll jau ieslēgtu, tāpēc uzbrukuma virsma ir plaša — sākot ar viena administratora darbstaciju un beidzot ar mākoņa mezglu, kurā vienu kodolu dala desmitiem konteineru.

Konteineriem tas ir svarīgi tāpēc, ka Docker un Kubernetes podi dala saimniekdatora kodolu. Kodola līmeņa root exploit no poda iekšienes var izlauzties līdz pašam saimniekdatoram, ja nav papildu ierobežojumu, piemēram, seccomp profila, kas nogriež vajadzīgos sistēmas izsaukumus. Daudzās noklusējuma konfigurācijās epoll izsaukumi ir atļauti, jo bez tiem nestrādā gandrīz neviens serveris.

Skarti ir kodoli, sākot ar versiju 6.4. Vecākas, uz 6.1 balstītas versijas, piemēram, Pixel 8, kļūdu nesatur. Chung to apstiprināja uz Pixel 10, kas darbojas ar kodolu 6.6. Vairums Linux tiesību kļūdu Android nesasniedz, jo mobilajā pusē ir citas kodola versijas un papildu aizsardzības slāņi. Bad Epoll to slieksni pārkāpj, un tas ir daļa no iemesla, kāpēc kļūdai pievērsa uzmanību.

Abas kļūdas ved atpakaļ pie vienas 2023. gada izmaiņas epoll kodā. Mākslīgā intelekta modelis pamanīja vienu, bet otru palaida garām.

Kā to atrada

Kļūdu atrada Seula Nacionālās universitātes Datoru drošības laboratorijas pētnieks Jaeyoung Chung un uzbūvēja darbojošos exploit Google kernelCTF programmai. kernelCTF ir Google programma, kurā pētnieki iesniedz strādājošus kodola exploit par atlīdzību. Pieņemts iesniegums apliecina, ka kļūda ir izmantojama praksē līdz galam. Tas pats koda gabals jau bija bijis uzmanības centrā: Anthropic modelis Mythos tur agrāk šogad atrada citu kļūdu ar numuru CVE-2026-43074. Abas problēmas izriet no vienas 2023. gadā veiktas izmaiņas epoll kodā. AI noķēra vienu no tām, bet Bad Epoll palaida garām, un to atrada cilvēks.

Chung kļūdu ziņoja privāti, un pareizais labojums kodolā nonāca aptuveni divus mēnešus vēlāk. Ielāps ir augšupējais commit a6dc643c6931. Publiskošana 3. jūlijā notika pēc tam, kad labojums jau bija koda bāzē, tāpēc distribūcijām bija laiks to pārņemt.

Ko darīt tagad

Savu kodola versiju var pārbaudīt ar komandu uname -r. Ja tā ir 6.4 vai jaunāka un dators nav atjaunināts pēc jūlija sākuma, sistēma, visticamāk, ir skarta. Ielāps jau ir izlaists, tāpēc galvenais solis ir atjaunināt kodolu no distribūcijas krātuves un pārstartēt mašīnu. Distribūcijas ar dzīvo ielāpošanu var uzlikt labojumu bez pārstartēšanas, kas noder ilgi strādājošiem serveriem. Android ierīcēm labojums nāk kopā ar ražotāja drošības atjauninājumu; exploit Android versija, pēc Chung teiktā, vēl top.

Kļūda nav CISA aktīvi izmantoto ievainojamību sarakstā, un līdz šim nav pierādījumu par izmantošanu reālos uzbrukumos. Toties izmantošanas kods ir publisks un darbojas gandrīz katrā mēģinājumā. Serveriem, kur vienu kodolu dala vairāki klienti vai konteineri, tā ir tiešā ceļa karte no parasta konta līdz pilnai kontrolei pār mašīnu.

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