AMD:n prosessoreista löytyi Meltdownin kaltainen haavoittuvuus

Kaotik

Banhammer
Ylläpidon jäsen
Liittynyt
14.10.2016
Viestejä
21 559
AMD:n prosessoreista on löytynyt Inteliä ja Armia vaivanneen Meltdownin kaltainen "Transient Execution of Non-canonical Accesses" -haavoittuvuus.
Haavoittuvuuden löysivät Dresdenin yliopiston tutkijat, jotka kertoivat AMD:lle haavoittuvuudesta viime vuoden lokakuussa. Haavoittuvuutta ei kuitenkaan tuotu julki heti, vaan yhtiölle annettiin aikaa valmistella korjaus haavoittuvuudelle.
Nyt vakavuudeltaan keskitasolle arvioitu haavoittuvuus sekä ohjeet sen torjumiseksi on julkaistu. Korjausohjeet on suunnattu sovelluskehittäjille.

Lähteet:
https://arxiv.org/ftp/arxiv/papers/2108/2108.10771.pdf (PDF)
 
Liittynyt
22.10.2016
Viestejä
11 119
Tämä siis perustuu siihen, että (alkuperäisessä (*)) x86-64-arkkitehtuurissa virtuaalisoitteet eivät ole 64-bittisiä vaan 48-bittisiä. Ja noiden 16 käyttämättömän bitin sitten pitää olla samoja kuin ylimmän varsinaisen käytössä olevan osoitebitin.

Kun muistiaccesseja tehdään, AMDn prossut vaan alkuvaiheessa ignoraa nuo ylimmät käyttämättömät bitit, ja tarkastus siitä, että ne on samat kuin ylin käytössä oleva bitti tehdään vasta myöhemmin. Muistiaccess aloitetaan alempaan osoitteeseen jolla alimmat 48 bittiä on samat.

Jos meillä on koodi, jossa softalla tehdään tarkastus, että jos joku virtuaaliosoite > limit, tätä tarkastusta voidaan huijata kun osoitteeksi laitetaan 2^48 + haluttu osoite ja tarkastus palauttaa että on suurempi, mutta muistiaccess menee silti haluttuun osoitteeseen.

Toki siitä muistiaccessista laittomaan korkeaan osoitteen lentää sitten joskus laittoman muistiaccessin poikkeus, mutta vasta kun muistiaccessin sivuvaikutukset (esim load-store-forwarding laillisen samat alemmat bitit sisältävän osoitteen kanssa) on ehkä jo tapahtunut.


Toisin kuin monet muut spectre-johdannaiset, tämä on melko helppo ja suoraviivainen korjata; Pitää vaan tarkastaa ne ylimpien 16 bitin laillisuus samalla (ja reagoida niihin, ja reagoidessa myös estää store-load-forwarding) kun muutenkin tehdään se virtuaaliosoitteen muunnos, ja tämä korjattaneen viimeistään zen5een. Sitä, ehtiikö korjaus zen4een en osaa sanoa.


(*) Cove-sarjassa tuli uusi moodi, jossa virtuaaliosoitteet on 57-bittisiä, mutta siinäkin siis 7 bittiä jää käyttämättä 64-bittisestä luvusta kun sitä käytetään virtuaaliosoitteena.
 
Viimeksi muokattu:
Liittynyt
14.12.2016
Viestejä
2 768
Jaha! Taas sitä oppii jotain uutta kun lukee näitä foorumeja! Kiitos taas hkultalalle computer jargon - Suomi käännöksestä vähän syvemmälle sukeltaen.
 
