Det kom nyheden for nyligEn gruppe forskere fra ETH Zürich har identificeret et nyt angreb til den spekulative udførelsesmekanisme for indirekte hop 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 fik kodenavnet Retbleed (allerede katalogiseret under CVE-2022-29900, CVE-2022-29901) og ligner i sin natur Spectre-v2-angreb.
Forskellen bunder i at organisere den spekulative eksekvering af vilkårlig kode ved at behandle "retur" (retur) instruktionen, som henter adressen til at hoppe fra stakken, i stedet for indirekte at hoppe ved hjælp af "jmp" instruktionen, indlæse adressen fra hukommelsen eller et CPU-register.
Om det nye angreb nævnes, at en angriber kan skabe betingelser for en gaffelforudsigelse forkert og organiser et bevidst spekulativt spring til en kodeblok, som ikke er tilsigtet af programmets eksekveringslogik.
I sidste ende, processoren vil afgøre, at grenforudsigelsen ikke var berettiget og vil rulle handlingen tilbage til sin oprindelige tilstand, men de behandlede data Under spekulativ udførelse de vil sidde i cachen og mikroarkitektoniske buffere. Hvis en fejlagtigt udført blok udfører en hukommelsesadgang, vil dens spekulative udførelse føre til installation i den generelle cache og læsning af data fra hukommelsen.
For at bestemme de data, der er tilbage i cachen efter den spekulative udførelse af operationer, kan angriberen bruge metoder til at bestemme de resterende data gennem tredjepartskanaler, for eksempel ved at analysere ændringer i cachelagret dataadgangstid og ikke cache.
Til bevidst udtrækning af information fra områder på et andet privilegieniveau (f.eks. fra kernehukommelsen) bruges "enheder": scripts til stede i kernen, egnet til spekulativ læsning af data fra hukommelsen, afhængigt af eksterne forhold kan det påvirkes af en angriber.
For at beskytte mod klassiske Spectre-klasseangreb, som bruger indirekte og betingede greninstruktioner, bruger de fleste operativsystemer "retpoline"-teknikken, som er baseret på at erstatte indirekte grenoperationer med "ret"-instruktionen, for hvilken der kræves en separat stack-tilstandsforudsigelse. enhed bruges i processorer, bruger ikke en grenforudsigelsesblok.
Ved introduktionen af retpoline i 2018 blev Spectre-lignende adressemanipulation anset for at være upraktisk til spekulativ forgrening med "ret"-instruktionen.
Forskerne, der udviklede angrebsmetoden Rebleed demonstrerede muligheden for at skabe mikroarkitektoniske forhold at indlede en spekulativ overgang ved at bruge "ret"-instruktionen og frigivet et færdigt værktøjssæt til at identificere passende instruktionssekvenser (gadgets) for at udnytte sårbarheden i Linux-kernen, hvor sådanne forhold optræder.
I løbet af studiet, en arbejdsbedrift blev forberedt som tillader, på systemer med Intel CPU'er, fra en uprivilegeret proces i brugerrummet at udtrække vilkårlige data fra kernehukommelsen med en hastighed på 219 bytes pr. sekund og med 98% nøjagtighed.
En processorer AMD, effektiviteten af udnyttelsen er meget højere, da lækagehastigheden er 3,9 KB per sekund. Som et praktisk eksempel er det vist, hvordan man bruger den foreslåede udnyttelse til at bestemme indholdet af filen /etc/shadow. På systemer med Intel-CPU'er blev et angreb for at bestemme root-adgangskode-hashen udført på 28 minutter og på systemer med AMD-CPU'er på 6 minutter.
Angrebet blev bekræftet for 6-8 generationer af Intel-processorer der blev udgivet før Q2019 1 (inklusive Skylake), og AMD-processorer baseret på Zen 1, Zen 2+ og Zen 2021 mikroarkitekturer, der blev udgivet før QXNUMX XNUMX. På nyere processormodeller, såsom AMD Zen3 og Intel Alder Lake, samt ARM-processorer, problemet er blokeret af eksisterende beskyttelsesmekanismer. For eksempel hjælper brugen af IBRS (Indirect Branch Restricted Speculation) instruktioner med at beskytte mod et angreb.
Forberedte et sæt ændringer til Linux-kernen og Xen-hypervisoren, som blokerer problemet programmæssigt på ældre CPU'er. Den foreslåede Linux-kerne-patch ændrer 68 filer, tilføjer 1783 linjer og fjerner 387 linjer.
Desværre medfører beskyttelse betydelige overheadomkostninger: I tekster lavet på AMD- og Intel-processorer anslås ydeevneforringelsen at være mellem 14 % og 39 %. Det er mere at foretrække at bruge beskyttelse baseret på IBRS instruktioner, tilgængelig i nyere generationer af Intel CPU'er og understøttet siden Linux kerne 4.19.
Endelig, hvis du er interesseret i at vide mere om det, kan du konsultere detaljer i følgende link.