Retbleed on uusi hyökkäys Intel- ja AMD-suorittimien spekulatiivista suoritusmekanismia vastaan

Ryhmä ETH Zurichin tutkijoita on tunnistanut uuden hyökkäyksen epäsuorien siirtymien spekulatiivisen suorittamisen mekanismia vastaan ​​suorittimessa, mikä mahdollistaa tiedon poimia ytimen muistista tai järjestää hyökkäyksen isäntäjärjestelmää vastaan ​​virtuaalikoneita vastaan. Haavoittuvuuksien koodinimi on Retbleed (CVE-2022-29900, CVE-2022-29901), ja ne ovat luonteeltaan lähellä Spectre-v2-hyökkäyksiä. Ero johtuu mielivaltaisen koodin spekulatiivisen suorittamisen organisoinnista käsiteltäessä "ret" (return) -käskyä, joka hakee osoitteen pinosta hyppäämistä varten, sen sijaan, että suoritettaisiin epäsuora hyppy "jmp"-käskyä käyttäen, jolloin osoite ladataan muisti tai CPU-rekisteri.

Hyökkääjä voi luoda olosuhteet virheelliselle siirtymäennusteelle ja järjestää kohdistetun, spekulatiivisen siirtymisen koodilohkoon, jota ohjelman suorituslogiikka ei edellytä. Viime kädessä prosessori määrittää, että haaraennuste ei ollut perusteltu ja palauttaa toiminnan alkuperäiseen tilaan, mutta spekulatiivisen suorituksen aikana käsitelty data päätyy välimuistiin ja mikroarkkitehtuuripuskureihin. Jos virheellisesti suoritettu lohko käyttää muistia, sen spekulatiivinen suoritus johtaa muistista luettujen tietojen tallettamiseen jaettuun välimuistiin.

Hyökkääjä voi määrittää välimuistiin spekulatiivisten toimintojen jälkeen jäävän tiedon määrittämään jäännöstiedot sivukanavatekniikoiden avulla, kuten analysoimalla muutoksia välimuistissa olevien ja välimuistissa olevien tietojen käyttöajoissa. Tiedon poimimiseksi tarkoituksenmukaisesti toisen käyttöoikeustason alueilta (esimerkiksi ytimen muistista) käytetään "gadgeteja" - ytimessä olevia komentosarjoja, jotka soveltuvat tietojen spekulatiiviseen lukemiseen muistista riippuen ulkoisista olosuhteista, joihin voi vaikuttaa hyökkääjä.

Suojatakseen klassisilta Spectre-luokan hyökkäyksiltä, ​​jotka käyttävät ehdollisia ja epäsuoria hyppykäskyjä, useimmat käyttöjärjestelmät käyttävät "retpoline"-tekniikkaa, joka perustuu epäsuorien hyppytoimintojen korvaamiseen "ret"-käskyllä, johon prosessorit käyttävät erillistä pinon tilan ennustamisyksikköä. ei käytä haaran ennustuslohkoa. Kun retpoline esiteltiin vuonna 2018, uskottiin, että Spectre-tyyppiset osoitemanipulaatiot eivät olleet käytännöllisiä spekulatiivisessa haarautumisessa "ret"-käskyn avulla.

Retbleed-hyökkäysmenetelmän kehittäneet tutkijat osoittivat mahdollisuuden luoda mikroarkkitehtonisia olosuhteita spekulatiivisen siirtymän käynnistämiseksi käyttämällä "ret"-käskyä ja julkaisivat valmiita työkaluja ohjesekvenssien (gadgetien) tunnistamiseen, jotka sopivat Linux-ytimen haavoittuvuuden hyödyntämiseen. joissa tällaiset olosuhteet ilmenevät.