Liittynyt
03.01.2018
Viestejä
576
Otsikkoa voisi tarkentaa vähän vähemmän raflaavaksi, Meltdown on yksi pahimmista prosessoreiden tietoturva-aukoista ja tämä ei ole likimainkaan sellainen. Ainoa Meltdown-tyyppisyys tässä haavoittuvuudessa on että kummatkin ovat MMU:n ongelmia ja mahdollistavat yksinkertaisen tavan lukea haluttua suojattua dataa. Meltdown-prosessoreissa siis ohi kaikkien prosessorin rautasuojauksien - tässä tapauksessa vain saman prosessin saman suojaustason - eli ongelma koskee vain ohjelminen sandboksausta toistensa sisään - ts JAVA, javascript yms. ympäristöissä. On tämä siis aivan oikea haavoittuvuus mutta sen rinnastaminen Meltdowniin ei ole millään tavalla asiantuntevaa.
 
Liittynyt
22.10.2016
Viestejä
11 119
Otsikkoa voisi tarkentaa vähän vähemmän raflaavaksi, Meltdown on yksi pahimmista prosessoreiden tietoturva-aukoista ja tämä ei ole likimainkaan sellainen. Ainoa Meltdown-tyyppisyys tässä haavoittuvuudessa on että kummatkin ovat MMU:n ongelmia ja mahdollistavat yksinkertaisen tavan lukea haluttua suojattua dataa. Meltdown-prosessoreissa siis ohi kaikkien prosessorin rautasuojauksien - tässä tapauksessa vain saman prosessin saman suojaustason - eli ongelma koskee vain ohjelminen sandboksausta toistensa sisään - ts JAVA, javascript yms. ympäristöissä. On tämä siis aivan oikea haavoittuvuus mutta sen rinnastaminen Meltdowniin ei ole millään tavalla asiantuntevaa.
Otsikointi on hyvin kohdallaan ja asiantuntevaa, toisin kuin jonkun kommentti: tämä on nimenomaan toimintaperiaatteeltaan hyvin meltdownin kaltainen - laiton muistiaccess etenee MMU-vaihetta pidemmälle jolloin sen sivuvaikutukset aktivoituu.

Ero tulee vaan siitä, millä tavalla laittomasta latauksesta tässä on kyse, mikä tarkastus tehdään liian myöhään. Ja se sitten vaikuttaa siihen että tämä ei ole yhtä vaarallinen kuin meltdown, vaikka toimintaperiaate onkin hvyin samankaltainen.


Ja Meltdown ei edelleenkäään mahdollista sen datan "yksinkertaista lukua ohi kaikkien suojauksien" koska se laiton käsky ei koskaan valmistu, sen tulos ei koskaan ilmesty arkkitehtuurilliseen rekisesteriin mistä se olisi helposti käytettävissä. SIitä on vaan sivuvaikutukset havaittavissa, ja sen arvon päätteleminen sivuvaikutuksista ei ole triviaalia.
 
Viimeksi muokattu:
Liittynyt
03.01.2018
Viestejä
576
Ja Meltdown ei edelleenkäään mahdollista sen datan "yksinkertaista lukua ohi kaikkien suojauksien" koska se laiton käsky ei koskaan valmistu, sen tulos ei koskaan ilmesty arkkitehtuurilliseen rekisesteriin mistä se olisi helposti käytettävissä. SIitä on vaan sivuvaikutukset havaittavissa, ja sen arvon päätteleminen sivuvaikutuksista ei ole triviaalia.
No oma tulkintasi kylläkin poikkeaa yleisesti hyväksytyistä tulkinnoista. Koko haavoittuvuuden nimi on Meltdown koska se sulatti kaikki em. haavoittuvuudelle alttiiden prosessoreiden rautatason muistisuojaukset. Sivuvaikutusten päätteleminen ei ole triviaalia mutta niistä löytyy valmiit periaatekertomukset ja valmiit kooditkin niille jotka sitä halutavat käyttää eikä kyse ole mistään rakettitieteestä. Ja koska itse suojatun datan lukeminen onnistuu lähes ilman mitään kikkailuja hyökkääjän ongelmaksi jää vain datan purkaminen sivukanavatekniikoilla.

Meltdown oli jokaisen prosessorivalmistajan pahin painajainen joka tapahtui.

