2026 m. spalio 28 d., trečiadienis
Novatech Technologijų naujienos ir patarimai
Saugumas

UEFI programinėje įrangoje rasta 9,5 balo spraga CVE-2026-97631 gresia daugumai serverių

UEFI programinėje įrangoje rasta 9,5 balo spraga CVE-2026-97631 gresia daugumai serverių
Asociatyvi nuotrauka (kewl / Pixabay)

Visame pasaulyje saugumo specialistai turi spręsti dar vieną nesėkmingai atskleistą kodo vykdymo pažeidžiamumo problemą. Šįkart ji aptikta paleidimo metu veikiančioje programinėje įrangoje (firmware), kurią naudoja dauguma pasaulio serverių gamintojų ir duomenų centrų.

Pažeidžiamumas, įvertintas 9,5 balo iš 10 galimų, slypi TianoCore EDK II – atvirojo kodo bazėje, kurią aparatinės įrangos gamintojai ir debesijos paslaugų teikėjai naudoja UEFI programinei įrangai, veikiančiai kompiuterio paleidimo metu, kurti. Pernai UEFI Forum atstovas EDK2 pavadino „pagrindiniu UEFI specifikacijų sprendimu / įgyvendinimu“. Šį pavyzdinį kodą plačiai naudoja praktiškai visi UEFI tiekėjai (kartais vis dar vadinami IBV, t. y. nepriklausomais BIOS tiekėjais), tarp jų AMI, Insyde ir Phoenix. Kodą su pažeidžiamu komponentu naudojo ir „Project Mu“ – sustiprinta Microsoft EDK2 atšaka.

Paaiškinimas: UEFI yra šiuolaikinė programinė įranga, kuri įjungus kompiuterį ar serverį paleidžia aparatinę įrangą ir perduoda valdymą operacinei sistemai. Dėl to joje esančios spragos itin pavojingos – kenkėjiškas kodas gali veikti anksčiau nei bet kokios apsaugos priemonės.

Pažeidžiamumas, sekamas kaip CVE-2026-97631, yra atminties sugadinimo klaida ICMP komponente. Užpuolikai gali ją išnaudoti kenkėjiškam kodui vykdyti dar prieš tai, kai operacinė sistema ir programinė įranga įjungia apsaugą, pavyzdžiui, Secure Boot. Ji sukuria pasitikėjimo grandinę visam paleidimo metu įkeliamam kodui, įskaitant patikimosios platformos modulį (TPM). Nors galutinės CVE-2026-97631 pagalba pristatomos kenkėjiškos apkrovos („payloads“) nėra pastovios, t. y. veikia tik vieną kartą, jos gali suteikti užpuolikams plačias galimybes įdiegti kitas apkrovas, kurios veiktų kiekvieną kartą ankstyvoje paleidimo stadijoje.

Katė ištrūko iš maišo

Pažeidžiamumą atradę Alexas Matrosovas iš „Anthropic“ ir Danas Holmesas iš „Google“ buvo susitarę, kad informacija bus laikoma paslaptyje iki suderinto atskleidimo, numatyto sausį. Pagrindinių plokščių ir kitos aparatinės įrangos gamintoja AMI praėjusį mėnesį paskelbė šį pull request, kuriame buvo išsamiai aprašytas pažeidžiamumas ir pateiktas kodo pataisymas. Kai įrašas pateko į pažeidžiamumą atradusių šalių akiratį, TianoCore projekto nariai praėjusią savaitę paskelbė viešą perspėjimą.

Esant viešai prieinamam pataisos kodui, pažengusiems programišiams bus nesunku išsiaiškinti, kaip pažeidžiamumas sukeliamas, ir sukurti veikiančius išnaudojimo įrankius. Skubą dar labiau didina tai, kad UEFI kodo pažeidžiamumų taisymas milijonuose galutinių įrenginių, kuriuos pardavė ir naudoja tūkstančiai aparatinės įrangos gamintojų ir debesijos paslaugų teikėjų, yra sudėtingas ir imlus laikui. Žinia apie pažeidžiamumą pasirodė praėjus šešioms dienoms po kito nesėkmingo atskleidimo – jis buvo susijęs su kritiniu kodo vykdymo pažeidžiamumu PHP programavimo kalboje.

