Generatiivinen tiedustelu

Suorituskyky ja turvallisuus törmäävät jälleen "Collide+Power" -hyökkäyksessä

Treffi:

Toinen viikko, toinen BWAIN!

Kuten tiedät, jos kuuntelit viime viikon podcast (vihje, vihje!), BWAIN on lyhenne sanoista Bugi vaikuttavalla nimellä:

Se on lempinimi, jota käytämme, kun uuden kyberturvallisuushyökkäyksen löytäjät innostuvat löydöstään niin innoissaan, että he antavat sille PR-ystävällisen nimimerkin, rekisteröivät sille vanity-verkkotunnuksen, rakentavat sille mukautetun verkkosivuston ja suunnittelevat sille erityisen logon.

Tällä kertaa nimi Törmäys+voima sisältää ärsyttävän välimerkin, joka on plussa virheiden nimeämisessä, mutta miinus Internet-verkkotunnusta rekisteröitäessä. (Ironista kyllä, verkkotunnusten käyttö on sallittua -, Mutta ei +).

Joten verkkotunnusta piti lyhentää hieman https://collidepower.com, mutta verkkosivusto antaa sinulle yleiskatsauksen ongelmasta joka tapauksessa, vaikka summausmerkki vähennetään.

Törmää välimuistiin tallennettuihin tietoihin ja mittaa tarvittava teho

Tämän uuden takana olevat tutkijat paperi ovat Andreas Kogler, Jonas Juffinger, Lukas Giner, Martin Schwarzl, Daniel Gruss ja Stefan Mangard Grazin yliopistosta Itävallasta sekä Lukas Gerlach ja Michael Schwarz CISPA Helmholtzin tietoturvakeskuksesta Saksasta.

Emme yritä selittää tämän hyökkäyksen eri muotoja pitkään, koska mittausten suorittamisen tekniset yksityiskohdat ja matemaattinen mallinnus, jota käytetään johtopäätösten tekemiseen näistä mittauksista, ovat monimutkaisia.

Mutta ongelman ydin, jos suokaa anteeksi osittainen sanapeli, on se, että nykyaikaisten prosessorisirujen sisään haudattu välimuisti on tarkoitettu tarjoamaan näkymätön ja automaattinen suorituskyvyn lisäys...

…ei ole aina niin näkymätön kuin luulisi, ja saattaa joskus vuotaa osan tai kokonaan sen sisällöstä jopa prosesseihin, joiden ei pitäisi pystyä näkemään sitä.

Kuten nimestä voi päätellä, välimuisti (se lausutaan kassa, kuten dollareissa ja sentteissä, ei leima, kuten kunnioituksen ja arvovallan suhteen, jos olet koskaan miettinyt), säilyttää erityisiä kopioita data-arvoista perinteisestä RAM-muistista piilossa itse CPU-sirun sisällä.

Jos prosessori pitää kirjaa äskettäin käyttämistäsi RAM-osoitteista (muistipaikoista) ja pystyy arvaamaan tarpeeksi hyvin, mitä todennäköisesti käytät pian uudelleen, se voi pitää ne väliaikaisesti välimuistissaan ja siten nopeuttaa huomattavasti toinen pääsysi näihin arvoihin ja kolmas pääsy, neljäs ja niin edelleen.

Jos esimerkiksi etsit taulukosta data-arvojen sarjaa muuntaaksesi kuvan pikseleitä yhdestä värimuodosta toiseen, saatat huomata, että useimmiten hakutaulukko kehottaa sinua käymään joko RAM-osoitteessa 0x06ABCC00 (joka saattaa olla missä "mustan pikselin" erikoiskoodi on tallennettu) tai osoite 0x3E00A040 (joka saattaa olla "läpinäkyvän pikselin" koodin sijainti).

Säilyttämällä automaattisesti näiden kahden yleisesti tarvittavan muistiosoitteen arvot välimuistissaan, CPU voi oikosulkea (kuvaannollisesti, ei kirjaimellisesti!) tulevat yritykset päästä käsiksi näihin osoitteisiin, joten prosessorin ulkopuolelle ei tarvitse lähettää sähköisiä signaaleja. emolevyn yli ja varsinaisiin RAM-siruihin lukemaan sinne tallennettujen tietojen pääkopio.

Joten välimuistiin tallennetut tiedot ovat yleensä paljon nopeammin käytettävissä kuin emolevyn RAM-muistissa olevat tiedot.

