Retbleed er et nyt angreb på den spekulative udførelsesmekanisme af Intel og AMD CPU'er

En gruppe forskere fra ETH Zürich har identificeret et nyt angreb på mekanismen for spekulativ udførelse af indirekte overgange i CPU'en, som gør det muligt at udtrække information fra kernehukommelsen eller organisere et angreb på værtssystemet fra virtuelle maskiner. Sårbarhederne er kodenavnet Retbleed (CVE-2022-29900, CVE-2022-29901) og er tæt på Spectre-v2-angreb. Forskellen kommer ned til organiseringen af ​​spekulativ eksekvering af vilkårlig kode ved behandling af "retur" (retur) instruktionen, som henter adressen til at hoppe fra stakken, i stedet for et indirekte hop ved hjælp af "jmp" instruktionen, indlæser adressen fra hukommelse eller et CPU-register.

En angriber kan skabe betingelser for ukorrekt overgangsforudsigelse og organisere en målrettet, spekulativ overgang til en kodeblok, som ikke er forudsat af programafviklingslogikken. I sidste ende vil processoren fastslå, at grenforudsigelsen ikke var berettiget og vil rulle operationen tilbage til dens oprindelige tilstand, men de data, der behandles under spekulativ eksekvering, vil ende i cachen og mikroarkitektoniske buffere. Hvis en fejlagtigt udført blok får adgang til hukommelsen, vil dens spekulative udførelse føre til, at data læst fra hukommelsen deponeres i den delte cache.

For at bestemme de data, der er tilbage i cachen efter spekulative operationer, kan en angriber bruge sidekanalteknikker til at bestemme resterende data, såsom at analysere ændringer i adgangstider til cachelagrede og ikke-cachelagrede data. For målrettet at udtrække information fra områder på et andet privilegieniveau (f.eks. fra kernehukommelsen) bruges "gadgets" - sekvenser af kommandoer til stede i kernen, som er egnede til spekulativt at læse data fra hukommelsen afhængigt af eksterne forhold, der kan påvirkes af angriberen.

For at beskytte mod klassiske Spectre-klasseangreb, der bruger betingede og indirekte hop-instruktioner, bruger de fleste operativsystemer "retpoline"-teknikken, som er baseret på at erstatte indirekte hop-operationer med "ret"-instruktionen, hvor processorer bruger en separat stack state-forudsigelsesenhed. ikke bruger en gren-forudsigelsesblok. Da retpoline blev introduceret i 2018, mente man, at Spectre-lignende adressemanipulationer ikke var praktiske til spekulativ forgrening ved hjælp af "ret"-instruktionen.

Forskerne, der udviklede Retbleed-angrebsmetoden, demonstrerede muligheden for at skabe mikroarkitektoniske betingelser for at igangsætte en spekulativ overgang ved hjælp af "ret"-instruktionen og publicerede færdige værktøjer til at identificere sekvenser af instruktioner (gadgets), der er egnede til at udnytte sårbarheden i Linux-kernen, hvor sådanne forhold viser sig.

I løbet af forskningen blev der udarbejdet en fungerende udnyttelse, der tillader, på systemer med Intel CPU'er, at udtrække vilkårlige data fra kernehukommelsen fra en uprivilegeret proces i brugerrummet med en hastighed på 219 bytes pr. sekund og 98% nøjagtighed. På AMD-processorer er udnyttelsens effektivitet meget højere - lækagehastigheden er 3.9 KB pr. sekund. Som et praktisk eksempel viser vi, hvordan man bruger den foreslåede udnyttelse til at bestemme indholdet af filen /etc/shadow. På systemer med Intel-CPU'er blev angrebet for at bestemme root-bruger-adgangskode-hashen udført på 28 minutter, og på systemer med AMD-CPU'er - på 6 minutter.

Angrebet er blevet bekræftet i generationer 6-8 af Intel-processorer, der blev frigivet før Q3 2019 (inklusive Skylake), og AMD-processorer baseret på Zen 1, Zen 1+ og Zen 2 mikroarkitekturer, der blev frigivet før Q2021 3. I nyere processormodeller som AMD ZenXNUMX og Intel Alder Lake samt i ARM-processorer er problemet blokeret af eksisterende beskyttelsesmekanismer. Brug af IBRS-instruktioner (Indirect Branch Restricted Speculation) hjælper for eksempel med at beskytte mod angreb.

Et sæt ændringer er blevet forberedt til Linux-kernen og Xen-hypervisoren, som vil blokere problemet i software på ældre CPU'er. Den foreslåede patch til Linux-kernen ændrer 68 filer, tilføjer 1783 linjer og sletter 387 linjer. Desværre fører beskyttelsen til betydelige overheadomkostninger - i teksterne udført på AMD- og Intel-processorer er ydeevnefaldet estimeret fra 14% til 39%. Det er mere at foretrække at bruge beskyttelse baseret på IBRS-instruktioner, tilgængelig i nye generationer af Intel-CPU'er og understøttet startende med Linux-kernen 4.19.

På Intel-processorer udføres adresseerstatning for et spekulativt indirekte spring takket være en funktion, der vises, når der sker et overløb gennem den nedre grænse (underflow) i Return Stack Buffer. Når sådanne forhold opstår, begynder "ret"-instruktionen at anvende adressevalgslogik svarende til den, der bruges til normale indirekte spring. Der er fundet mere end tusinde steder i Linux-kernen, der skaber betingelser for at starte en sådan tilbagestrømning og er tilgængelige via systemkald.

På AMD-processorer udføres spekulativ udførelse af "ret"-instruktionen uden reference til en stak-specifik buffer (returadressestak), og grenforudsigelsesenheden betragter "ret"-instruktionen ikke som en kontrolretur, men som en indirekte gren. , og bruger derfor dataene til forudsigelse af indirekte overgange. Under disse forhold kan praktisk talt enhver "ret"-operation, der kan nås via et systemkald, udnyttes.

Derudover er et andet problem også blevet identificeret i AMD CPU'er (CVE-2022-23825, Branch Type Confusion) relateret til implementeringen af ​​fiktive filialer - betingelser for forgreningsforudsigelse kan forekomme selv uden de nødvendige forgreningsinstruktioner, hvilket gør det muligt at påvirke forgreningsforudsigelsesbufferen uden instruktionen "ret". Denne funktion komplicerer implementeringen af ​​beskyttelse betydeligt og kræver mere aktiv rensning af grenforudsigelsesbufferen. Tilføjelse af fuld beskyttelse til kernen forventes at øge overhead med 209%.

Kilde: opennet.ru

Tilføj en kommentar