Kļūda, kas ļauj jebkuram vietējam lietotājam kļūt par root, Linux kodolā slēpjas kopš 2011. gada maija. Pētnieki no Nebula Security komandas VEGA to nosauca par GhostLock (CVE-2026-43499) un 7. jūlijā publiskoja gan aprakstu, gan strādājošu ekspluatācijas kodu. Uz testa sistēmām tas iegūst root apmēram piecās sekundēs ar 97% ticamību.
Ievainojamība ir kodola futex prioritātes mantošanas kodā — tajā pašā daļā, kas kārto bloķēšanu starp pavedieniem. Skartas kodola versijas no 2.6.39-rc1 līdz tieši pirms 7.1-rc1, tātad gandrīz katrs laidiens pēdējos 15 gados. Vienīgais priekšnoteikums ir tas, ka kodols būvēts ar CONFIG_FUTEX_PI, un tā ir noklusējuma izvēle visos lielākajos izplatījumos. The Hacker News raksta, ka kļūda ceļā pa noklusējumu nonākusi teju katrā Linux būvējumā kopš 2011. gada.
Kur tieši ir kļūda
Problēma parādās, kad futex operācija neizdodas un kodolam jāatritinās atpakaļ. Funkcija remove_waiter() pieņem, ka tā tīra to pavedienu, kurš pašlaik darbojas. Taču FUTEX_CMP_REQUEUE_PI pārkārtošanas ceļā, kad kodols pamana strupceļa cilpu, tam stāvoklis jāatritina cita, guļoša pavediena vārdā. Tīrīšana notiek nepareizajā brīdī un izdzēš nepareizā uzdevuma ierakstu. Uz kodola steka paliek norāde uz jau atbrīvotu atmiņu.
Šo palikušo norādi uzbrucējs pārraksta ar kodola steka apsmidzināšanu un pārņem funkcijas rādītāju. No turienes līdz root koda izpildei ir īss ceļš. VEGA komanda kļūdu atrada caur Google kernelCTF sacensību un par to saņēma 92 337 dolārus.
CVSS 7,8, bet mērogs to nenoformulē
Oficiālais reitings ir 7,8 no 10 — augsts, ne kritisks. Tā ir tāpēc, ka uzbrucējam jau jābūt piekļuvei mašīnai; attālināti caurumu izmantot nevar. Praksē to kompensē divi apstākļi: kļūda ir gandrīz katrā darbojošā Linux sistēmā, un tā pati kļūda izlaužas no konteinera uz saimniekdatoru.
Kods, kas palaists izolētā konteinerā, var pārlēkt uz saimniekdatoru — tāpēc daudznomnieku mākoņos un koplietotos serveros viena kompromitēta darba slodze apdraud pārējās uz tā paša dzelža.
Nebula Security to demonstrēja arī kā daļu no plašākas ķēdes, ko sauc par IonStack: GhostLock apvienojumā ar CVE-2026-10702 deva pilnu kontroli pār Firefox uz Android. Pati par sevi GhostLock joprojām ir vietēja privilēģiju eskalācija, taču ķēdē tā kļūst par pēdējo soli līdz saimniekdatoram.
Ielāps bija gatavs pirms publiskošanas
Laika grafiks izstrādātājiem ir labvēlīgs. Kļūdu ziņoja 18. aprīlī, augšup laboja 20. aprīlī ar iesūtījumu 3bfdc63936dd, un 4. maijā to jau pārnesa uz uzturētajām versijām. Linux 7.1 to satur pēc noklusējuma. Kad 7. jūlijā parādījās publiskais apraksts, lielākajai daļai izplatījumu ielāps jau bija pieejams — securityonline.info norāda, ka apstiprinātu izmantošanu savvaļā vēl nav.
Pilna apiešana bez atjaunināšanas nepastāv. Būvējuma opcijas RANDOMIZE_KSTACK_OFFSET un STATIC_USERMODE_HELPER samazina ekspluatācijas ticamību, bet kļūdu nenovērš. Vienīgais īstais risinājums ir jauns kodols.
Ko darīt tagad
- Atjaunini kodolu uz izplatījuma ielāpoto versiju; pārbaudi, vai laidiens satur
3bfdc63936dd. - Prioritāti dod serveriem, kur pieteikties var vairāki cilvēki, un mašīnām, kas tur konteinerus dažādiem klientiem.
- Ja tūlītēja pārstartēšana nav iespējama, ieslēdz
RANDOMIZE_KSTACK_OFFSETkā pagaidu bremzi.
Publiskais ekspluatācijas kods jau ir pieejams, tāpēc atstarpe starp “labots augšup” un “labots tavā serverī” tagad ir vienīgais, kas atdala uzbrucēju no root tiesībām. Kļūda dzīvoja kodolā 15 gadus; atlikušais logs to izmantot ir dienās un nedēļās.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.