TLBleed
TLBleed on laitteiston haavoittuvuus joissakin nykyaikaisissa prosessoreissa, joissa on komentokäännöspuskuri ja jotka tukevat samanaikaista monisäikeistystä. Haavoittuvuuden ansiosta jossakin laitteistosäikeessä toimiva käyttäjäsovellus (paikallinen hyökkääjä, kun erityinen ohjelma käynnistetään) voi luvatta poimia tietoja toisen säikeen suorittamisesta salaisen kanavan avulla . Tietovuotoa voidaan mahdollisesti käyttää toisen säikeen käsittelemien arkaluontoisten tietojen suojaamiseen.
Lyhyt kuvaus
TLBleed on sivukanavahyökkäys, ja siksi sillä on yhtäläisyyksiä muiden mikroprosessorin haavoittuvuuksien, kuten Meltdown ja Spectre , kanssa . Perinteinen lähestymistapa tällaisten haavoittuvuuksien hyödyntämiseen perustuu yksittäisten prosessorin välimuistin solujen käyttöajan mittaamiseen sen määrittämiseksi, mitkä solut on ladattu välimuistiin hyökkäyksen kohteena olevan prosessin toimesta. Tällä tavoin on mahdollista poimia epäsuoraa tietoa uhriprosessin toteutuksesta ja suojatuista tiedoista. TLBleed-hyökkäyksen tapauksessa sivukanava ei ole tavallinen datavälimuisti, vaan assosiatiivinen käännöspuskuri (TLB), erityinen välimuisti, joka tallentaa virtuaalimuistisivujen ja prosessorin fyysisten muistisivujen väliset vastaavuudet ja jota käytetään kääntämisen nopeuttamiseen. virtuaalisista osoitteista. Keskeisen hyökkäysmahdollisuuden tarjoaa se, että Intel-prosessorien simultane multithreading mode (SMT) toteutuksessa assosiatiivinen käännöspuskuri jaetaan ja sitä käyttävät kaikki laitteistosäikeet samanaikaisesti (mikroprosessorissa voi olla samanlainen kolmannen osapuolen kanava muiden yritysten toteutukset, mutta tällaista analyysiä ei ole vielä tehty).
Hyökkäyksen olemus on seuraava. Pääsyaika yksittäisiin TLB-soluihin määrittää, mitä muistisivuja hyökkäysprosessi käyttää. Samaan aikaan edes pienin osoitetarkkuus ( 4096 tavua nykyaikaisissa järjestelmissä) ei riitä saamaan suoraan tietoja hyökkäyksen kohteena olevasta prosessista (esimerkiksi Meltdown-haavoittuvuus käyttää epäsuoraa osoitetta ladatakseen ja sitten tunnistaakseen tietyn välimuistisolun, jonka osoite määrittää osan salaisuudesta ). Analysoimalla muistin käytön luonne (muistisivuille pääsyjärjestys, hakujen väliset aikavälit) koneoppimismenetelmien avulla on kuitenkin mahdollista tunnistaa suoritettavan koodin osa. Jos esimerkiksi salausalgoritmissa loogista "1" prosessoitaessa kutsutaan yksi koodin osio ja loogista "0" käsiteltäessä - toinen, on mahdollista palauttaa salatut tiedot kokonaan.
Historia
Alkuperäisen tutkimuksen julkisti joukko tutkijoita Amsterdamin vapaassa yliopistossa 22. kesäkuuta 2018. Hankkeen johtaja Ben Gras paljasti myöhemmin haavoittuvuuden yksityiskohdat Black Hat -tietoturvakonferenssissa . [1] [2] Huolimatta siitä, että haavoittuvuus osoitettiin useissa Intel-prosessoreissa useissa moderneissa arkkitehtuureissa, yritys kieltäytyi hakemasta haavoittuvuuden CVE-tunnistetta vedoten sen merkityksettömyyteen. Tutkijoiden mukaan tämä kanta ei kuvasta asioiden todellista tilaa, koska TLBleed on merkittävästi uudenlainen hyökkäystyyppi, muodostaa merkittävän uhan ja voi toimia lähtökohtana muiden vastaavien haavoittuvuuksien etsinnässä. [3]
Mekanismi
Kuvatun hyökkäyksen toteuttamiseksi on ratkaistava useita teknisiä ongelmia:
- Ota etukäteen selvää käytetyn prosessorin TLB-kokoonpanosta (assosiatiivisuus, koko). Tätä varten voit käyttää avoimia tietolähteitä [4] tai käyttää käänteistä suunnittelua matalan tason ohjeiden [5] avulla . TLB-parametreja koskevien tietojen lisäksi on myös selvitettävä virtuaaliosoitteiden ja TLB-solujen välinen vastaavuus, jotta voidaan myöhemmin seurata mielivaltaisten solujen tilaa hakemalla tarvittavia virtuaaliosoitteita. Yksinkertaisimmassa tapauksessa assosiatiivisen käännöspuskurin sijainti määräytyy sivuosoitteen alhaisten bittien mukaan, mutta voidaan käyttää monimutkaisempia kartoitusfunktioita, kuten bittikohtainen virran numeron XOR ja tietyt sivuosoitteen bitit.
- Etsi tapa seurata hyökkäyksen kohteena olevan prosessin pääsyä TLB-soluihin. Tutkimuksen tekijät käyttävät klassista pääsyaikahyökkäystä selvittääkseen, onko uhriprosessi käyttänyt tiettyä TLB-solua. Lisää monimutkaisuutta tuo se tosiasia, että assosiatiivinen käännöspuskuri nykyaikaisissa prosessoreissa on yleensä kaksitasoinen rakenne (samanlainen kuin välimuistin hierarkkinen organisaatio , L1 TLB ja L2 TLB). Pääsyajasta on kuitenkin mahdollista määrittää, onko halutun sivun osoite jonkin tason TLB:ssä (muuten suoritetaan virtuaaliosoitteen monitasoinen muunnos, joka vie satoja prosessorijaksoja ).
- Suorita haitallista koodia samassa laitteistoytimessä kuin uhriprosessin säie. Väitetään, että tämän ehdon täyttäminen haavoittuvuuden varsinaiselle toteuttamiselle on erittäin vaikeaa ja vaatii ei-triviaaleja ponnisteluja. Nykyaikaiset käyttöjärjestelmät tarjoavat kuitenkin mekanismeja prosessien sitomiseksi tiettyihin prosessorin laitteistoytimiin, mikä yksinkertaistaa tehtävää huomattavasti. [6]
- Uhriprosessin eri TLB-solujen käyttötilastojen käyttö tietojen palauttamiseksi hyökkäyksen kohteena olevan prosessin suorittamisesta. Hyökkääjälle on annettu täysi valinnanvapaus, miten ja mitä tietoja kerätyistä tilastoista poimitaan. Erityisesti voidaan yrittää määrittää, mitä koodin osaa hyökätty prosessi suorittaa kerralla tai toisella. Tässä tapauksessa tehtävänä on riippuvuuden palauttaminen , jossa on TLB-solujen kutsujen vektori ajasta riippuen ja vaadittu koodiosio. Monissa tapauksissa tämä tieto riittää toistamaan käsitellyt tiedot tarkasti. Erityisesti tietyt toiminnot suoritetaan salausalgoritmeissa saapuvista bitteistä riippuen, mikä mahdollistaa haavoittuvuuden hyödyntämisen.
Vaikuttaa
Elokuussa 2018 haavoittuvuus on osoitettu vain Intel-suorittimissa. Oletetaan, että myös muiden yritysten prosessorit, joissa sivun käännöspuskuri jaetaan laitteistosäikeiden kesken, voivat olla haavoittuvia tämän tyyppisille hyökkäyksille, mutta konseptin toteutuksia ei ole esitetty. [7] AMD väittää, että haavoittuvuus ei vaikuta sen prosessoreihin. [3]
Haavoittuvuutta koskevien tietojen julkaisemisen jälkeen OpenBSD -projekti poisti kokonaan tuen samanaikaiselle monisäikeiselle järjestelmästä. [8] [9] OpenBSD:n johtaja Theo de Raadt uskoo, että vaikka haavoittuvuus voidaan teoriassa poistaa kieltämällä eri yhteyksien prosessien ajaminen yleisillä prosessoriytimillä, käytännössä tällainen ratkaisu ei ole monimutkaisuuden vuoksi mahdollista. . [kahdeksan]
Puolustusmekanismit
- Pääasiallinen ja ilmeinen tapa poistaa haavoittuvuus on poistaa käytöstä samanaikainen monisäikeistys ( Hyper Threading ). On selvää, että SMT:n poistaminen käytöstä johtaa merkittävään suorituskyvyn laskuun ja mikroprosessorilaitteiston tehottomaan käyttöön. Sovelletaan OpenBSD -järjestelmään . [kahdeksan]
- Ohjelmistosäikeiden erottelu TLB-välimuistirivillä. Menetelmän käyttäminen edellyttää, että jokaista laitteistosäiettä ei saa käyttää virtuaalimuistin tietyille alueille, jotta säikeiden käyttämät TLB-linjat eivät leikkaa toisiaan. Menetelmää on vaikea toteuttaa, koska se rikkoo koherentin virtuaalimuistin käsitettä . Tätä lähestymistapaa voidaan kuitenkin mahdollisesti soveltaa käyttöjärjestelmätasolla, eikä se vaadi laitteistomuutoksia.
- Laitteiston pääsyn säikeiden erottelu TLB:ssä. Itse asiassa se vaatii yhteisen TLB:n jakamista useisiin itsenäisiin puskureihin, jotka kukin virta osoittaa erikseen. Suorituskyvyn heikkenemistä pitäisi odottaa johtuen TLB:n kokonaiskoon pienenemisestä laitteistosäiettä kohti.
Katso myös
- Meltdown on samanlainen spekulatiivinen suoritushyökkäys, joka katkaisee prosessien ja käyttöjärjestelmän ytimen välisen eristyksen samassa suorituskontekstissa.
- Spectre on samanlainen spekulatiiviseen suoritukseen perustuva hyökkäys, joka katkaisee eristyksen järjestelmän prosessien välillä
Muistiinpanot
- ↑ Black Hat USA 2018 . www.blackhat.com Käyttöpäivä: 19. joulukuuta 2018. Arkistoitu alkuperäisestä 7. tammikuuta 2019. (määrätön)
- ↑ TLBleed Side-Channel CPU Attack Detailed osoitteessa Black Hat . eWEEK. Haettu: 19. joulukuuta 2018. (määrätön)
- ↑ 12 Williams, Chris . Tapaa TLBleed: Salausavaimia vuotava CPU-hyökkäys, josta Intelin mielestä meidän ei pitäisi huolehtia , The Register ( 22. kesäkuuta 2018). Arkistoitu alkuperäisestä 8. joulukuuta 2018. Haettu 19. joulukuuta 2018.
- ↑ WikiChip - WikiChip . fi.wikichip.org. Haettu 19. joulukuuta 2018. Arkistoitu alkuperäisestä 26. lokakuuta 2020.
- ↑ [ https://www.cs.vu.nl/~giuffrida/papers/revanc_eurosec17.pdf RevAnC: Framework for Reverse Engineering Hardware Page Table Caches] // 10. eurooppalainen työpaja. Arkistoitu alkuperäisestä 20. joulukuuta 2018.
- ↑ sched_setaffinity(2) - Linux-käyttöopassivu . man7.org. Haettu 19. joulukuuta 2018. Arkistoitu alkuperäisestä 20. joulukuuta 2018. (määrätön)
- ↑ Halfacree, Gareth . Tutkijat varoittavat TLBleed Hyper-Threading vuln (englanniksi) , bit-tech.net (25. kesäkuuta 2018). Arkistoitu alkuperäisestä 13. helmikuuta 2019. Haettu 19. joulukuuta 2018.
- ↑ 1 2 3 OpenBSD:n päällikkö de Raadt sanoo, ettei uudelle Intel-suoritinvirheelle ole helppoa korjausta . www.itwire.com (25. kesäkuuta 2018). Haettu 25. kesäkuuta 2018. Arkistoitu alkuperäisestä 25. kesäkuuta 2018.
- ↑ OpenBSD poistaa käytöstä Intel-suorittimien hypersäikeistystuen todennäköisten tietovuotojen vuoksi . www.itwire.com (21. kesäkuuta 2018). Käyttöpäivä: 19. joulukuuta 2018. Arkistoitu alkuperäisestä 9. heinäkuuta 2018.
Linkit
2010-luvun hakkerihyökkäykset |
---|
Suurimmat hyökkäykset |
|
---|
Hakkereiden ryhmät ja yhteisöt |
|
---|
yksinäisiä hakkereita |
|
---|
Havaittiin kriittisiä haavoittuvuuksia |
- Heartbleed (SSL, 2014)
- Bashdoor (Bash, 2014)
- POODLE (SSL, 2014)
- Rootpipe (OSX, 2014)
- JASBUG (Windows, 2015)
- Stagefright (Android, 2015)
- DROWN (TLS, 2016)
- Badlock (SMB/CIFS, 2016)
- Dirty Cow (Linux, 2016)
- EternalBlue ( SMBv1 , 2017)
- DoublePulsar (2017)
- KRACK (2017)
- ROCA (2017)
- BlueBorn (2017)
- Sulautuminen (2018)
- Spectre (2018)
- Blue Keep (2019)
|
---|
Tietokonevirukset |
|
---|
2000 -luku • 2010 -luku • 2020-luku |