Kwesbaarheid in die spekulatiewe uitvoeringsmeganisme van AMD-verwerkers

Die Grsecurity-projek het besonderhede gepubliseer en 'n demonstrasie van die aanvalmetode vir 'n nuwe kwesbaarheid (CVE-2021-26341) in AMD-verwerkers wat verband hou met spekulatiewe uitvoering van instruksies na onvoorwaardelike voorwaartse bedrywighede. As die aanval suksesvol is, kan die kwesbaarheid die inhoud van arbitrêre geheuegebiede bepaal. Navorsers het byvoorbeeld 'n uitbuiting voorberei wat hulle in staat stel om die adresuitleg te bepaal en die KASLR-beskermingsmeganisme (kerngeheue-randomisering) te omseil deur onbevoorregte kode in die ePBF-kernsubstelsel uit te voer. Ander aanvalscenario's kan nie uitgesluit word wat kan lei tot 'n lek van kerngeheue-inhoud nie.

Die kwesbaarheid laat jou toe om toestande te skep waaronder die verwerker, tydens voorkomende uitvoering, die instruksie spekulatief verwerk onmiddellik na die spring-instruksie in die geheue (SLS, Straight Line Speculation). Boonop werk sulke optimalisering nie net vir voorwaardelike sprongoperateurs nie, maar ook vir instruksies wat direkte onvoorwaardelike sprong impliseer, soos JMP, RET en CALL. Na aanleiding van onvoorwaardelike spring-instruksies, kan arbitrêre data geplaas word wat nie vir uitvoering bedoel is nie. Nadat vasgestel is dat 'n tak nie uitvoering van die volgende instruksie behels nie, rol die verwerker eenvoudig die toestand terug en ignoreer spekulatiewe uitvoering, maar die spoor van instruksie-uitvoering bly in die gedeelde kas en is beskikbaar vir analise deur gebruik te maak van sykanaal-herwinningstegnieke.

Soos met die uitbuiting van die Spectre-v1-kwesbaarheid, vereis die aanval die teenwoordigheid van sekere reekse instruksies (toerusting) in die kern wat tot spekulatiewe uitvoering lei. Om 'n kwesbaarheid in hierdie geval te blokkeer, kom daarop neer om sulke toestelle in die kode te identifiseer en bykomende instruksies daarby te voeg wat spekulatiewe uitvoering blokkeer. Voorwaardes vir spekulatiewe uitvoering kan ook geskep word deur onbevoorregte programme wat in die eBPF virtuele masjien loop. Om die vermoë te blokkeer om toestelle met eBPF te konstrueer, word dit aanbeveel om onbevoorregte toegang tot eBPF in die stelsel te deaktiveer ("sysctl -w kernel.unprivileged_bpf_disabled=1").

Die kwesbaarheid raak verwerkers gebaseer op die Zen1 en Zen2 mikroargitektuur, insluitend die eerste en tweede generasies AMD EPYC en AMD Ryzen Threadripper verwerkers, sowel as AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper PRO- en APU-reeksverwerkers A. Om spekulatiewe uitvoering van instruksies te blokkeer, word dit aanbeveel om INT3- of LFENCE-instruksies te roep na takbedrywighede (RET, JMP, CALL).

Bron: opennet.ru

Voeg 'n opmerking