Kwesbaarhede in eBPF wat Spectre 4-aanvalbeskerming kan omseil

Twee kwesbaarhede is in die Linux-kern geïdentifiseer wat toelaat dat die eBPF-substelsel gebruik word om beskerming teen die Spectre v4-aanval (SSB, Speculative Store Bypass) te omseil. Deur 'n onbevoorregte BPF-program te gebruik, kan 'n aanvaller toestande skep vir spekulatiewe uitvoering van sekere operasies en die inhoud van arbitrêre areas van kerngeheue bepaal. Die instandhouers van die eBPF-substelsels in die kern het toegang gekry tot 'n prototipe-uitbuiting wat die vermoë demonstreer om aanvalle in die praktyk uit te voer. Die probleme is reggestel in die vorm van pleisters (1, 2), wat in die volgende Linux-kernopdatering ingesluit sal word. Opdaterings in verspreidingsstelle is nog nie geskep nie (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Die Spectre 4-aanvalmetode is gebaseer op die herstel van data wat in die verwerkerkas gestoor is nadat die resultaat van spekulatiewe uitvoering van bewerkings weggegooi is wanneer afwisselende skryf- en leesbewerkings met indirekte adressering verwerk word. Wanneer 'n leesbewerking op 'n skryfbewerking volg (bv. mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), is die afwyking van die leesadres dalk reeds bekend as gevolg van soortgelyke bewerkings wat uitgevoer word (leesbewerkings is baie meer gereeld uitgevoer en lees kan vanaf die kas uitgevoer word) en die verwerker kan spekulatief lees voor skryf uitvoer sonder om te wag dat die skryf se indireksie-afset bereken word.

As, na die berekening van die offset, 'n kruising van geheue-areas vir skryf en lees bespeur word, sal die verwerker eenvoudig die reeds spekulatief verkry leesresultaat weggooi en hierdie bewerking herhaal. Hierdie kenmerk laat 'n leesinstruksie toe om toegang tot 'n ou waarde by een of ander adres te verkry terwyl die winkelbewerking nog nie voltooi is nie. Nadat 'n onsuksesvolle spekulatiewe operasie weggegooi is, bly spore van die uitvoering daarvan in die kas, waarna een van die metodes vir die bepaling van die inhoud van die kas gebruik kan word om dit te herwin gebaseer op 'n ontleding van veranderinge in toegangstyd tot gekas en ongekas data.

Die eerste kwesbaarheid (CVE-2021-35477) word veroorsaak deur 'n fout in die BPF-programverifikasiemeganisme. Om teen 'n Spectre 4-aanval te beskerm, voeg die verifieerder 'n bykomende instruksie na potensieel problematiese bergings by die geheue wat 'n nulwaarde stoor om spore van die vorige bewerking te verplaas. Daar word verwag dat die skryf nul-bewerking baie vinnig sou wees en spekulatiewe uitvoering sou blokkeer omdat dit slegs afhang van 'n wyser na die BPF-stapelraam. Maar in werklikheid was dit moontlik om toestande te skep waaronder 'n opdrag wat tot spekulatiewe uitvoering lei, dit regkry om uitgevoer te word voor die voorkomende winkeloperasie.

Die tweede kwesbaarheid (CVE-2021-3455) is te wyte aan die feit dat wanneer die BPF-verifieerder potensieel gevaarlike geheuestoorbewerkings identifiseer, dit nie ongeinitialiseerde areas van die BPF-stapel in ag neem nie, waarvan die eerste skryfbewerking nie beskerm is nie. Hierdie kenmerk lei tot die moontlikheid om 'n spekulatiewe leesbewerking uit te voer, afhanklik van 'n ongeinitialiseerde geheue-area, voordat die winkelinstruksie uitgevoer word. Nuwe geheue vir die BPF-stapel word toegewys sonder om die inhoud wat reeds in die toegekende geheue is na te gaan, en daar is 'n manier voordat die BPF-program loop om die inhoud van die geheuegebied te manipuleer wat dan vir die BPF-stapel toegewys sal word.

Bron: opennet.ru

Voeg 'n opmerking