Yleisesti ottaen et kuitenkaan voi valita, mihin välimuistirekistereihin tottuu tallentamaan mitkä RAM-osoitteet, etkä voi valita, milloin suoritin päättää lopettaa "läpinäkyvän pikselikoodin" arvon tallentamisen välimuistiin ja aloittaa toisen ohjelman välimuistin tallentamisen. sen sijaan "supersalainen kryptografinen avain".

Itse asiassa välimuisti voi sisältää liberaalin arvoyhdistelmän RAM-osoitteiden vapaasta sekoituksesta, jotka kuuluvat vapaaseen sekoitukseen eri käyttäjätilejä ja käyttöoikeustasoja, kaikki samanaikaisesti.

Tästä syystä, tehokkuus- ja suorituskykysyistä, edes järjestelmänvalvojatason ohjelmat eivät voi suoraan kurkistaa tällä hetkellä välimuistissa olevien osoitteiden luetteloon tai saada niiden arvoja suojatakseen välimuistissa olevia tietoja ulkoiselta nuuskimiselta.

Ohjelmoijana käytät edelleen konekoodiohjetta "lue läpinäkyvä pikselikoodi osoitteesta 0x3E00A040", ja käyttöjärjestelmä päättää silti, pitäisikö sinulla olla pääsy näihin tietoihin numeerisen osoitteen 0x3E00A040 perusteella, vaikka tiedot tulevat lopulta suoraan välimuistista todellisen RAM-osoitteen 0x3E00A040 sijaan.

Bittin hinta

Collide+Power-tutkijat havaitsivat suuresti yksinkertaistettuna, että vaikka et voi suoraan kurkistaa välimuistissa olevaan väliaikaiseen dataan, etkä siksi voi ohittaa muistisuojausta, jota käytettäisiin, jos käyttäisit sen virallisen RAM-osoitteen kautta. …

…voit arvata, milloin tietyt data-arvot kirjoitetaan tiettyihin välimuistin rekistereihin.

Ja kun yksi jo välimuistissa oleva numero korvataan toisella, voit tehdä johtopäätöksiä molemmista arvoista mittaamalla, kuinka paljon tehoa prosessori käyttää prosessissa.

(Nykyaikaiset prosessorit sisältävät yleensä erityisiä sisäisiä rekistereitä, jotka antavat sinulle virrankulutuslukemat, joten sinun ei tarvitse murtaa tietokoneen koteloa ja kiinnittää fyysistä anturin johtoa jonnekin emolevylle.)

Mielenkiintoista on, että itse CPU:n virrankulutus, kun se korvaa välimuistin arvon uudella, riippuu siitä, kuinka monta bittiä numeroiden välillä muuttuu.

Jos yksinkertaistamme asiat yksittäisiin tavuihin, niin binääriarvon ylikirjoittaminen 0b00000000 with 0b11111111 (desimaaliluvun 0 muuttaminen desimaaliksi 255) edellyttää tavun kaikkien bittien kääntämistä, mikä kuluttaisi eniten tehoa.

Korvataan ASCII-merkki A (65 desimaalilla) ja Z (90 desimaalilla) tarkoittaa muuttumista 0b01000001 tulee 0b01011010, jossa neljä bittikohtaa käännetään, mikä kuluttaa keskimääräisen määrän tehoa

Ja jos luvut sattuvat olemaan samat, ei bittejä tarvitse kääntää, mikä kuluttaisi vähiten virtaa.

Yleensä jos XOR kaksi numeroa yhteen ja lasket vastauksen 1-bittien lukumäärän, löydät käännösten määrän, koska 0 XOR 0 = 0 ja 1 XOR 1 = 0 (niin nolla tarkoittaa, että ei kääntöä), while 0 XOR 1 = 1 ja 1 XOR 0 = 1 (merkitsee kääntöä).

Toisin sanoen, jos pääset käsiksi joukkoon omia valittuja osoitteita tavalla, joka pohjustaa tietyn joukon välimuistirekistereitä prosessorin sisällä, ja sitten tarkkailet virrankulutusta riittävän tarkasti, kun jonkun muun koodi saa datansa kohdistetuksi näihin välimuistiin. sijainteja…

…sitten voit tehdä johtopäätöksiä siitä, kuinka monta bittiä käännettiin vanhan välimuistin sisällön ja uuden välillä.

