Translated by Lauri Lyytinen
(ITKST56 course assignment at JYU.FI)
♪ (36C3 intromusiikki) ♪
Juontaja: Seuraavan esityksen aihe on
käytännön välimuistihyökkäykset verkossa
Puhujana on Michael Kurth. Hän tunnisti
tämän hyökkäystavan. Hyökkäsytapa on
ensimmäinen laatuaan. Hän on tutkimuksen
pääkirjoittaja ja hänen esityksensä
tulee olemaan suurenomoinen! Meille on
luvattu huonoja sanaleikkejä kissoista ja
odotan niitä sinulta. Annetaan iso käsi
Michael Kurthille!
(taputusta)
Michael: Hei kaikille ja paljon kiitoksia
kun pääsitte kuuntelemaan esitystäni.
Nimeni on Michael ja haluan jakaa kansanne
tutkimuksemme jonka toteuttamisen
mahdollisti mahtava VUSec grup osana
Pro gradu -tutkimustani. Hieman itsetäni.
Suoritin tietotekniikan maisteriopintojani
ETH Zürichin ja pystyin tekemään graduni
Amsterdamissa. Nykyään työskentelen
turvallisuusanalyytikkona infoGuardilla.
Tässä näette ihmiset, jotka oikeasti
mahdollistivat tämän tutkimuksen.
He ovat esimiehiäni ja tutkimus-
kollegoitani, jotka tukivat minua
koko ajan ja panostivat aikaa ja vaivaa
tutkimukseen. Joten he ovat oikeat
rokkistarat tämän tutkimuksen taustalla.
Mutta aloitetaanpa välimuistiyökkäyksistä.
Tapa tunnettin paikallisesti suoritet-
tavan koodin hyökkäyksenä. Esimerkiksi
vasemmalla näkyvässä virtuaaliympäristössä
on kaksi virtuaalikonetta, jotka jakavat
laitteiston. Eli ne jakavat aikapaikat
CPU:n ja välimuistin osalta. Siksi
VM2 käyttävä hyökkääjä voi suorittaa
välimuistihyökkäyksen VM1 vastaan. Samoin
myös JavaScriptillä. Haitallinen skripti
syötetään selaimelle, joka sitten
suorittaa sen. Koska se jakaa resursseja
koneen kanssa se voi myös
hyökätä muihin prosesseihin.
Tämä JavaScript tapa luo tunteen
verkon yli tapahtuvasta toiminnasta, eikö?
Mutta se vaatii skriptin suorittamisen
koneellasi ollakseen oikeasti onnistunut.
Joten halusimme kehittää tätä ja toteuttaa
oikean välimuistihyökkäyksen verkon yli.
Tässä perusasetelmassa asiakas käyttää SSH
yhteyttä palvelimeen ja meillä on kolmas,
hyökkääjän käyttämä kone. Kuten tulen
tänään todistamaan, voimme murtaa tämän
SSH-istunnon luottamuksen käyttämällä
kolmatta konetta ilman haitallista koodia
tai ohjelman suorittamista asiakkaalla
tai palvelimella. Lisäksi pavelimen
CPU:lla ei ole mitään tekemistä tämän
välimuistihyökkäyksen kanssa. Joten se
vain on, eikä huomaa kun siltä vuotaa
salaisuuksia. Katsotaanpa hieman tarkemmin.
Tässä meillä on kiva kissa suorittamassa
SSH-istuntoa palvelimen kanssa ja aina,
kun kissa painaa nappia yksi paketti
lähtee palvelimelle. Tämä toteutuu aina
interaktiivisessa SSH-istunnossa. Kuten
nimikin kertoo, se luo interaktiivisuuden
tunteen. Kun kurkkaamme hieman
konepellin alle nähdäksemme mitä palveli-
mella tapahtuu, huomamme näiden pakettien
oikeasti aktivoivan viimeisen tason
välimuistia (LLC). Tästä lisää hieman
myöhemmin. Nyt hyökkääjä toteuttaa saman-
aikaisen välimuistihyökkäyksen LLC:een
vain lähettämällä verkkoliikennepaketteja.
Ja näin voimme oikeasti vuotaa
saapumisajat yksittäisistä SSH-paketeista.
Nyt varmaan kysyt itseltäsi miten
SSH-pakettien saapumisajat vaikuttavat
SSH-istunnon luottamuksellisuuteen. No,
ihmisillä on omintakeisia tapoja kirjoit-
taa. Ja tässä näemme esimerkin käyttäjän
kirjoittaessa sanaa "koska". Huomamme,
että O:n painallus K:n jälkeen on nopeampi
kuin esimerkiksi S O:n jälkeen. Tämä
voidaan yleistää ja sitä voidaan käyttää
tilastollisessa analyysissä. Näillä orans-
seilla pisteillä, jos saamme mallinnettua
saapumisajat moittettomasti — ja mitä
moitteeton tarkoittaa: voimme mallintaa
tarkat ajat, kun käyttäjä näppäili —,
voimme toteuttaa tämän tilastollisen
analyysin saapumisien välisistä ajoista.
Ja näin voimme vuotaa mitä olit
kirjoittamssa yksityisessä SSH-istunnossa.
Kuuolstaa pelottavalta ja futuristiselta,
mutta minä selkeytän asian esityksen
aikana. Hyvä! Haluan tuoda yhden seikan
esille heti näin alussa: Kuten on tapana
ja kirjoittamien helpottamiseksi
tutkimuskelle annetaan nimi. Ja jos olette
seuranneet InfoSecin twitteriä tarkasti,
tunnistatte varmaan mistä olen puhumassa.
Koska miedän tapauksessa nimesimme
tutkimuksen NetCAT:ksi. Tämä oli tietenkin
sanaleikki. Tässä NetCAT tarkoittaa
"Network Cache Attack" ja se oli tietenkin
huumoria, joka voi joskus kostautua.
Ja tässä tapauksessa se kostautui pahasti.
Näin saimme aikaan himean twitter-draamaa
viime syyskuussa. Yksi tykätyimmistä
twiiteistä tutkimukseen liittyen oli
Jakelta. Nämä esitykset ovat hyviä, koska
tällaiset twiitit voidaan henkilöidä ja
kyllä: Minä olen tämä idiootti. Korjataanpa
tämä! Intel tunnusti työmme palkitsemalla
ja lisäksi CVE-numerolla, joten nykyään
voimme vain käyttää CVE-numeroa. Tai,
jos se on hankalaa, twitter draaman
aikana joku lähetti meille tällaisen
kivan pienen vaihtoehtoisen nimen ja
lisäsi logon, josta minä jopa pidän.
Sen nimi on NeoCAT. Jokatapuksessa,
opimme läksymme nimeämisjutusta. Niinpä
siirrytään