„Šis EDK2 tinklo steko ICMP analizatoriaus pažeidžiamumas įdomus tuo, kaip jis veikia pasitikėjimo grandinę ir platesnę ekosistemą, – sakė Metasploit kūrėjas ir saugumo bendrovės „Dragos“ vyriausiasis tyrimų pareigūnas HD Mooreas. – Užpuolikas, norintis pakenkti netoliese esančiam galiniam įrenginiui ar serveriui, galėtų pasinaudoti šia klaida ir perimti programos vykdymo eigą tuo metu, kai paleidimo procesas dar turi prieigą prie jautrių komponentų, pavyzdžiui, įrenginio TPM. Tai galėtų būti panaudota diskų šifravimui apeiti tais atvejais, kai užpuolikas turi trumpalaikę prieigą prie tinklo (o vagystės atveju tai būtų dar lengviau).“

CVE-2026-97631 yra 16 metų senumo buferio perpildymo klaida PXE-Base Code tvarkyklėje (NetworkPkg/UefiPxeBcDxe), kuri leidžia serveriams, duomenų saugyklų įrangai ir kitiems įrenginiams paleisti sistemą naudojant iš vietinio tinklo atsisiųstą kodą. Per šį procesą, vadinamą paleidimu iš išankstinio vykdymo aplinkos (pre-execution environment), tvarkyklė naudoja tinklo klausytoją ICMP klaidoms stebėti. Kadangi tvarkyklė nenustato 504 baitų atminties kopijavimo ribos, todėl perrašomi gretimi duomenys, kenkėjiškas vidinis asmuo arba programišius, gavęs žemo lygio prieigą prie vietinio tinklo, gali išsiųsti klaidos pranešimą, kuris prideda kodą už šios ribos. Tuomet CPU veikiantis IUEFI modulis tampa sugadintas.

Paaiškinimas: PXE – tinklo paleidimo technologija, leidžianti kompiuteriui ar serveriui įkelti operacinę sistemą ne iš vietinio disko, o per tinklą. Buferio perpildymas yra programavimo klaida, kai duomenys įrašomi už jiems skirtos atminties srities ribų.

Oficialiame perspėjime tai aprašoma taip:

During network boot, the PXE Base Code driver (NetworkPkg/UefiPxeBcDxe) keeps a receive request open for ICMP error messages and copies each received message into the fixed 504-byte field Mode.IcmpError of its private context structure. The copy loop’s bounds handling is incorrect in both the IPv4 and IPv6 handlers (PxeBcIcmpErrorDpcHandle and PxeBcIcmp6ErrorDpcHandle): for a message longer than 504 bytes it still copies bytes into the field, and it advances the destination pointer by the cumulative rather than the per-fragment length, so an oversized message writes attacker-controlled bytes past the field. Nothing earlier on the receive path restricts the message length.

Kenkėjiška klaida gali būti pristatyta paprastu unicast siuntimu iš bet kokio tinklo atstumo į tiksliniam įrenginiui priklausantį IP adresą, jei tik ji išsiunčiama PXE paleidimo sekos metu. Užpuolikas gali sukelti paslaugos trikdymą (denial-of-service), priversdamas paleidimo seką užstrigti. Kai užpuolikas žino, kokia yra tikslinės programinės įrangos versija, jis gali pasėti „padirbtą įvykį“ („counterfeit event“), kuris vykdo kenkėjišką kodą CPU, jo UEFI programinės įrangos aplinkoje. Kodas vykdomas ring 0 lygiu – tai aukščiausias procesoriaus privilegijų lygis. Kadangi tokie išnaudojimai apeina atestavimo procesus, skirtus kriptografiškai įrodyti nuotoliniams serveriams, kad aparatinė įranga yra saugi, jie suteikia svarbią galimybę išplėsti ribotas privilegijas.