Tietenkin voit valita arvot, jotka on tallennettu osoitteisiin, joilla esität välimuistirekisterit, joten et vain tiedä kuinka monta bittiä todennäköisesti käännettiin, vaan tiedät myös, mitkä bittien aloitusarvot olivat ennen käännösten tekemistä. paikka.

Tämä antaa sinulle vielä enemmän tilastotietoja, joiden avulla voit ennustaa välimuistin todennäköisiä uusia arvoja, koska tiedät, mitä siellä oli aiemmin ja todennäköinen bittien määrä, jotka ovat nyt erilaisia.

Et ehkä pysty selvittämään tarkalleen, mitä dataa uhri prosessi käytti, mutta vaikka voit poistaa joitain bittikuvioita, olet juuri oppinut jotain, mitä sinun ei pitäisi tietää.

Ja jos nämä tiedot olisivat esimerkiksi jonkinlainen salausavain, saatat pystyä muuttamaan mahdottoman raa'an voiman hyökkäyksen hyökkäykseksi, jossa saatat vain onnistua.

Jos esimerkiksi voit ennustaa 70 bittiä 128-bittisessä salausavaimessa, sen sijaan, että kokeilisit kaikkia 128 bitin yhdistelmiä, mikä olisi mahdoton tehtävä, sinun on kokeiltava 258 sen sijaan eri näppäimiä (128 – 70 = 58), mikä saattaa olla hyvinkin mahdollista.

Ei tarvitse panikoida

Onneksi tämä "haavoittuvuus" (nyt nimitetty CVE-2023-20583) ei todennäköisesti käytetä sinua vastaan ​​lähiaikoina.

Se on enemmänkin teoreettinen asia, joka sirujen valmistajien on otettava huomioon sen totuuden perusteella, että kyberturvallisuushyökkäykset "ainoastaan ​​paranevat ja nopeammin", kuin hyödynnettävä aukko, jota voitaisiin käyttää nykyään.

Itse asiassa tutkijat myöntävät melkein hämmentyneenä, että "te ei tarvitse huolehtia"

He todella kirjoittivat te kursiivilla ja imprecation Älä huoli lihavoituna:

Johtopäätös BWAIN-sivustolla.

Johtopäätöksenä tutkijat toteavat surullisena, että jotkut heidän parhaista todellisista tuloksistaan ​​tällä hyökkäyksellä ihanteellisissa laboratorio-olosuhteissa vuotivat vain 5 bittiä tunnissa.

Yhdessä hyökkäysskenaariossa he itse asiassa myönsivät kohtaaneensa "käytännön rajoituksia, jotka johtivat yli [yhden] vuoden vuotomääriin bittiä kohden".

Kyllä, luit sen oikein – tarkistimme sen useita kertoja lehdestä vain varmistaaksemme, ettemme kuvitelleet sitä.

Ja tämä tietysti herättää kysymyksen: "Kuinka kauan sinun on jätettävä kokoelma tiedonsiirtotestejä käynnissä, ennen kuin voit mitata luotettavasti niin pieniä siirtonopeuksia?"

Laskelmiemme mukaan yksi bitti vuodessa antaa sinulle noin 125 tavua vuosituhatta kohden. Tällä nopeudella äskettäin julkaistun kolmen tunnin hittielokuvan lataaminen Oppenheimer IMAX-laadussa, joka ilmeisesti vie noin puoli teratavua, kestäisi noin 4 miljardia vuotta. Tuon oudon faktoidin perspektiivistä voidaan todeta, että maapallo itsessään on vain noin 4.54 miljardia vuotta vanha, anna tai kestää muutama sata miljoonaa kuukautta.

Mitä tehdä?

Yksinkertaisin tapa käsitellä CVE-2023-20538:a juuri nyt on olla tekemättä mitään, koska tutkijat itse ovat neuvoneet sinua olemaan huoletta.

Jos tunnet tarvetta tehdä jotain, sekä Intel- että AMD-prosessoreilla on keinoja vähentää tehonmittaustyökalujensa tarkkuutta tarkoituksella lisäämällä satunnaista kohinaa teholukemiin.

Tämä jättää keskiarvot oikeiksi, mutta vaihtelevat yksittäisiä lukemia riittävästi, jotta tämä jo nyt ei-todella toteutettavissa oleva hyökkäys on vielä vaikeampi toteuttaa.

Intelin tehonmittauksen lievennys tunnetaan nimellä RAPL-suodatus; AMD:tä kutsutaan nimellä suorituskyvyn determinismitila.


spot_img

Uusin älykkyys

spot_img