Ja Meltdown-vaivainen prosessori kärsii tästäkin haavoittuvuudesta ja ei ole myöskään rajoittunut vain tietylllä tavalla luettuihin muistiosoitteisiin vaan koko muistiavaruus on luettavissa edelleen aivan samoin. Jossain vaiheessahan väitit että tämä ei ole mikään ongelma eli samalla periaatteella ajateltuna tämäkin nyt löydetty haavoittuvuus on vain pieni aliosa ongelmasta joka ei ole ongelma.
 
Viimeksi muokattu:
Liittynyt
22.10.2016
Viestejä
11 119
No oma tulkintasi kylläkin poikkeaa yleisesti hyväksytyistä tulkinnoista. Koko haavoittuvuuden nimi on Meltdown koska se sulatti kaikki em. haavoittuvuudelle alttiiden prosessoreiden rautatason muistisuojaukset.
:facepalm:

Sinulla on todella kummallinen käsitys sanan "kaikki" merkityksestä,

Meltdownilla ei voi ladata mitään sellaisista fyysisistä osotteista, joita ei ole mäpätty käytössä olevaan virtuaalimuistiavaruuteen.

Sivuvaikutusten päätteleminen ei ole triviaalia mutta niistä löytyy valmiit periaatekertomukset ja valmiit kooditkin niille jotka sitä halutavat käyttää eikä kyse ole mistään rakettitieteestä. Ja koska itse suojatun datan lukeminen onnistuu lähes ilman mitään kikkailuja hyökkääjän ongelmaksi jää vain datan purkaminen sivukanavatekniikoilla.
"lähes ilman mitään kikkailuita" ei ole sama asia kuin "suoraan". Kikkailuita vaaditaan siihen lukemiseenkin, koska se virtuaalimusitin läsnäolopoikkeus lentää. ja joo, sen voi koukuttaa jos voi tehdä kokonaisen C-kielisen ohjelman, mutta sen koukutus ei silti salli sen käskyn valmistua.

Ja jos yrittää hyödyntää meltdownia vaikka jostain korkeamman tason kieltä suorittavasta tulkista/virtuaalikoneesta (java, javascript, python tms.) niin siten sitä virtuaalimuistin läsnäolopoikkeusta ei voi koukuttaa ja sitten pitää se kuitenkin aktivoida spekulatiivisella suorituksella.

Ja niitä valmiita koodeja ei ollut ennen kuin ne silloin n. kolmisen vuotta sitten keksittiin.

Meltdown oli jokaisen prosessorivalmistajan pahin painajainen joka tapahtui.
Höpöhöpö. Nyt on jälleen suhteellisuudentaju todella pahasti hukassa.

Suora speksiä rikkova tietoturva-aukko joka ei vaadi mitään sivukanavakikkailuita on paljon pahempi.
Ja sellainen, joka mahdollistaa koko fyysisen muistin lukemisen eikä vain sitä, mikä on mäpätty näkyviin.

Melwdownille oli toimiva (mutta hidastava) workaround olemassa, mikä teki siitä kaikkea muuta kuin "pahimman painajaisen".

Ja Meltdown-vaivainen prosessori kärsii tästäkin haavoittuvuudesta ja ei ole myöskään rajoittunut vain tietylllä tavalla luettuihin muistiosoitteisiin vaan koko muistiavaruus on luettavissa edelleen aivan samoin. Jossain vaiheessahan väitit että tämä ei ole mikään ongelma eli samalla periaatteella ajateltuna tämäkin nyt löydetty haavoittuvuus on vain pieni aliosa ongelmasta joka ei ole ongelma.
:facepalm:

Koko sille prosessille näkyvä virtuaalimuistiavaruus oli luettavissa. Ei koko fyysistä musitiavaruutta.

On todella triviaalia (mutta suorituskyvyn kannalta hidastavaa) että prosessin virtuaaliavaruuteen ei mäpätä sellaista kamaa, jota se ei saa käyttää, ja tällöin kaikki muiden prosessien ja systeemin data on turvassa meltdownilta.

