Et nytt angrep kalt Inception kan brukes til å lekke sensitive data fra enhver AMD CPU.
Viktige takeaways
- Forskere fra ETH Zürich har utviklet et nytt forbigående henrettelsesangrep kalt Training in Transient Execution (TTE), som utnytter spekulativ kjøring for å lekke kjerneminne og få tilgang til sensitive filer som /etc/shadow på Linux maskiner.
- Inception, ende-til-ende-utnyttelsen bygget ved hjelp av TTE, kan lekke opptil 39 byte per sekund på AMD Zen 4 prosessorer og vellykket hente hashed passord for brukerkontoer lagret i /etc/shadow innen 40 minutter.
- Inception skiller seg fra andre forbigående henrettelsesangrep ved å sette inn nye spådommer i grenprediktoren under forbigående vindu, og skaper kraftigere forbigående vinduer som kan brukes til å flyte over returstabelbufferen og få kontroll over CPU-en. Å dempe virkningen av dette angrepet er tilsynelatende utfordrende.
I kjølvannet av Zenbleed, har forskere fra ETH Zürich designet en ny klasse med forbigående henrettelsesangrep, kalt Training in Transient Execution (TTE). Ved å bruke TTE bygde forskerne en ende-til-ende utnyttelse kalt Inception. Den kan lekke kjerneminne med en hastighet på opptil 39 byte per sekund på AMD Zen 4, og forskerne var i stand til å lekke /etc/shadow på en
Linux maskinen på 40 minutter. Denne filen inneholder hashed passord for brukerkontoer og er beskyttet av systemet, kun tilgjengelig for rotbrukeren. Med andre ord, denne utnyttelsen er virkelig dårlig.Hvordan fungerer Inception?
Som med Zenbleed, Oppstart (CVE-2023-20569, via Blødende datamaskin) misbruker spekulativ henrettelse i hvordan det fungerer. Grenprediksjon og spekulativ utførelse refererer stort sett til når datamaskinen din utfører operasjoner som ennå ikke er nødvendige, men som sannsynligvis vil være nødvendig i påfølgende sykluser. Det gjøres ofte i tider når systemet ditt har ledige ressurser, ettersom det øker hastigheten på den totale behandlingen når instruksjoner eller data ellers ennå ikke ville være klare for CPU. Hvis arbeidet som er utført ikke er nødvendig, blir det vanligvis forkastet og prosessoren kan hoppe tilbake dit den skal for å utføre den neste, riktige, instruksjonen. Når den gjør dette, kalles dette en grenfeilprediksjon.
Det er imidlertid mange problemer når det kommer til spekulativ utførelse, og sårbarheter som Spectre og Zenbleed er et resultat av det. Disse forskerne paret en eldre utnyttelse kalt "Phantom" (som påvirket Zen 1- og Zen 2-arkitekturen) med deres TTE-angrep for å skape Inception.
"Inception" er en referanse til filmen med samme navn, der premisset for filmen er avhengig av å plante en idé i hodet til noen når de drømmer. I dette tilfellet uttaler forskerne at de planter en "idé" i CPU-en mens den på en måte er "drømmer." Dette får den til å utføre feil instruksjoner, noe som gjør at Inception kan kapre kontrollflyten av CPU.
BTB er Branch Target Buffer og RSB er Return Stack Buffer. Hentet fra Inceptions hvitbok:
"I det første treningstrinnet T1, utfører angriperen en treningsgren ved TJ, som kolliderer med BTB-oppføringen til PHANTOMJMP-kilden PJ. Ligger i kjerneadresserommet, er PJ adressen som initierer den rekursive PHANTOMCALL. Offerretur-VR tildeles etter PJ i kontrollflyten. Målet til PHANTOMJMP er satt til PC, hvor den rekursive PHANTOMCALL vil bli utløst. I treningstrinn T2 utfører angriperen et treningsanrop ved TC som kolliderer med PC i BTB, som vil etablere prediksjonen for PHANTOMCALL. Målet for denne treningssamtalen på er satt til PC, og etablerer en rekursiv PHANTOMCALL-prediksjon. Ved kjøring av PC vil CPU-en dermed rekursivt injisere RSB-prediksjoner til avsløring av gadget G, hvis plassering umiddelbart følger PHANTOMCALL på PC. Ettersom PC-en ligger i kjerneplass, vil treningsgrenene TJ og TC utløse sidefeil, som vi gjenoppretter."
Der Inception skiller seg fra de fleste forbigående eksekveringsangrep, er at under det forbigående vinduet, setter den inn nye spådommer i grenprediktoren i stedet. Hver innsetting skaper ytterligere forbigående vinduer som kan være kraftigere enn tidligere. Når det gjelder Phantom (CVE-2022-23825), kan et forbigående vindu opprettes ved hjelp av vilkårlige instruksjoner. Dette betyr at instruksjoner (som en eksklusiv-eller eller XOR) kan brukes som en anropsinstruksjon og skape ytterligere forbigående vinduer. Dette brukes deretter til å overfylle returstabelbufferen.
Hva kan du gjøre?
Det er ikke så mye du kan gjøre for øyeblikket, og selv i AMDs tilfelle er det vanskelig å si hva de faktisk kan gjøre med det heller. For å dempe effekten fullt ut, må AMD tømme merkevareprediktoren mens du bytter mellom kontekster, noe som kan være utrolig kostbart for ytelsen.
AMD har foreslått en annen reduksjon, og en som gjør det slik at AMD har valgt for alle indirekte grener å tvinge feil forutsi til en godartet plassering. Inntil patcher ruller ut, vil imidlertid maskinvaren din være mottakelig.
EN papir om Inception skal presenteres kl USENIX Security 2023 og a papir om Phantom spekulasjoner kommer til å bli presentert kl MICRO 2023. Du kan lese disse papirene for å lære mer om utnyttelsen.