Sårbarhet i mekanismen for utførelse av spekulativ instruksjon av AMD-prosessorer

Grsecurity-prosjektet har publisert detaljer og en demonstrasjon av angrepsmetoden for en ny sårbarhet (CVE-2021-26341) i AMD-prosessorer knyttet til spekulativ utførelse av instruksjoner etter ubetingede videresendinger. Hvis angrepet lykkes, gjør sårbarheten det mulig å bestemme innholdet i vilkårlige minneområder. For eksempel har forskere utarbeidet en utnyttelse som lar dem bestemme adresseoppsettet og omgå KASLR-beskyttelsesmekanismen (kernel memory randomization) ved å kjøre uprivilegert kode i ePBF-kjernens undersystem. Andre angrepsscenarier kan ikke utelukkes som kan føre til en lekkasje av kjerneminneinnhold.

Sårbarheten lar deg skape forhold der prosessoren, under forebyggende utførelse, spekulativt behandler instruksjonen umiddelbart etter hoppinstruksjonen i minnet (SLS, Straight Line Speculation). Dessuten fungerer slik optimalisering ikke bare for betingede hoppoperatører, men også for instruksjoner som innebærer direkte ubetinget hopp, som JMP, RET og CALL. Ved å følge ubetingede hoppinstruksjoner kan vilkårlige data som ikke er ment for utførelse plasseres. Etter å ha fastslått at en gren ikke involverer kjøring av neste instruksjon, ruller prosessoren ganske enkelt tilbake tilstanden og ignorerer spekulativ kjøring, men sporet av instruksjonsutførelse forblir i den delte hurtigbufferen og er tilgjengelig for analyse ved bruk av side-kanals gjenfinningsteknikker.

Som med utnyttelsen av Spectre-v1-sårbarheten, krever angrepet tilstedeværelsen av visse sekvenser av instruksjoner (gadgets) i kjernen som fører til spekulativ utførelse. Å blokkere en sårbarhet i dette tilfellet kommer ned til å identifisere slike gadgets i koden og legge til ytterligere instruksjoner til dem som blokkerer spekulativ utførelse. Betingelser for spekulativ utførelse kan også opprettes av uprivilegerte programmer som kjører i den virtuelle eBPF-maskinen. For å blokkere muligheten til å konstruere gadgets ved hjelp av eBPF, anbefales det å deaktivere uprivilegert tilgang til eBPF i systemet ("sysctl -w kernel.unprivileged_bpf_disabled=1").

Sårbarheten påvirker prosessorer basert på Zen1- og Zen2-mikroarkitekturen, inkludert første og andre generasjon AMD EPYC- og AMD Ryzen Threadripper-prosessorer, samt AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper PRO- og APU-seriens prosessorer A. For å blokkere spekulativ utførelse av instruksjoner, anbefales det å ringe INT3- eller LFENCE-instruksjoner etter grenoperasjoner (RET, JMP, CALL).

Kilde: opennet.ru

Legg til en kommentar