Hyökkäys Intel SGX:ää vastaan ​​poimimaan arkaluontoisia tietoja tai suorittamaan koodia erillisalueella

Kansan vapautusarmeijan puolustustieteen ja teknologian yliopiston, Singaporen kansallisen yliopiston ja ETH Zurichin tutkijat ovat kehittäneet uuden menetelmän hyökätä eristettyjä erillisalueita Intel SGX (Software Guard eXtensions) vastaan. Hyökkäys on nimeltään SmashEx, ja se johtuu palautusongelmista, kun käsitellään poikkeustilanteita Intel SGX:n ajonaikaisten komponenttien toiminnan aikana. Ehdotettu hyökkäysmenetelmä mahdollistaa, jos sinulla on käyttöjärjestelmä hallinnassa, erillisalueella sijaitsevien luottamuksellisten tietojen määrittämisen tai koodin kopioimisen erillisalueen muistiin ja sen suorittamisen järjestämisen.

Exploit-prototyypit on valmistettu erillisalueille, joiden suoritusaika perustuu Intel SGX SDK (CVE-2021-0186) ja Microsoft Open Enclave (CVE-2021-33767). Ensimmäisessä tapauksessa osoitettiin kyky purkaa web-palvelimella käytetty RSA-avain HTTPS:ää varten, ja toisessa oli mahdollista määrittää enklaaven sisällä toimivan cURL-apuohjelman saama sisältö. Haavoittuvuus on jo korjattu ohjelmallisesti Intel SGX SDK 2.13- ja Open Enclave 0.17.1 -julkaisuissa. Intel SGX SDK:n ja Microsoft Open Enclaven lisäksi haavoittuvuus näkyy myös Google Asylo SDK:ssa, EdgelessRT:ssä, Apache Teaclavessa, Rust SGX SDK:ssa, SGX-LKL:ssä, CoSMIXissä ja Veracruzissa.

Muistetaan, että SGX (Software Guard Extensions) -tekniikka ilmestyi kuudennen sukupolven Intel Core -prosessoreihin (Skylake) ja tarjoaa joukon ohjeita, joiden avulla käyttäjätason sovellukset voivat varata suljetut muistialueet - erillisalueet, joiden sisältöä ei voi lukea ja jopa ytimen ja ring0-, SMM- ja VMM-tiloissa suoritetun koodin muokkaamia. Ohjauksen siirtäminen erillisaluekoodiin on mahdotonta perinteisillä hyppytoiminnoilla ja manipulaatioilla rekistereillä ja pinolla - erityisesti luotuja uusia ohjeita EENTER, EEXIT ja ERESUME käytetään ohjauksen siirtämiseen erillisalueelle, jotka suorittavat auktoriteettitarkistuksia. Tässä tapauksessa erillisalueeseen sijoitettu koodi voi käyttää klassisia kutsumenetelmiä enklaaven sisällä olevien toimintojen saamiseksi ja erityisohjeita ulkoisten toimintojen kutsumiseen. Enclave-muistin salausta käytetään suojaamaan laitteistohyökkäyksiltä, ​​kuten yhteyden muodostamiselta DRAM-moduuliin.

Hyökkäys Intel SGX:ää vastaan ​​poimimaan arkaluontoisia tietoja tai suorittamaan koodia erillisalueella

Ongelmana on, että SGX-tekniikan avulla käyttöjärjestelmä voi keskeyttää erillisalueen tekemällä laitteistopoikkeuksen, eivätkä erillisalueet oikein toteuta primitiiviä tällaisten poikkeusten atomiseen käsittelyyn. Toisin kuin käyttöjärjestelmän ydin ja tavalliset sovellukset, enklaavien sisällä olevalla koodilla ei ole pääsyä primitiivisiin atomitoimintojen järjestämiseen käsiteltäessä asynkronisesti heitettyjä poikkeuksia. Ilman määritettyjä atomiprimitiivejä enklaavi voidaan keskeyttää milloin tahansa ja palauttaa suoritukseen, jopa silloin, kun erillisalue suorittaa kriittisiä osia ja on vaarallisessa tilassa (esimerkiksi kun CPU-rekistereitä ei tallenneta/palauteta).

Hyökkäys Intel SGX:ää vastaan ​​poimimaan arkaluontoisia tietoja tai suorittamaan koodia erillisalueella

Normaalia toimintaa varten SGX-tekniikka sallii erillisalueen suorittamisen keskeyttämisen konfiguroitavilla laitteistopoikkeuksilla. Tämä ominaisuus sallii erillisalueen ajonaikaisten ympäristöjen toteuttaa enklaavin sisäisen poikkeuskäsittelyn tai signaalinkäsittelyn, mutta se voi myös aiheuttaa uudelleentulovirheitä. SmashEx-hyökkäys perustuu SDK:n puutteiden hyödyntämiseen, joiden vuoksi poikkeuskäsittelijän uudelleenkutsumisen tilannetta ei käsitellä oikein. On tärkeää, että haavoittuvuuden hyödyntämiseksi hyökkääjän on kyettävä keskeyttämään erillisalueen suoritus, ts. on ohjattava järjestelmäympäristön toimintaa.

Poikkeuksen tekemisen jälkeen hyökkääjä saa pienen aikaikkunan, jonka aikana suoritussäie voidaan siepata syöttöparametreja manipuloimalla. Erityisesti, jos sinulla on pääsy järjestelmään (ympäristö enklaaven ulkopuolella), voit luoda uuden poikkeuksen välittömästi enklaavin syöttökäskyn (EENTER) suorittamisen jälkeen, joka palauttaa järjestelmän hallinnan siinä vaiheessa, kun pino asetetaan enklaavi ei ole vielä valmis, johon myös CPU-rekisterien tila tallennetaan.

Järjestelmä voi sitten palauttaa ohjauksen takaisin erillisalueelle, mutta koska erillisalueen pinoa ei konfiguroitu keskeytyksen aikaan, enklaavi suoritetaan järjestelmän muistissa olevan pinon kanssa, jota voidaan käyttää paluusuuntautuneen ohjelmoinnin (ROP) käyttämiseen. ) hyödyntämistekniikat. Oriented Programming). ROP-tekniikkaa käytettäessä hyökkääjä ei yritä sijoittaa koodiaan muistiin, vaan toimii jo ladatuissa kirjastoissa olevilla konekäskypaloilla, jotka päättyvät ohjauksen paluukäskyyn (yleensä nämä ovat kirjastotoimintojen päät) . Hyödyntämisen tehtävänä on rakentaa kutsuketju samankaltaisille lohkoille ("gadgeteille") halutun toiminnallisuuden saavuttamiseksi.

Hyökkäys Intel SGX:ää vastaan ​​poimimaan arkaluontoisia tietoja tai suorittamaan koodia erillisalueella
Hyökkäys Intel SGX:ää vastaan ​​poimimaan arkaluontoisia tietoja tai suorittamaan koodia erillisalueella


Lähde: opennet.ru

Lisää kommentti