Dar viena „amžinoji“ spraga

CVE-2026-97631 papildo ilgą anksčiau atrastų pažeidžiamumų UEFI arba su ja glaudžiai veikiančiame kode sąrašą. Pavojingiausias iš jų, LogoFail, kilo dėl logotipų vaizdų, įtrauktų į beveik kiekvieno aparatinės įrangos gamintojo UEFI. Dėl atvaizdavimo klaidų užpuolikai galėjo sugriauti UEFI užtikrinamą pasitikėjimo grandinę ir įdiegti kenkėjiškus komponentus dar prieš įkeliant operacinę sistemą ar paleidžiant Secure Boot. PixieFail buvo panašus į CVE-2026-97631 pažeidžiamumas. Jis taip pat atsirado dėl klaidų EDK2 PXE paleidimo kode. Atradus šį pažeidžiamumą, tyrėjai ėmėsi kelių fuzzing projektų, skirtų kitiems kritiniams šios atvirojo kodo bibliotekos trūkumams aptikti. Atrodo, kad šios pastangos nesugebėjo surasti naujausios spragos.

Kiti neseniai atrasti UEFI trūkumai:

  • PKFail – tiekimo grandinės klaida, atsiradusi dėl negamybinių bandomųjų platformos raktų, kurie buvo vieši daugiau nei dešimtmetį iki jų atradimo ir naudoti šimtuose įrenginių modelių
  • BootHole
  • Bootkit ir
  • BlackLotus

Kaip ir CVE-2026-97631, šių apkrovų išnaudojimas ar naudojimas patrauklus tuo, kad leidžia užpuolikams užkrėsti kompiuterius ankstyvoje paleidimo stadijoje, prieš įsijungiant TPM ir kitoms apsaugoms, todėl galima padaryti maksimalią žalą. Atsižvelgdamas į CVE-2026-97631 paplitimą, Mooreas teigė, kad tikėtina, jog tai bus „amžina“ klaida, išliksianti sistemose, kurioms nebeteikiama palaikymo.

Išnaudojant šį naujausią pažeidžiamumą yra svarbių išlygų ir apribojimų. Kaip minėta, būtina tam tikra vietinio tinklo kontrolė. Tai tikriausiai riboja išnaudojimą vidiniais asmenimis arba užpuolikais, pavyzdžiui, valstybiniais grupuotėmis ar išpirkos reikalaujančių programų operatoriais, kuriems pavyko gauti žemo lygio prieigą tinkle ir kurie ieško būdo išplėsti sistemos teises. Kol kas nėra įrodymų, kad CVE-2026-97631 suteikia pradinį įėjimo į tinklą tašką. Yra ir kitų kliūčių.

„Norint išnaudoti patį pažeidžiamumą, užpuolikas turi atspėti konkrečius tikslinės sistemos adresus, todėl negalima tiesiog pasiųsti vieno išnaudojimo bet kuriam taikiniui ir gauti RCE (nuotolinį kodo vykdymą) įvairiuose įrenginiuose – jį reikia pritaikyti kiekvienam taikinio modeliui, versijai ar konfigūracijai, nes adresai nuo jų keičiasi, – interviu sakė programinės įrangos saugumo bendrovės „Eclypsium“ vyriausiasis tyrėjas Jesse Michaelis. – Kitaip nei kai kuriuos ankstesnius garsius pažeidžiamumus, tokius kaip BootHole, Black Lotus ir Baton Drop, šį pažeidžiamumą galima ištaisyti paprasta kodo pataisa, kuriai reikės įdiegti BIOS/UEFI atnaujinimą, tačiau nereikia spręsti atšaukimų, pk/kek/db/dbx raktų valdymo atnaujinimų ar rūpintis, kad būtų atnaujinta OS ir paruošimo laikmenos, kaip tenka daryti Secure Boot apeitims pačiame paleidimo įkroviklyje.“