Tutkimuksen aikana valmisteltiin toimiva hyödyntäminen, jonka avulla Intel-suorittimilla varustetuissa järjestelmissä voidaan poimia mielivaltaisia ​​tietoja ytimen muistista etuoikeutetusta prosessista käyttäjätilassa nopeudella 219 tavua sekunnissa ja 98 %:n tarkkuudella. AMD-prosessoreissa hyödyntämisen tehokkuus on paljon suurempi – vuotonopeus on 3.9 kt sekunnissa. Käytännön esimerkkinä näytämme, kuinka ehdotettua hyväksikäyttöä käytetään määrittämään /etc/shadow-tiedoston sisältö. Intel-suorittimilla varustetuissa järjestelmissä hyökkäys pääkäyttäjän salasanan hajautuksen määrittämiseksi suoritettiin 28 minuutissa ja AMD-suorittimilla varustetuissa järjestelmissä 6 minuutissa.

Hyökkäys on vahvistettu sukupolville 6–8 Intel-prosessoreista, jotka julkaistiin ennen vuoden 3 kolmatta neljännestä (mukaan lukien Skylake), sekä Zen 2019-, Zen 1+- ja Zen 1 -mikroarkkitehtuureihin perustuvia AMD-prosessoreja, jotka julkaistiin ennen vuoden 2 toista neljännestä. Uudemmissa prosessorimalleissa, kuten AMD Zen2021 ja Intel Alder Lake, sekä ARM-suorittimissa olemassa olevat suojamekanismit estävät ongelman. Esimerkiksi IBRS-ohjeiden (Indirect Branch Restricted Speculation) käyttö auttaa suojaamaan hyökkäyksiltä.

Linux-ytimeen ja Xen-hypervisoriin on tehty joukko muutoksia, jotka estävät ongelman vanhemmissa prosessoreissa olevissa ohjelmistoissa. Ehdotettu korjaustiedosto Linux-ytimelle muuttaa 68 tiedostoa, lisää 1783 riviä ja poistaa 387 riviä. Valitettavasti suojaus johtaa merkittäviin yleiskustannuksiin - AMD- ja Intel-prosessoreilla tehdyissä teksteissä suorituskyvyn heikkenemisen on arvioitu 14 prosentista 39 prosenttiin. On parempi käyttää IBRS-ohjeisiin perustuvaa suojausta, joka on saatavilla uusissa Intel-suorittimissa ja jota tuetaan Linux-ytimestä 4.19 alkaen.

Intel-suorittimissa spekulatiivisen epäsuoran hypyn osoitteen korvaaminen tapahtuu ominaisuuden ansiosta, joka tulee näkyviin, kun ylivuoto tapahtuu palautuspinopuskurin alarajan (alivuodon) kautta. Kun tällaisia ​​olosuhteita esiintyy, "ret"-käsky alkaa soveltaa osoitteenvalintalogiikkaa, joka on samanlainen kuin normaaleissa epäsuorissa hyppyissä. Linux-ytimestä on löydetty yli tuhat paikkaa, jotka luovat edellytykset tällaisen takaisinvirran käynnistämiselle ja joihin pääsee järjestelmäkutsujen kautta.

AMD-prosessoreissa "ret"-käskyn spekulatiivinen suoritus suoritetaan ilman viittausta pinokohtaiseen puskuriin (Return Address Stack) ja haaran ennusteyksikkö ei pidä "ret"-käskyä ohjauspalautena, vaan epäsuorana haarana. , ja sen mukaisesti käyttää dataa epäsuorien siirtymien ennustamiseen. Näissä olosuhteissa käytännöllisesti katsoen mitä tahansa järjestelmäkutsun kautta saavutettavaa "ret"-toimintoa voidaan hyödyntää.

Lisäksi AMD-suorittimissa on havaittu myös toinen ongelma (CVE-2022-23825, Branch Type Confusion), joka liittyy kuvitteellisten haarojen toteuttamiseen - ehtoja haaran ennustamiselle voi esiintyä myös ilman tarvittavia haarakäskyjä, mikä mahdollistaa vaikuttamisen haaran ennustuspuskuriin. ilman ohjetta "ret". Tämä ominaisuus vaikeuttaa merkittävästi suojauksen toteuttamista ja vaatii aktiivisempaa haaran ennustepuskurin puhdistamista. Täyden suojan lisäämisen ytimeen odotetaan lisäävän yleiskustannuksia 209 %.

Lähde: opennet.ru

Lisää kommentti