Uusi hyökkäys Intel- ja AMD-prosessorien mikroarkkitehtuurirakenteita vastaan

Ryhmä Virginian ja Kalifornian yliopiston tutkijoita esitteli uudentyyppisen hyökkäyksen Intel- ja AMD-prosessorien mikroarkkitehtuurirakenteita vastaan, jotka tunnistettiin dokumentoimattomien prosessoriominaisuuksien käänteissuunnittelussa. Ehdotettu hyökkäysmenetelmä sisältää välimuistin käytön prosessoreissa, jota voidaan käyttää käskyjen spekulatiivisen suorittamisen aikana kertyneen tiedon hakemiseen.

Prosessori alkaa optimointia varten suorittaa joitakin käskyjä spekulatiivisessa tilassa odottamatta aiempien laskelmien valmistumista, ja jos se sitten toteaa, että ennuste ei ollut perusteltu, se palauttaa toiminnon alkuperäiseen tilaan, mutta sen aikana käsitellyt tiedot. spekulatiivinen suoritus tallennetaan välimuistiin, jonka sisältö voidaan määrittää.

On huomattava, että uusi menetelmä ylittää huomattavasti Spectre v1 -hyökkäyksen, tekee hyökkäyksestä vaikeasti havaittavan, eikä sitä estä olemassa olevat suojausmenetelmät sivukanavahyökkäyksiä vastaan, jotka on suunniteltu estämään haavoittuvuuksia, jotka johtuvat käskyjen spekulatiivisesta suorittamisesta (esim. LFENCE-käsky estää vuodot spekulatiivisen suorituksen viimeisissä vaiheissa, mutta ei suojaa vuodolta mikroarkkitehtuurirakenteiden läpi).

Menetelmä vaikuttaa vuodesta 2011 julkaistuihin Intel- ja AMD-prosessorimalleihin, mukaan lukien Intel Skylake- ja AMD Zen -sarjat. Nykyaikaiset prosessorit hajottavat monimutkaiset prosessorin käskyt yksinkertaisemmiksi RISC-tyyppisiksi mikrooperaatioiksi, jotka tallennetaan välimuistiin erilliseen välimuistiin. Tämä välimuisti eroaa pohjimmiltaan korkeamman tason välimuistista, siihen ei ole suoraa pääsyä ja se toimii stream-puskurina, joka mahdollistaa nopean pääsyn tuloksiin, kun CISC-käskyt puretaan RISC-mikrokäskyiksi. Tutkijat ovat kuitenkin löytäneet tavan luoda olosuhteita, jotka syntyvät välimuistin käyttöristiriidoissa, ja antaa mahdollisuuden arvioida mikrooperaatiovälimuistin sisältöä analysoimalla eroja tiettyjen toimien suoritusajoissa.

Uusi hyökkäys Intel- ja AMD-prosessorien mikroarkkitehtuurirakenteita vastaan

Intel-prosessorien mikrooperaatiovälimuisti on segmentoitu CPU-säikeiden suhteen (Hyper-Threading), kun taas AMD Zen -prosessorit käyttävät jaettua välimuistia, joka luo olosuhteet tietovuodolle ei vain yhden suoritussäikeen sisällä, vaan myös SMT:n eri säikeiden välillä. (mahdollinen tietovuoto eri loogisilla CPU-ytimillä toimivan koodin välillä).

Tutkijat ovat ehdottaneet perusmenetelmää mikrooperaatiovälimuistin muutosten havaitsemiseen ja useita hyökkäysskenaarioita, jotka mahdollistavat piilotettujen tiedonsiirtokanavien luomisen ja haavoittuvan koodin käytön luottamuksellisten tietojen vuotamiseen yhdessä prosessissa (esimerkiksi prosessitietojen vuotamiseen suorituksen aikana kolmannen osapuolen koodi JIT-koneissa ja virtuaalikoneissa) sekä ytimen ja prosessien välillä käyttäjätilassa.

Järjestäessään Spectre-hyökkäyksen muunnelman mikrooperaatiovälimuistin avulla tutkijat onnistuivat saavuttamaan 965.59 Kbps:n suorituskyvyn 0.22 %:n virhesuhteella ja 785.56 Kbps:n suorituskyvyn virheenkorjausta käytettäessä, jos vuoto järjestettiin samassa osoitteessa tilaa ja etuoikeuksia. Eri käyttöoikeustasojen (ytimen ja käyttäjätilan välillä) kattavan vuodon ansiosta suorituskyky oli 85.2 kbit/s virheenkorjauksella lisättynä ja 110.96 kbps 4 %:n virhesuhteella. Kun hyökättiin AMD Zen -prosessoreja vastaan, jolloin vuoto erilaisten loogisten prosessoriytimien välillä, suorituskyky oli 250 Kbps 5.59 %:n virhesuhteella ja 168.58 Kbps virheenkorjauksella. Verrattuna klassiseen Spectre v1 -menetelmään uusi hyökkäys oli 2.6 kertaa nopeampi.

On odotettavissa, että suojautuminen mikro-op-välimuistihyökkäykseltä vaatii muutoksia, jotka heikentävät suorituskykyä enemmän kuin jos ottaisit käyttöön Spectre-hyökkäyssuojauksen. Optimaalisena kompromissina ehdotetaan tällaisten hyökkäysten estämistä ei poistamalla välimuistia käytöstä, vaan valvomalla poikkeavuuksia ja tunnistamalla hyökkäyksille tyypillisiä välimuistitiloja.

Kuten Spectre-hyökkäyksissä, vuodon järjestäminen ytimestä tai muista prosesseista vaatii tietyn komentosarjan (gadgetien) suorittamisen uhriprosessien puolella, mikä johtaa käskyjen spekulatiiviseen suorittamiseen. Linux-ytimestä on löydetty noin 100 samanlaista gadgetia, jotka poistetaan, mutta niiden luomiseen löytyy ajoittain kiertotapoja, jotka liittyvät esimerkiksi erityisesti suunniteltujen BPF-ohjelmien ajamiseen ytimessä.

Lähde: opennet.ru

Lisää kommentti