CVE-2026-97631 neveikia namų ir mažų biurų naudotojų ar bet kokių kitų naudotojų, kurie savo įrenginius paleidžia tik iš diskų. Jis taikomas tik organizacijoms, kurių įrenginiai paleidžiami iš vietinių tinklų arba, galimai, iš internetu pasiekiamų išteklių. Net ir tuomet tikslinė programinė įranga turi remtis EDK2, o ne kitu pavyzdiniu įgyvendinimu, ir naudoti PXE funkciją (kuri pagal numatytuosius nustatymus yra įjungta).

Elektroniniu laišku „Intel“ pranešė, kad nėra žinoma, jog būtų paveikti kuris nors jos „komercinis produktas, šiuo metu aprėpiamas saugumo palaikymo“. „Intel į savo pavyzdinį kodą neįtraukia paveiktos EDK2 funkcijos, nors ją gali integruoti OEM plokščių tiekėjas ar sistemų gamintojas“, – pridūrė bendrovė. Ji patarė klientams dėl konkrečių nurodymų kreiptis į savo sistemų gamintoją. Vis dėlto viešai prieinamame „Intel“ pavyzdiniame kode yra nuorodų į EDK2. Be to, TianoCore yra pareiškusi, kad kiekvienas „Intel“ tiekiamas UEFI kūrimo rinkinys yra „visiškai patikrintas įgyvendinimas… konkrečiai EDK II šaltinio versijai“. Nuorodų į EDK2 yra ir daugelyje kitų „Intel“ dokumentų.

Tuo tarpu „Arm“ atsakė į klausimų sąrašą taip: „CVE-2026-97631 nėra tiesiogiai taikomas „Arm“ produktų portfeliui.“ Kaip ir „Intel“, bendrovės prieinama programinė įranga taip pat daug ima iš EDK2. TianoCore taip pat yra dokumentavusi „Arm“ priklausomybę nuo EDK2.

Nors gali būti, kad kai kurios platformos EDK2 kodo nenaudoja, visų serverių naudotojams protinga išsiaiškinti, ar CVE-2026-97631 juos veikia.

Klausimai, išsiųsti AMD, Phoenix Technologies, AMI, Microsoft ir Amazon – tikėtina, vienoms didžiausių paveiktų organizacijų – iki šio straipsnio paskelbimo liko be atsakymo. Neturint konkrečių atsakymų apie tokių organizacijų naudojamą EDK2, neįmanoma pasakyti, kokie įrenginiai ir kaip paveikti ir kokių veiksmų, jei apskritai, šioms organizacijoms ar jų naudotojams reikėtų imtis. TianoCore projekto atstovai taip pat neatsakė.

Dalis skaitytojų greičiausiai bus nepatenkinti detalių trūkumu. Kartais – ypač kai kalbama apie nesėkmingus atskleidimus, kurie pažeidžia embargą likus mėnesiams iki numatytos jo pabaigos – pirminėje ataskaitoje neišvengiamai trūksta informacijos, pagal kurią būtų galima imtis veiksmų.

Paveiktieji turėtų kreiptis į savo sistemoms paleisti naudojamos programinės įrangos gamintoją ir paprašyti nurodymų. Be to, jei įmanoma, jie turėtų apsvarstyti bent laikiną tinklo paleidimo galimybių išjungimą. Programinės įrangos konfigūracijose visada, kai tik galima, turėtų būti įjungtos saugumo funkcijos, tokios kaip TPM ir Secure Boot, nors šios apsaugos nuo būtent šios grėsmės neapsaugo. Taip pat verta stebėti žurnalus, ieškant išnaudojimo bandymų požymių.

Technologijų ekspertas