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äystapa 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 itsestä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 tunnettiin 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 palvelimen 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 "because". Huomamme, että E:n painallus B:n jälkeen on nopeampi kuin esimerkiksi C A:n jälkeen. Tämä voidaan yleistää ja sitä voidaan käyttää tilastollisessa analyysissä. Näillä orans- seilla pisteillä, jos saamme mallinnettua saapumisajat moitteettomasti — 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 kirjoittamassa yksityisessä SSH-istunnossa. Kuulostaa 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 tutkimukselle annetaan nimi. Ja jos olette seuranneet InfoSecin twitteriä tarkasti, tunnistatte varmaan mistä olen puhumassa. Koska meidä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 hieman 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. Siirrytäänpä eteenpäin. Palataan tutkimuk- semme varsinaisesti kiinnostavimpiin asioihin! Nopea hahmottelu: Aion ensin kertoa taustoista eli välimuistihyökkäykset yleisesti. Sitten DDIO ja RDMA, tärkeät teknologiat joita hyväksikäytimme verkon yli tapahtuvassa hyökkäyksessä. Sitten itse hyökkäys ja kuinka käänteisesti suunnittelimme DDIO:n, päästä-päähän hyökkäys ja pieni demo. Välimuistihyökkäykset perustuvat mikro- arkkitehtuurin tilan havainnointiin, jonka pitäisi säilyä salassa ohjelmistolta. Tämä onnistuu pakottamalla jaetut resurssit vuotamaan tietoa. Analogiana voidaan pitää kassakaapin murtamista stetoskoopilla, jossa jaettuna resurssina on ilma, joka välittää lukosta tulevat äänet kun sitä käsitellään. Tämä tapahtuu jokseenkin samalla tavalla tietokoneissa. Mutta, nyt vain välimuis- tissa. Välimuisti ratkaisee pahatkin viiveongelmat keskusmuistista ladattaessa, eikö? Nämä tekevät karkeasti neljänneksen kaikista komennoista. Ja välimuistin avulla voimme käyttää uudelleen datan ja käyttää paikkatietoa ohjelmissa. Moderneissa CPU:issa on yleensä 3-kerroksinen välimuistihierarkia: L1 on jaettu datan ja komentoväli- muistin kanssa. L2, ja sitten L3, joka on jaettu ytimien kesken. Jos käsiteltävä data on jo ladattu välimuistiin, se aiheuttaa välimuistiosuman. Jos data pitää ladata keskusmuistista, sitä pidetään välimuistihutina. Joten, miten saame oikeasti tietää milloin tapahtuu osuma tai huti? Koska emme voi lukea dataa suoraan välimuistista. Voimme tehdä tämän esimerkiksi alustamalla ja tutkaamalla. Se on tunnettu tekniikka, jota käytimme verkkoympäristössä. Haluan pikaisesti kertoa siitä, mitä tässä tapahtuu. Alustamisen ja tutkaamisen ensimmäisessä vaiheessa hyökkääjä saattaa välimuistin tunnettuun tilaan. Periaat- teessa alustaa välimuistin. Se täyttää sen omalla datallaan, jonka jälkeen hyökkääjä odottaa uhrin toimia. Viimeinen vaihe on tutkaaminen, joka tekee alustamisen uudelleen, mutta tällä kertaa mittaa kirjautumisajat. Nopeat osumat tar- koittavat ettei välimuistia oltu muutettu välissä. Ja hutiosumat tuottavat, kuten nyt tiedämme, että uhri on todella käyttänyt yhtä välimuistiriviä alustuksen ja tutkaamisen välissä. Mitä voimme siis tehdä näillä osumilla ja hutiosumilla? Voimme analysoida niitä! Tämä aikatieto kertoo meille paljon uhrin käyttäytymisestä ja ohjelmista. Perustuen pelkästään osumiin ja huteihin voimme— tai tutkijat pystyivät —vuotamaan salausavaimistoja, arvaamaan nettisaitteja tai muistin sisältöä. Näin siis SPECTRE:llä ja MELTDOWN:lla. Katsotaanpa kuinka oike- astaan saamme toteutettua hyökkäyksen verkon yli! Toinen tärkeistä teknologioista on DDIO. Mutta ensin haluan kertoa DMA:sta koska se on kuin sen edeltäjä. DMA on periaatteessa teknologia, joka sallii PCIe-laitteen, kuten esimerkiksi verkkokortin, vaikuttaa suoraan keskusmuistiin ilman CPU:n keskeytystä. Joten esimerkiksi, jos paketti on vastaanotettu, PCIe-laite vain laittaa sen keskusmuistiin ja sitten, kun ohjelma tai sovellus haluaa käyttää dataa, silloin se voi hakea sen keskusmuistista. Nyt DDIO:n kanssa tämä käy hieman toisella tavalla. DDIO:n avulla PCIe-laite voi laittaa suoraan dataa viimeisen tasan välimuistiin. Tämä on hienoa, sillä nyt kun sovellus työskentelee datan kanssa, sen ei tarvitse tehdä kallisarvoista hakua keskusmuistista vaan se voi suoraan työstää dataa — tai noutaa sen — LLC:sta. DDIO tarkoittaa "Data Direct I/O Technology" ja se on käytössä kaikissa Intelin palvelintason prosesso- rissa vuodesta 2012 lähtien. Se on päällä oletuksena ja läpinäkyvä ajureille ja käyttöjärjestelmille. Arvaan ettei monikaan edes huomannut, että jokin muuttui kone- pellin alla. Muutos oli kuitenkin hyvin merkittävä. Miksi oikeastaan DDIO:ta tarvitaan? Se on käytössä suorituskyvyn takia. Tässä meillä on kiva Intelin tutkimus, joka alimpana osoittaa NIC:n eriävät ajat. Tässä meillä on ase- telma, jossa on 2, 4, 6 ja 8 NIC:a Ja meillä on läpimenoajat niille. Kuten voitte nähdä tässä tumman sinisellä että ilman DDIO:ta se pysäyttää skaalautuvuuden 4 NIC:n jälkeen. Vaaleansinisellä voimme nähdä että skaalau- tuvuus jatkuu verkkokortteja lisättäessä. Niinpä DDIO on rakennettu erityisesti verkkosovellusten skaalautuvuudeksi. Toinen teknologia, jota hyväksikäytämme on RDMA. Se tarkoittaa "Remote Direct Memory Access" ja se pohjimmiltaan purkaa siirtokerroksen tehtävät piirilevylle. Se on periaatteessa Kernelin ohitus. Eikä siinä ole CPU käyttöä, jolloin ohjelmisto voi käyttää etänä muistia ilman, että kuluttaa CPU aikaa palvelimella. Toin tähän lyhyen kuvauksen RDMA:sta tarkasteltavaksi. Tässä vasemmalla meillä on toiminnon aloittaja ja oikealla meillä on kohdepalvelin. Muistialue määräytyy palvelimen avauksessa ja tästä eteen päin ohjelmistot voivat tehdä tiedonsiirtoa ilman vaikutusta verkko- ohjelmistopinoon. Eli nyt on tehty TCP/IP pino kokonaisuudessaan. Yksipuoli- sissa RDMA operaatioissa sallitaan myös toiminnon aloittajan lukea ja kirjoittaa mielivaltaisiin kohtiin määrätyssä tilassa kohteessa. Lainaan nyt lausuntoa eräältä markkinajohtajalta näistä korkean suorituskyvyn käärmeistä: "Lisäksi, välimuisti etä-CPU:ssa ei täyty käytetyllä muistisisällöllä." No, tämä ei pidä enää paikkaansa DDIO:n kohdalta ja se on juuri se johon hyökkäsimme. Saatat kysyä itseltäsi "missä RDMA:ta käytetään"? Voin kertoa, että RDMA on yksi niistä teknologioista joista et kuule kovinkaan usein, mutta ovat oikeasti laa- jassa käytössä datakeskusten backendissa ja pilvi-infrastruktuurissa. Joten voit saada omat RDMA infrastruktuuriksi julkisesta pilvestä, kuten Azurelta, Oraclelta, Huaweilta tai AliBabalta. Myös muistiprotokollat kuten SMB ja NFS voivat tukea RDMA:ta. Muita ohjelmistoja ovat Suurtehotietokoneet, Big Data, kone- oppiminen, datakeskukset, pilvi ja muut. Mennäänpä tarkemmin tutkimuksen sisältöön ja siihen, kuinka hyväksikäytimme näitä kahta teknologiaa. Tiedämme nyt, että meillä on verkolle avoin jaettu resurssi DDIO:n ansiosta ja RDMA antaa meillä tar- vittavat luku- ja kirjoitusoikeudet tehdäksemme välimuistihyökkäyksen verkon yli. Mutta ensin meidän täytyy selkeyttää pari asiaa. Tietenkin teimme monia kokeita ja testasimme laajasti DDIO porttia ymmärtääksemme sen salat. Mutta tässä toin mukanani kaksi isoa kysymystä, joihin meidän on vastattava. Ensinnäkin tietysti, voimmeko erottaa välimuistin osumat ja hutiosumat verkon yli? Meillä on edelleen verkkoviive ja pakettijonotus ja niin edelleen. Olisiko todella mahdol- lista saada ajoitus oikein? Se on kuitenkin ehdoton vaatimus avatakseen sivukanavan. Ja niinpä toinen kysymys on sitten: Voimmeko oikeasti päästä käsiksi LLC:hen? Tämä liittyy ennemminkin hyökkäyspintaan kuin itse hyökkäykseen. Niinpä ensimmäiseen kysymykseen voimme vastata tällä yksinkertaisella kokeella: Vasemmalla meillä on erittäin pieni koodin palanen. Meillä on ajastettu RDMA luku tiettyyn offsettiin. Sitten kirjoitamme siihen offsettiin ja luemme sen uudelleen samasta offsetista. Kuten näette, kun teemme tämän vaikka 50 000 kertaa useisiin eri offsetteihin, voimme selkeästi erottaa kaksi eri jakaumaa. Sininen vastaa dataa, joka oli haettu muistista ja oranssi on dataa, joka oli haettu LLC:sta verkon yli. Voimme myös nähdä verkon vaikutukset toimintaan. Esimerkiksi, voimme nähdä pitkät hännät, jotka liittyvät joihinkin paketteihin, jotka hidastuivat verkossa tai olivat jonossa. Sivuhuomautuksena kaikille sivukanava asiantuntijoille: Tarvitsemme todella kirjoitusoikeuden, koska DDIO luku ei kohdenna mitään LLC:hen. Periaatteessa tämä on perusta jonka avulla suoritamme alustamisen ja tutkaamisen verkon yli. Tarvitsemme kuitenkin vielä todellisen kohteen profiilin rakenta- miseksi. Katsotaanpa millainen hyökkäyspinta meillä onkaan. Tämä tuokin meidät kysymykseen: voimmeko päästä täysin LLC:hen sisälle? Epäonneksemme näin ei tapahdu. DDIO:ssa kohdennukset on rajoitettu kahteen kohtaan. Tässä esimerkissä 20:stä. Joten noin 10%. Eikä se ole määritetty kohta, jota CPU käyttää. Meillä olisi pääsy vain 10 prosenttiin CPU:n toimin- noista välimustin viimeisellä tasolla. Tämäei toiminut kovin hyvinensimmäisenä hyökkäyksenä. Mutta hyvä uutinen on, että muut PCIe-laitteet—kuten vaikkapa toinen verkkokortti—käyttävät samoja kahta välimuistin kohtaa. Ja niinpä meillä on 100% näkyvyys mitä muut PCIe-laitteet tekevät välimuistissa. Katsotaanpa päästä- päähän hyökkäystä! Kuten jo mainitsin aiemmin, meillä on asiakkaan ja palvelimen perusjärjestely. Ja meillä on kone, jota me, hyökkääjänä, hallitsemme. Niinpä asiakas vain lähettää tämän paketin normaalisti ethernet NIC:nä ja siellä on myös toinen NIC liitettynä palvelimeen, mikä sallii hyökkääjän suorittaa RDMA-operaatioita. Tiedämme myös että kaikki paketit... tai kaikki näppäin- painallukset, jotka käyttäjä tekee, lähtevät yksittäisinä paketteina, jotka aktivoituvat alimman tason välimuistissa DDIO:n läpi. Mutta miten voimme nyt saada näiden pakettien tuloajat? Koska niistä me olemme kiinnostuneita! Nyt meidän on katsottava tarkemmin miten tämä verkkoliikenne pakettien saapuminen oikein toimii. IP pinossa on rengaspuskuri, joka periaatteessa suorittaa asynkronisia operaatioita laitteiston- eli NIC:N- ja CPU:n välissä. Kun paketti saapuu, se sijoittaa paketin rengaspuskurin ensimmäiseen paikkaan. Oikealla näette näkymän hyökkääjän näkökulmasta, joka voi vain seurata väli- muistin toimintaa. Näemme, että muistirivi ensimmäisessä paikassa syttyy. Näemme siis toimintaa siinä. Voisi olla myös välimuistin rivillä 2, tätä... emme tiedä mille riville tämä oikeastaan ilmestyy. Mutta, tärkeintä on: Mitä tapahtuu toiselle paketille? Sillä toinen paketti sytyttää myös yhden muistiriveistä, mutta toisen tällä kertaa. Se on oikeastaan seuraava rivi ensimmäiseen pakettiin ver- rattuna. Jos teemme tämän kolmannelle ja neljännelle paketille, huomamme, että meillä on kaunis porraskuvio. Nyt voimme nähdä ennustettavan kaavan, jota voimme hyväksikäyttää saadaksemme tietoa pakettien saapuessa. Ja tämä vain siksi, että rengaspuskuri on varattu tavalla, joka ei kiellä itseään, eikö? Se ei kiellä kun toinen paketti saapuu. Se ei kiellä ensimmäisen paketin välimuistin si- sältöä. Tämä on huikeaa meille hyökkääjänä koska nyt voimme muodostaa laadukkaan pro- fiilin. Katsotaan elävän elämän esimerkki. Tässä on välimuistin toiminta kun se vas- taanottaa jatkuvia pingejä. Voitte nähdä hienon porraskuvion ja näette myös, että rengaspuskuri uudelleenkäyttää paikkoja koska se on rengas. Nyt on tärkeää tietää, että rengaspuskuri ei pidä datasisältöä vaan ainoastaan datakuvauksen. Ja se käytetään uudelleen Epäonneksemme kun käyttäjä näppäilee SSH:lla, kuvio ei ole yhtä kaunis kuin tämä. Koska muutenhan tämä olisi selvä peli ja voisimme edetä sillä. Koska käyttäjä kirjoittaa, meillä on enemmän viivettä pakettien välillä. Yleisesti ottaen emme voi tietää milloin käyttäjä näppäilee, joten täytyy profiloida jatkuvasti saadaksemme ajoitukset kohdil- leen. Joten, meidän rakennettava hieman kehittyneempi järjestely. Se on periaat- tessa kaksi-vaiheinen järjestely, joka koostuu verkkotrackerista, joka vain seuraa useita välimuistirivejä jatkuvasti. Ja kun se huomaa tietyn muistirivin tulevan aktiiviseksi, se siirtää sen ikkunan eteenpäin seuraavaan kohtaan, jossa se arvaa aktivoinnin tapahtuvan. Tämä onnistuu, koska meillä on etu nopeudessa. Meidän on profiloitava paljon nopeammin kuin SSH-istunnon verkkopaketit saapuvat. Tässä vasemmalla voitte nähdä kuvituksen siitä, mitä verkkotrackeri tekee. Se vain profiloi tätä ikkunaa, joka näkyy punaisella. Jos katsotte tarkasti, voitte nähdä kirkkaamman kohdan keskellä, joka tarkoittaa saapuneitta verkkopaketteja. Voitte myös nähdä, että siellä on paljon kohinaa mukana ja siksi emme voi suoraan saada pakettien saapumisaikoja siitä. Siksi tarvitsemme toisen vaiheen. Offline poimijan. Offline poimija vastaa todennäköisimpien tapahtumien laskennasta, joissa tekijänä on käyttäjän SSH-paketti. Se käyttää verkkotrackerin keräämää dataa ja rengaspuskurin ennustettavuutta. Sitten se esittää pakettien saapumisien väliajat eri sanoille kuten tässä oikealla. Hienoa. Nyt olemme jälleen tilanteessa, jossa meillä on pelkät saapumisajat muttei sanoja, joita me tarvitsemme rikkoaksemme SSH-istunnon luottamuksellisuuden. Kuten totesin aiemmin, käyttäjillä tai oikeastaan ihmisillä on omalaatuinen kirjoitustapa. Ja sen avulla me onnis- tuimme tilastollisessa hyökkäyksessä. Lähemmin tarkasteltuna käytämme kone- oppimista ja kartoitusta käyttäjien kirjotustyylien ja oikeiden sanojen välillä. Lopulta voimme todeta ne kaksi sanaa, jotka kirjoitit SSH-istunnossasi. Käytimme 20:tä kohdehenkilöä, jotka kirjoittivat vapaasti ja käsikirjoituksen mukaan ja saimme 4574 uniikkia sanaa. Ja jokainen niistä edusti pistettä moniulotteisessa tilassa. Ja käytimme todella yksinkertaista koneoppimistekniikkaa, kuten "k-nearest neighbour" algoritmia, joka luokittelee mittauksia Euklidisen tilan kannalta muihin sanoihin. Syy, miksi käytimme hyvin yksinkertaista koneoppialgoritmia oli se, että halusimme vain todistaa, että signaalin, jota yritimme ottaa talteen välimuistista olisi oikeasti kyllin vahva hyökkäyksen toteuttamiseksi. Emme halunneet yleisesti parantaa tällaista käyttäjien ja kirjoittamiskäytöksen välistä kartoitusta. Katsotaanpa miten tämä onnistui! Eli aluksi, tässä vasemmalla näette meidän käyttäneen luokittelua puhtaalle näppäilydatalle. Tarkoittaa, että käytimme vain kirjoituksen aikana lähetet- tyä signaalia. Eli kun painalluksia tehtiin paikallisella näppäimistöllä. Tämä antaa täydellistä ja tarkkaa aikadataa. Voimme nähdä, että tämä on aika vaikeaa käyttää. Tarkkuudeksi saamme karkeasti 35%. Mutta, jos katsomme kor- keinta 10:tä prosenttia, joka tarkoittaa, että hyökkääjä arvaa kymmenen sanaa ja oikea sana kuuluu joukkoon, sitten sen todetaan olevan tarkka. Ja kymmenellä parhaalla arvauksella saamme tarkkuudeksi 58%. Tämä on vain puhdasta näppäily- dataa. Sitten käytimme samaa dataa ja samaa luokittelua verkon yli tulevaan signaaliin. Tämä ei tietenkään ole yhtä tarkkaa, koska siinä on kohinaa ja voimme lisätä tai kadottaa näppäinpainalluksia. Tarkkuus on karkeasti 11% vähemmän ja parhaan 10:n tarkkuus karkeasti 60%. Kun käytimme yksinkertaista koneoppimista, useita koehenkilöitä ja suhteellisen laajaa sanakirjastoa, uskomme pystyvämme todistamaan, että signaali on kyllin vahva toteuttaaksemme hyökkäyksen. Tietenkin haluamme nähdä tämän nyt toiminnassa, eikö? Koska olen hieman hermostunut täällä lavalla, en näytä livedemoa koska se vaatisi, että kirjoittaisin itse ja se varmaankin sekoittaisi minua ja tietenkin koneoppimismallia. Siksipä toin mukanani videon. Tässä oikealla näette uhrin. Se aloittaa kohta SSH-istunnon. Ja vasemmalla puolella näette hyökkääjän. Alalaidassa näätte verkkotrakkerin ja ylälaidassa näätte poimijan, sekä toivottavasti ennustetut sanat. Nyt uhri aloittaa SSH-istunnon palvelimeen nimeltä "father". Ja hyök- kääjä, joka käyttää konetta "son" aloittaa hyökkäyksen. Näitte, että profi- loimme rengaspuskurin kohdan ja nyt uhri alkaa kirjoittaa. Ja koska tällä jär- jestelyllä kestää hieman käsitellä sanat ja tehdä oikea ennustus, näette kohta, että pikkuhiljaa sanat alkavat muodostumaan oikeaan -toivottavasti oikeaan- järjestykseen. Kuten näette, voimme arvata oikeat sanat verkon yli vain lähettämällä verkkopaketteja samaan palvelimeen. Ja näin saamme tärkeän informaation kun sen SSH- paketit saapuvat. (aplodeja) Nyt varmaan kysyt itseltäsi: Miten tältä hyökkäykseltä suojaudutaan? Noh, onneksi tämä koskee vain palvelintason prosessoreja, eli ei asiakkaita tai muita. Mutta meidän mielestämme oikea suo- jautuminen tällä hetkellä on DDIO:n poistaminen tai ettei käytä RDMA:ta. Molemmat vaikuttavat suorituskykyyn paljonkin. DDIO:n kohdalla puhutaan karkeasti 10-18% vähemmän suori- tuskykyä riippuen tietenkin ohjelmistosta. Ja, jos päätät olla käyttämättä RDMA:ta, joudut varmaankin uudelleenkirjoittamaan koko ohjelmasi. Intel kertoi asian hieman toisin tiedoksiannon julkaisussaan. Lukekaapa itse! "Epäluotettavan verkon" määritelmä voi varmaankin olla hieman kyseenalainen. No joo. Sillä mennään. Olen todella ylpeä, että meidät hyväksyttiin Security and Privacy 2020:een. Myös Intel tunnusti löydöksemme, julkistustilaisuus oli syyskuussa, ja saimme myös rahapalkinnon. (yksittäinen huuto katsomossa) (naurua) Oheislaitteiden lisääntynyt suorituskyky on pakottanut Intelin asettamaan LLC:n nopeisiin I/O polkuihin prosessoreissa. Ja näin on paljastunut yhä enemmän mikroarkkitehtuurikomponentteja, joiden tunnistamme vaikuttavan suoraan turvalli- suuteen. Tutkimuksemme on ensimmäinen DDIO sivukanavahaavoittuvuus, mutta uskom- me raapaisseemme tässä vain pintaa. Muistakaa, että niihin liittyy monia PCIe- laitteita! Joten siellä voi olla muistilaitteita - voitaisiin profiloida välimuistin toimintaa muistilaitteissa! On olemassa jopa GPUDirect, joka antaa pääsyn GPU:n välimuistiin. Mutta se onkin jo toinen tarina. Eli näin. Luulen, että aiheessa on paljon löydettävää eli pysykää kuulolla! Totean enää vain, että iso kiitos kaikille ja tietenkin kaikille vapaaehtoisille täällä konferenssissa. Kiitos! (aplodeja) Juontaja: Kiitos, Michael! Meillä on aikaa kysymyksille. Eli voitte muodostaa jonoa mikrofoneille. Ja näenkin jonkun mikrofonilla seitsemän! Kysymys: Kiitos esityksestä! Minulla on kysymys - kun työskentelen verkon yli SSH:ta käyttämällä, en kovinkaan usein käytä noin helppoja sanoja, mutta yleensä se on jotain omituisempaa, kuten valuuttamerkkejä, viivoja ja jotain. Oletteko tutkineet myös sitä? Michael: No, veikkaan ... Tarkoitan tietenkin mitä olisimme halunneet näyttää, oli se, että miten vuodetaan salasanoja, eikö? Jos kirjottaisit vaikka "sudo". Salasanojen kohdalla kyseessä on omanlaisensa dynamiikka. Painat näppäintä... kirjoitat salasanan eri tavoin kuin normaalisti avainsanoja. Ja sitten se muuttuu vaikeammaksi, kun halutaan tutkia laajemmin kuinka käyttäjät kirjoit- tavat salasanoja, täytyy joko kysyä heidän oikeita salasanoja -joka ei ole kovin eettistä- tai opettaa heille erilaisia salasanoja. Ja sekin on vaikeaa, koska he voivat omaksua erilaisen tyylin kuinka kirjoittavat salasanoja ennemmin kuin ne olisivat oikeita salasanoja. Ja tietenkin sama olisi kyseessä yleisesti komentojen kohdalla, eikä meillä ollut käytössä sanavarastoa totuttaaksemme sellaista hyökkäystä. Juontaja: Kiitos! Mikrofoni yksi! K: Terve. Kiitos esityksestä! Haluaisin kysyä: Alkuperäinen SSH-aikoja käsittelevä tutkimus on vuodelta 2001? Michael: Kyllä, totta. Todellakin! K: Onko sinulla käsitystä miksi ei ole kiertotapaa SSH-asiakkaan puolella lisäämällä "pehmustetta" tai satunnaista viivettä tai jotain vastaavaa? Tiedätkö miksi tällaista ei ole toteutettu? Onko se jonkin teknisen rajoitteen takia vai mikä on kyseessä? Michael: Pelkäsimme, että 2001 ja tämän päivän välissä tapahtui jotain lisäyksiä jonkun viiveen tai jonkun muun suhteen. En ole varma, onko kyse vain vaihtokaupasta SSH-istunnon inter- aktiivisuudessa vai onko jotain todellista syytä tälle. Mutta tiedän, että on usein kovin vaikeaa lisätä keinotekoisia paketteja väliin. Koska, jos ei ole satunnaista ollenkaan, ei voitaisi edes suodattaa lisättyjä paketteja, jotka lisättiin SSH:n toimesta. Mitään muita syytä en tiedä, miksi he eivät sopeutuneet, tai miksi he eivät tutkineet tätä. Juontaja: Kiitos! Mikrofoni neljä. K: Kuinka paljon nojaatte kirjoittajien taitoihin? Mielestäni käyttäjän, kenen on etsittävä näppäimiä näppäimistöstä tai jonkun, joka tulee häirityksi kirjoittaessaan, ei ole mitään oikeaa kirjoitusmallia. Michael: Me oikeastaan luotamme täysin siihen, että mallin on oltava pelkistettävä. Kuten sanoin: Käytimme vain hyvin yksin- kertaista koneoppimisalgoritmia joka vain katselee edellisen sanan Euklidista etäisyyttä verrattuna uuteen sanaan tai uuteen saapumisaikaan, joka huomattiin. Jos se on täysin eriävä, tarkkuus laskee. Juontaja: Kiitos! Mikrofoni kahdeksan! K: Jatkokysymyksenä edelliseen. Eikö tämä tee siitä kohdistetun hyökkäyksen, koska täytyy opettaa koneoppimis- algoritmi tarkasti sille henkilölle, jolta data halutaan vuotaa? Michael: Kyllä. Tavoitteemme tutkimukselle ei ollut muodostaa seuraavan luokan koneoppimistunnistusta eri kirjoitustavoille. Me käytimme tosiasiallisesti informaatiota, jota käyttäjä kirjoitti, jotta profilointi muodostuisi oikein. Uskon silti, että voidaan ehkä yleistää. Toinen tutkimus osoittaa, että voidaan luokitella käyttäjät eri tyylisiin kirjoittajiin ja jos muistan oikein, he keksivät, että voidaan jokainen henkilö voidaan luokitella 7:ään eri luokkaan. Tiedän myös, että on olemassa verkko- trakkereita, jotka seuraavat kirjoitustyyliäsi uudelleen identifioidakseen sinut. Tavoitteena vain tarjota sinulle kohdistettuja mainoksia. Mutta silti, tarkoitan, että emme halunneet mennä niin syvälle kehittääksemme tätä koko juttua. Juontaja: Kiitos! Ja otamme seuraavan kysymyksen Internetin puolelta. Signal angel: Kokeilitteko tätä koskaan korkean viiveen verkossa kuten internetissä? Michael: Tietenkin tukeudumme - sanotaan vaikka- jatkuvaan viiveeseen. Koska muuten se periaatteessa pilaisi aikautetun hyökkäyksemme. Kuten puhuimme RDMA:sta, sitä käytetään datakeskuksissa. Testasimme myös datakeskusmaisia topologioita. Se tekisi tästä luultavasti kovinkin haasteellista, joka tarkoittaa että pitäisi tehdä paljon toistoja, joka on oikeastaan huono asia, koska emme voi sanoa käyttäjille: "voisitteko kirjoittaa sen uudelleen koska se on profiloitava uudelleen", eikö? Joten vastaus on: Ei. Juontaja: Kiitos! Mikki yksi, kiitos. K: Jos uhri liittää jotain SSH-istuntoon. Voitaisiinko hyökkäys toteuttaa silloin onnistuneesti? Michael: Ei. Jos liität jonkin jutun, se lähetetään tunnuksena kun painetaan enter. K: Okei, kiitos! Juontaja: Kiitos! Enkelit kertovat, että mikrofonin kuusi takana on henkilö, jota en ollenkaan voi nähdä valaistuksen takia. K: Jos ymmärsin oikein, hyökkääjä voi nähdä, että jokin paketti saapui heidän NIC:iin. Jos menossa on toinenkin SSH-istunto samaan aikaan kohteena olevassa koneessa, häiritseekö se hyökkäystä? Michael: Kyllä, täysin! Edes SSH-pakettien erottaminen normaalista verkkopaketeista on haastavaa. Joten käytämme tässä heuristiikkaa, koska SSH-paketteja lähtee aina kaksi peräkkäin. Eli ei vain yksi, vaan kaksi. Jätin tämän kohdan pois yksin- kertaistaakseni esitystä. Tukeudumme myös tällaiseen heuristiikkaan suodattaaksemme SSH-paketteja. Ja jos olisi toinenkin SSH-istunto, voisin kuvitella, että se onnistuisi ollenkaan... eli emme voi erottaa kumman SSH-istunto oli kyseessä. Juontaja: Kiitos. Mikki seitsemän taas! K: Mainitsit, että käytitte aina kahta yhdistäjää, kuten- mitä ne olivatkaan? NIC? Michael: Kyllä, juuri niin. K: Täytyykö niiden olla kaksi eri osaa? Voisivatko ne olla sama? Vai miten se toimii? Michael: Järjestelyssämme käytimme yhtä NIC:iä, joka kykeni tekemään RDMA:ta. Meidän tapauksessa, se oli Fabric eli IinfiniBand. Ja toinen niistä oli tavallinen ethernet-yhteys. K: Mutta voisivatko ne olla samassa tai voisiko molemmat olla InfiniBand esimerkiksi? Michael: Kyllä. Tarkoitan, että InfiniBand ei käytä rengaspuskuria joten meidän tulisi keksiä jokin toinen seuraamistapa jotta saisimme sen. Siitä voisi muodostua vieläkin monimutkaisempaa, koska se ohittaa Kernelin. Mutta, jos olisi olemassa ennustettava kaava, voisimme ehkä tehdä sen. Juontaja: Kiitos. Mikki yksi? K: Terve taas! Haluaisin kysyä, tiedän ettei pääkohteenne ollut tutkimuksesi, mutta onko sinulla arviota, siitä kuinka käytännöllinen tämä hyökkäys on? Kuten, jos teette tosi elämän simulaation ettekä valmisteltua? Kuinka iso ongelma se voisi olla? Mitä uskoisit, mikä on tämän alan huippu? Miltä tällainen riski tuntuu? Michael: Viittaa ilmeisesti vain näppäinhyökkäykseen, eikö? K: Aikautushyökkäykseen. SSH aikoihin. Ei välttämättä välimuistiin liittyvään. Michael: Alkuperäinen tutkimus on ollut esillä vuodesta 2001. Ja sen jälkeen moni tutkija on osoittanut, näppäinhyökkäyksen mahdolliseksi erilaisissa skenaarioissa, esimerkiksi JavaScripti on yksi. Se on aina hieman haastavaa arvioida, koska eri tutkijat käyttävät erilaisia datasettejä, joten niitä ei voida vertailla. Yleisesti ottaen, olemme käyttäneet Melko suurta sanavarastoa ja se toimi silti. Ei kovin tarkasti, mutta se toimi silti. Joten, kyllä. Luulen, että se on mahdollista. Mutta ollakseen oikea hyökkäys, jossa hyökkääjä tavoittelee korkeaa tarkkuutta, tarvittaisiin varmaankin paljon dataa ja siltikin kehittyneempiä tekniikoita. Joita on kuitenkin olemassa. On olemassa pari erilaista koneoppimis- tekniikkaa, joita voitaisiin käyttää, joilla on eri hyödyt ja haitat. K: Kiitos. Juontaja: Kiitos! Naiset ja herrat! Mies, joka nimesi hyökkäyksen "netCAT": Michael Kurth! Annetaan hänelle isot aplodit, olkaa hyvä! (aplodeja) Michael: Kiitos paljon! ♪ (36C3 outromusiikki) ♪ Translated by Lauri Lyytinen (ITKST56 course assignment at JYU.FI) Subtitles created by c3subtitles.de in the year 2021. Join, and help us!