Tämä vaan hidastaa systeemikutsuja, kun niiden yhteydessä pitää sitten vaihtaa virtuaalimuistiavaruutta. Ja tämähän nimenomaan oli se ensimmäinen workaround.
 
Liittynyt
03.01.2018
Viestejä
576
:facepalm:

Sinulla on todella kummallinen käsitys sanan "kaikki" merkityksestä,

Meltdownilla ei voi ladata mitään sellaisista fyysisistä osotteista, joita ei ole mäpätty käytössä olevaan virtuaalimuistiavaruuteen.
No kun nyt aikanaan prosessoriin keksittiin laittaaa MMU siihen lisättiin myös rautasuojaus eri suojaustasoille. Meltdown-vikaisessa prosessorissa pystytään lukemaan dataa kaikkien näiden suojausten ohi eli niistä tuli turhia.


"lähes ilman mitään kikkailuita" ei ole sama asia kuin "suoraan". Kikkailuita vaaditaan siihen lukemiseenkin, koska se virtuaalimusitin läsnäolopoikkeus lentää. ja joo, sen voi koukuttaa jos voi tehdä kokonaisen C-kielisen ohjelman, mutta sen koukutus ei silti salli sen käskyn valmistua.
Onneksi Intel oli jo tässä vaiheessa kehittänyt transaktionaaliset laajennukset joita käyttämällä voidaan lukea mitä halutaan transaktion sisällä tarvitsematta tehdä erillisiä threadeja lukuyrityksille. No Intel on nyt jo tajunnyt disabloida koko TSX:n oletuksena näistä prosessoreista.

Ja jos yrittää hyödyntää meltdownia vaikka jostain korkeamman tason kieltä suorittavasta tulkista/virtuaalikoneesta (java, javascript, python tms.) niin siten sitä virtuaalimuistin läsnäolopoikkeusta ei voi koukuttaa ja sitten pitää se kuitenkin aktivoida spekulatiivisella suorituksella.
Ei edes tarvitse koukuttaa jos tulkki/virtuaalikone tekee sen valmiiksi.

Suora speksiä rikkova tietoturva-aukko joka ei vaadi mitään sivukanavakikkailuita on paljon pahempi.
Ja sellainen, joka mahdollistaa koko fyysisen muistin lukemisen eikä vain sitä, mikä on mäpätty näkyviin.
No voihan sitä kuvitella pahempiakin jos oikein yrittää mutta Meltdown on ylivoimaisesti pahinta mitä on ikinä tapahtunut tietoturvan osalta.

Melwdownille oli toimiva (mutta hidastava) workaround olemassa, mikä teki siitä kaikkea muuta kuin "pahimman painajaisen".
Joopa joo. Meltdown oli pahin painajainen sekä Intelille että softaa kehittäville tahoille. Tämän kieltäminen on uskomatonta vähättelyä sinulta.




:facepalm:

Koko sille prosessille näkyvä virtuaalimuistiavaruus oli luettavissa. Ei koko fyysistä musitiavaruutta.

On todella triviaalia (mutta suorituskyvyn kannalta hidastavaa) että prosessin virtuaaliavaruuteen ei mäpätä sellaista kamaa, jota se ei saa käyttää, ja tällöin kaikki muiden prosessien ja systeemin data on turvassa meltdownilta.

Tämä vaan hidastaa systeemikutsuja, kun niiden yhteydessä pitää sitten vaihtaa virtuaalimuistiavaruutta. Ja tämähän nimenomaan oli se ensimmäinen workaround.
Uskomatonta turhasta saivartelua taas. Otetaan nyt vaikka tämä nyt löydetty haavoittuvuus, se on Meltdownin hyvin pieni alaosa saman virtuaalimuistiavaruuden sisällä ja aiheuttaa silti paljon turhaa työtä sovelluskehittäjille jotka joutuvat sandboksattujen softien kanssa pelaamaan.
 
Toggle Sidebar

Statistiikka

Viestiketjut
240 163
Viestejä
4 193 349
Jäsenet
70 869
Uusin jäsen
Arttu1345

Hinta.fi

Ylös Bottom