Zraniteľnosti v eBPF, ktoré umožňujú obísť ochranu proti útoku Spectre 4

V jadre Linux boli odhalené dve zraniteľnosti, ktoré umožňujú využitie subsystému eBPF na obídenie ochrany proti útoku Spectre v4 (SSB, Speculative Store Bypass). Pomocou neoprávnenej BPF programu môže útočník vytvoriť podmienky pre spekulatívne vykonávanie určitých operácií a určiť obsah arbitrárnych oblastí pamäte jadra. Sprievodné subsystémy eBPF v jadre získali prístup k prototypu exploitu, ktorý demonštruje možnosť realizácie útokov v praxi. Problémy boli odstránené vo forme záplat (1, 2), ktoré sa zaradia do najbližšej aktualizácie jadra Linuxu. Aktualizácie v distribúciách zatiaľ neboli vytvorené (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Metóda útoku Spectre 4 je založená na obnovení údajov, ktoré sa usadili v procesorovej cache, po zahodení výsledku spekulatívneho vykonávania operácií pri spracovaní striedajúcich sa operácií zápisu a čítania s využitím nepriamej adresácie. Keď operácia čítania nasleduje za operáciou zápisu (napríklad, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), posunutie adresy pre čítanie môže byť už známe vďaka vykonaniu podobných operácií (operácie čítania sa vykonávajú oveľa častejšie a čítanie môže byť vykonané z cache) a procesor môže spekulatívne vykonať čítanie skôr než zápis, bez čakania na výpočet posunutia nepriamej adresácie pre zápis.

Ak sa po výpočte posunutia zistí prekrytie oblastí pamäte pre zápis a čítanie, procesor jednoducho zahodí už spekulatívne získaný výsledok čítania a zopakuje túto operáciu. Táto zvláštnosť umožňuje inštrukcii čítania získať prístup k starému hodnoteniu na určitom adrese, zatiaľ čo operácia uloženia ešte nie je dokončená. Po zahodení neúspešnej spekulatívne operácie v cache zostávajú stopy po jej vykonaní, po čom sa môže použiť jeden z spôsobov určovania obsahu cache na základe analýzy zmeny času prístupu k zakcached a nezakcached údajom.

Prvá zraniteľnosť (CVE-2021-35477) je spôsobená nedostatočnou prácou v mechanizme overovania programov BPF. Na ochranu proti útoku Spectre 4 pridáva overovateľ po potenciálne problematických operáciách zápisu do pamäte dodatočnú inštrukciu, ktorá ukladá nulovú hodnotu na vymazanie stôp predchádzajúcej operácie. Predpokladalo sa, že operácia zápisu nuly sa vykoná veľmi rýchlo a zablokuje špekulatívne vykonávanie, pretože závisí iba od ukazovateľa na rámec zásobníka BPF. V skutočnosti sa však ukázalo, že je možné vytvoriť podmienky, za ktorých sa inštrukcia vedúca k špekulatívnemu vykonávaniu stihne vykonať pred operáciou vymazania.

Druhá zraniteľnosť (CVE-2021-3455) súvisí s tým, že pri odhaľovaní potenciálne nebezpečných operácií zápisu do pamäte overovateľom BPF sa nezohľadňujú neinicializované oblasti zásobníka BPF, pričom prvá operácia zápisu, do ktorej sa nevykonáva ochrana. Takáto vlastnosť umožňuje vykonať špekulatívnu operáciu čítania závislú od neinicializovanej oblasti pamäte pred vykonaním inštrukcie na zápis. Nová pamäť pre zásobník BPF sa prideľuje bez kontroly obsahu už existujúceho v prideľovanej pamäti a v štádiu pred spustením BPF programu existuje spôsob, ako manipulovať s obsahom oblasti pamäte, ktorá sa neskôr pridelí pod zásobník BPF.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster