< Return to Video

#rC3 - Ramming Enclave Gates: A Systematic Vulnerability Assessment of TEE Shielding Runtimes

  • 0:00 - 0:11
    [Translated by Kari Kananoja (ITKST56 course assignment at JYU.FI)] Alkumusiikkia
  • 0:12 - 0:18
    Seuraavassa keskustelussamme on mukana Jo Van Bulk ja Fritz Adler
    belgialaisesta Leuvenin
  • 0:18 - 0:25
    yliopistosta ja David Oswald, kyberturvallisuuden
    professori Birminghamista.
  • 0:25 - 0:30
    He ovat täällä keskustelemassa luotetusta toiminto/ajoympäristöstä (TEE)
    (laitteen eristetty prosessorin osa, johon esim. laitteen käyttöjärjestelmällä ei ole pääsyä).
  • 0:30 - 0:36
    Tiedättekin varmasti Intelin ja vastaavien perusteella, että siihen eli luultavasti pitäisi luottaa lainkaan,
  • 0:36 - 0:42
    koska se on ohjelmoitua ja siinä on virheensä. Niinpä he puhuvatkin nyt
  • 0:42 - 0:48
    prosessorin enklaaviportteihin iskemisestä,
    mikä on aina hyvä, järjestelmällisen haavoittuvuuden
  • 0:48 - 0:52
    arviointikohde TEEn suojauksessa. Olkaa hyvät ja jatkakaa.
  • 0:52 - 0:59
    Hei kaikille. Tervetuloa mukaan keskusteluun. Olen Jo, imec-DistriNet
  • 0:59 - 1:03
    tutkimusryhmän perustaja Leuvenin yliopistolla.
    Ja tänään mukana on myös Fritz, myös Leuvenista
  • 1:03 - 1:07
    ja David Birminghamin yliopistosta. Meillä on tämä hyvin kiinnostava
  • 1:07 - 1:11
    aihe keskusteltavana, enklaaviportteihin iskeminen. Mutta ennen kuin syvennymme siihen,
  • 1:11 - 1:16
    uskon että suurin osa teistä
    ei tiedä mitä ovat enklaavit, tai yleensä TEEt
  • 1:16 - 1:24
    Joten aloitankin tässä analogialla. Enklaavit ovat eräänlaisia
  • 1:24 - 1:30
    turvallisuuslinnakkeita prosessoreissa, CPUissa.
    Se on siis kryptattu muistialue,
  • 1:30 - 1:37
    johon on pääsy vain TEEn sisäpuolelta. Mitä tiedämme
  • 1:37 - 1:42
    linnoitusten puolustautumisen ja niihin hyökkäysten historiasta, kun et
  • 1:42 - 1:47
    pääse linnoitukseen koska seinät ovat korkeita ja paksuja. parasta onkin suunnata porteille.
  • 1:47 - 1:51
    Se on linnoituksen heikoin kohta. Ja se on
  • 1:51 - 1:57
    tämän aiheemme idea. Se siis pätee myös enklaaveihin. Me olemme
  • 1:57 - 2:02
    iskeneet enklaavien portteihin, olemme hyökänneet syöte- ja tulosterajapintoihin.
  • 2:02 - 2:08
    Siis hyvin yksinkertainen idea, mutta dramaattiset vaikutukset, sanoisin.
  • 2:08 - 2:15
    Tämä on siis jonkinlainen päätelmä tutkimuksistamme. 40 rajapinnan
  • 2:15 - 2:20
    huoltoon liittyvää
    haavoittuvuutta jotka löysimme kahdeksassa paljon käytetyssä openvapaan lähdekoodin
  • 2:20 - 2:27
    projektissa. Menemme tähän hiukan syvemmälle lopuissa dioissa.
  • 2:27 - 2:32
    On mukavaa sanoa, että
    se on johtanut kahteen akateemiseen julkaisuun,
  • 2:32 - 2:39
    enemmän kuin 7 CVE-tietoon ja
    kokonaisuudessaan melko hallittuun loppuun käsittelyyn ja
  • 2:39 - 2:46
    pitkiin käytön rajoituksiin.
    OK, Meidän täytynee
  • 2:46 - 2:55
    keskustella miksi me yleensä tarvitsemme moisia enklaavi linnoituksia.
    Jos mietitään
  • 2:55 - 3:00
    Jos mietitään perinteistä käyttöjärjestelmä-tai tietokonearkkitehtuuria, siinä on
  • 3:00 - 3:06
    käytössä
    hyvin laaja luotettu toimintoperusta. Esimerkiksi, jos katselet tätä keskustelua esim. kannettavalta
  • 3:06 - 3:12
    luotat kerneliin,
    luotat ehkä
  • 3:12 - 3:17
    virtuaalikoneeseen jos sinulla on koko ympäristö toteutettuna: CPU,
  • 3:17 - 3:23
    muisti, ehkä kovalevy
    ja niin edelleen. Toisin sanoen
  • 3:23 - 3:29
    ongelma on tällaisen laajan luotetun ympäristön kanssa se, että myös
  • 3:29 - 3:36
    haavoittuvuuksia voi olla
    kaikkialla. Ja myös haittaohjelmia piiloutuneena missä tahansa osassa.
  • 3:36 - 3:42
    Enklaavissa ajamisen ideana on siis, esimerkiksi Intel SQX:ssä,
  • 3:42 - 3:48
    yhdessä viimeisimmistä Intelin prosessoreista,
    että voit ottaa
  • 3:48 - 3:54
    varsinaisen sovelluksen ohjelmistopinon osan suoritettavaksi enklaavin
  • 3:54 - 4:01
    ulos koko koneen
    luotetusta ympäristöstä. Nyt sinun tarvitsee luottaa ainoastaan CPU:hun ja tietenkin
  • 4:01 - 4:05
    omaan koodiisi, mutta itse
    käyttöjärjestelmään ei enää tarvitse luottaa. SGX
  • 4:05 - 4:10
    esimerkiksi lupaa suojella toimintoa hyökkääjältä, joka on saanut
    haltuunsa pääkäyttäjän tiedot.
  • 4:10 - 4:15
    Ja riippuen myös siitä, ketä vastaan olet puolustautumassa, esimerkiksi,
  • 4:15 - 4:21
    haitallisten pilvipalveluiden toimittajilta. Joten ajattelepa, että voit ajaa applikaatiota pilvessä
  • 4:21 - 4:27
    ja voit silti ajaa koodiasi luotettavasti laitteistotason
    eristyksellä.
  • 4:27 - 4:31
    Ja sinulla on myös todisteet siitä. Eikä enää tarvitse luottaa edes
  • 4:31 - 4:41
    pääkäyttäjään. Näin ollen ongelma on tietenkin, että hyökkäyspinta
  • 4:41 - 4:47
    säilyy. Niinpä ainakin osa aiemmista hyökkäyksistä, joita
    esitellään tässäkin
  • 4:47 - 4:52
    etäkongressissa tänä vuonna, on suuntautunut CPU:n
  • 4:52 - 4:59
    mikroarkkitehtuuria kohtaan.Eli hyökätään
    periaatteessa laitetasolle. Teillä oli
  • 4:59 - 5:06
    oli siis ennakointia, mikroarkkitehturaalista tiedon keruuta, haamuja, ladatun
    arvon injektointia jne.
  • 5:06 - 5:10
    Mutta mihin on vähemmän kiinnitetty huomiota ja mihin kiinnitämme enemmän huomiota tässä
  • 5:10 - 5:17
    huomiota tässä esittelyssä, on ohjelmistotaso
    enklaavin sisällä. Siellä on viitattu olevan
  • 5:17 - 5:22
    luotettua koodia. Mutta nyt voidaankin katsoa tarkemmin,
  • 5:22 - 5:30
    mitä enklaavin
    sisällä on. Nyt ohjelmistonäkökulmasta. Siis voiko
  • 5:30 - 5:34
    hyökkääjä hyväksikäyttää mitään perinteistä
    ohjelmistohaavoittuvuutta enklaavissa?
  • 5:36 - 5:41
    Kyllä, David. Tämä on mielenkiintoinen näkökulma, eikö totta? Puhutaanpa siis
  • 5:41 - 5:45
    ohjelmistoista. Meidän täytyy ymmärtää mikä on ohjelmistoympäristö näille
  • 5:45 - 5:50
    SGX enklaaveille ja
    luotetuille ajoympäristöille yleisesti. Ja tätä me selvitimme. Aloitimme
  • 5:50 - 5:54
    analysoinnilla ja tässä muutamia
    kuvakaappauksia. Tämä on itse asiassa kasvava
  • 5:54 - 5:59
    vapaan lähdekoodin ekosysteemi, monia ajo-ohjelmistoja,
    kirjastokäyttöjärjestelmiä ja ohjelmistokehitysympäristöjä.
  • 5:59 - 6:04
    Ja ennen kuin menemme syvemmälle, haluan painottaa, että mikä on yhteinen tekijä
  • 6:04 - 6:10
    joka kaikkia näitä yhdistää?
    Mikä on näiden ympäristöjen alkuperäinen ajatus ja idea?
  • 6:10 - 6:17
    Mikä tahansa TEE, luotettu ajoympäristö,
  • 6:17 - 6:22
    antaa käsityksen
    siitä, mikä on turvallinen suojapaikka vihamielisessä
  • 6:22 - 6:27
    ympäristössä. Ja voit suorittaa toimintoja suojatussa osiossa
    kun
  • 6:27 - 6:33
    ympäröivä maailma palaa. Minkä tahansa suojausmekanismin kohdalla, kuten jo aiemmin mainitsin,
  • 6:33 - 6:38
    paholainen piilee
    yksityiskohdissa ja tyypillisesti portilla, eikö totta? Miten siis välität tietoa
  • 6:38 - 6:43
    tämän epäluotettavan maailman joka palaa, ja enklaavissa olevan turvapaikan välillä?
  • 6:43 - 6:48
    Ja
    intuitio kertoo, että että tarvitset jonkinlaisen välillä olevan ohjelmistokerroksen,
  • 6:48 - 6:53
    jota kutsumme suojaustasoksi.
    Se tekee tavallaan turvallisen
  • 6:53 - 6:58
    sillan liikkua ympäristöstä toiseen. Ja siitä
  • 6:58 - 7:04
    olemme kiinnostuneita. Nähdäksemme, millaisia tarkistuksia siellä tarvitaan.
  • 7:04 - 7:08
    Sinulla on melko kaunis kuva asiasta, toisaalla hedelmällinen enklaavi ja
  • 7:08 - 7:14
    toisaalla vihamielinen aavikko. Ja tähän
    tehdään turvallinen silta väliin. Ja mistä
  • 7:14 - 7:20
    olemme kiinnostuneita, kun jokin menee vikaan? Mitä jos sinun siltasi onkin viallinen?
  • 7:20 - 7:26
    Vastataksemme kysymykseen, katsotaan sitä välissä olevaa laatikkoa ja kysytään,
  • 7:26 - 7:30
    millaista ylläpitoa ja millaisia tarkistuksia täytyy olla jotta edestakainen
  • 7:30 - 7:35
    liikenne on mahdollista?
    Ja yksi
  • 7:35 - 7:39
    pääasiallisista tuloksistamme, joita olemme saavuttaneet tämän tutkimuksen kahtena viimeisenä vuotena, on mielestäni
  • 7:39 - 7:46
    että tuo välilaatikko voidaan jakaa kahteen alemman tason kerrokseen.
  • 7:46 - 7:51
    Näistä ensimmäinen on ABI, sovelluksen binäärirajapinta, hyvin alhainen CPUn tila. Ja
  • 7:51 - 7:55
    toinen on mitä kutsumme APIksi,
    sovelluksen ohjelmointirajapinta.
  • 7:55 - 7:58
    Tuo tila tai vaiheet on jo nähtävissä ohjelmointikielissä. Kuten
  • 7:58 - 8:02
    esittelyssä mainittiin, me tavallaan ohjaamme teidät
    läpi molempiin tasoihin asiaankuuluvien
  • 8:02 - 8:06
    haavoittuvuuksien avulla, jotta ymmärrettäisiin mitä tämä tarkoittaa.
  • 8:06 - 8:12
    Ensiksi Fritz ohjaa teidät mielenkiintoiseen ABI-tason alempaan toimintakenttään.
  • 8:12 - 8:15
    Kyllä vaan. Ja kuten Jo jo mainitsitkin,
  • 8:15 - 8:22
    se on CPUn tila ja sovelluksen binäärirajapinta. Mutta katsotaanpa
  • 8:22 - 8:27
    hiukan mistä puhutaan. Periaatteessa se tarkoittaa sitä, että hyökkääjä
  • 8:27 - 8:39
    hallitsee CPUn rekistereiden sisältöä....Jokaisella enklaavin sisään- ja ulostulolla
  • 8:39 - 8:46
    täytyy suorittaa tehtäviä. Eli enklaavilla ja
  • 8:46 - 8:57
    luotetulla ajoympäristöllä
    on tietty CPU vaihe ja kääntäjä voi
  • 8:57 - 9:03
    työskennellä niiden kutsujen kanssa, joita se odottaa. Nämä ovat siis avainosia.
  • 9:03 - 9:09
    Meidän täytyy alustaa CPU rekisterit enklaaviin saapuessamme ja
  • 9:09 - 9:16
    siivota ne poistuessamme. emme voi siis olettaa mitään
  • 9:16 - 9:21
    hyökkääjän meille antamaa annetuksi. Meidän täytyy alustaa se joksikin kunnolliseksi ja käytettäväksi.
  • 9:21 - 9:30
    Tutkimme useita TEE ajoympäristöjä ja löysimme paljon
  • 9:30 - 9:38
    haavoittuvuuksia tältä ABI kerrokselta. Ja yksi tämän tutkimuksen
    pääoivalluksista onkin se
  • 9:38 - 9:45
    että monet näistä haavoittuvuuksista sijoittuu monimutkaisien ohjesarjojen prosessoreihin,
  • 9:45 - 9:52
    siis CISC ja SGT TEE:issä. Tutkimme myös joitain
  • 9:52 - 9:58
    RISC prosessoreita, ja vaikka ei pidä yleistää, niin on heti huomattavissa,
  • 9:58 - 10:06
    että monimutkaisella x86 ABIlla on huomattavasti suurempi
  • 10:06 - 10:14
    hyökkäyspinta-ala kuin yksinkertaisemmissa
    RISC arkkitehtuureissa. Katsotaanpa yhtä esimerkkiä tästä
  • 10:14 - 10:20
    monimutkaisesta arkkitehtuurista.
    Esimerkiksi x86:ssa merkkijono ohjeistus,
  • 10:20 - 10:27
    jota säätelevät suuntaliput. X86:ssa on erityinen ohjeistus, joka
  • 10:27 - 10:33
    periaatteessa mahdollistaa striimatut muistitoiminnot. Jos bufferiin
  • 10:33 - 10:41
    tehdään muistin käsittelyyn toimintosarja, se käännetään merkkijonon toiminto-ohjeeksi.
  • 10:41 - 10:51
    Merkkijono siis luetaan vasemmalta oikealle ja ylikirjoitetaan
  • 10:51 - 10:57
    muistin käsittelysarjan toiminnolla. Mutta tuo lippu mahdollistaa myös käsittelyn päinvastoin,
  • 10:57 - 11:03
    takaperin. Ei ajatella sitä miksi tämä oli hyvä ajatus tai mihin sitä
  • 11:03 - 11:09
    tarvitaan. Mutta varmasti on siis mahdollisuus kääntää lippu toiseen asentoon ja lukea
  • 11:09 - 11:16
    bufferin sisältö takaperin. Ja mitä me
    huomasimme: System-V ABIn mukaan
  • 11:16 - 11:21
    tämä lippu täytyy olla asettamatta tai olla asetettu eteenpäin(vasemmalta oikealle).
  • 11:21 - 11:27
    Ja kääntäjä olettaa tämän olevan näin. Katsotaanpa kuinka tämä tapahtuu
  • 11:27 - 11:34
    enklaavissa. Jos ajamme tämän enklaavin sisällä, luotetussa ympäristössä
  • 11:34 - 11:40
    normaalilla syötteellä normaalilla
  • 11:40 - 11:45
    normaalilla lipulla, voimme nähdä, että ajo
  • 11:45 - 11:52
    tapahtuu aivan oletetusti oikein päin. Jos hyökkääjä kuitenkin pääsee
  • 11:52 - 11:59
    ja muuttaa lippuasetuksen toiseksi,
  • 11:59 - 12:06
    ja pointerin kohdasta riippuen näemme ajon nyt menevän takaisinpäin luennassa.
  • 12:06 - 12:11
    Siinä on ongelma. ja sitä emme selvästikään
  • 12:11 - 12:16
    halua tapahtuvan luotetussa sovelluksessamme, koska
  • 12:16 - 12:23
    koska kuten voitte kuvitella,
    se mahdollistaa niiden avainten ylikirjoittamisen,
  • 12:23 - 12:27
    jotka ovat muistipaikassa, jossa voit lukea takaperin.
  • 12:27 - 12:33
    Se mahdollistaa tiedon ulosluvun eikä se ole hyödyllistä. Kun saimme tämän raportoitua, se
  • 12:33 - 12:39
    johti CVE:n syntymiseen korkealla score-arvolla, kuten näette seuraavalla dialla.
  • 12:39 - 12:47
    Ja se on vain yksi instanssi. Täytyyhän tässä ajatella nyt
  • 12:47 - 12:54
    kaikkia lippuasetuksia joita täytyy ylläpitää ja tarkistaa. Mutta, tietenkin
  • 12:54 - 13:03
    on aina vielä jotain muutakin, eikö totta?
    Huomasimme myös,
  • 13:03 - 13:07
    että FPU:ssa (matemaattisten toimintojen osaprosessointi) on paljon muita rekistereitä ja paljon
    muita
  • 13:07 - 13:17
    haavoittuvuuksia hyväksikäytettävänä. Enkä mene nyt yksityiskohtiin. Mutta tähän nyt
  • 13:17 - 13:26
    vielä lisäksi, on olemassa
    vanhempi x86 ja ja uudempi SSE
  • 13:26 - 13:32
    jotka suorittavat liukulukulaskentaa.
    Eli on olemassa FPU ohjaussana ja MXCSR
  • 13:32 - 13:40
    rekisteri näitä uudempia ohjeita varten. Ja tämä x86 on vanhempi, mutta sitä yhä käytetään
  • 13:40 - 13:46
    esim. pitkien double muuttujien laskennassa. Eli ikä ei
  • 13:46 - 13:49
    tässä kohtaa ole määrittelevää, koska niin vanha kuin uusikin on tässä tapauksessa yhä ajankohtaisia.
  • 13:49 - 13:58
    X86 ja x87 ovat yhä olemassa ja se että voitaisiin sanoa että vanhat muinaiset jotka ovat
  • 13:58 - 14:03
    vanhentuneita, ovatkin yhä
    käytössä ja siten huomioitava. Jos katsotaan
  • 14:03 - 14:09
    System-V ABIa, huomasimme että nämä ohjausbitit ovat kutsujatallenteisia.
    Niitä siis
  • 14:09 - 14:14
    säilytetään läpi funktiokutsujen.
    Ja ideanahan on, mitä pidetään jossain määrin saavutuksena,
  • 14:14 - 14:22
    että nämä ovat globaaleja tiloja, niitä välitetään
  • 14:22 - 14:28
    koko sovellukselle. Yksi sovellus voi siis asettaa arvon
  • 14:28 - 14:35
    ja se pysyy läpi niiden käyttöajan.
    Mutta ongelma on, kuten näette
  • 14:35 - 14:40
    on että sovelluksemme tai enklaavimme on periaatteessa yksi sovelluskokonaisuus, emmekä todellakaan halua
  • 14:40 - 14:44
    hyökkääjän ottavan haltuunsa luotettua sovellustamme, eikö totta?
  • 14:44 - 14:53
    Mitä siis tapahtuu jos FPU asetukset säilytetään eri kutsujen ajan?
  • 14:53 - 14:58
    Sanotaanko että normaalikäyttäjälle, teemme laskentaa enklaavissa. Kuten
  • 14:58 - 15:03
    2.1 kertaa 3.4 on 7.14, mikä on tyyppinä pitkä double.
  • 15:03 - 15:10
    Tämä on OK? Mutta mitä tapahtuu jos hyökkääjä saapuu enklaaviin
  • 15:10 - 15:16
    mukanaan saastutettuja määritelmiä FPU:lle? Saamme vääristyneitä
  • 15:16 - 15:22
    tuloksia ja huonommalla tarkkuudella.
  • 15:22 - 15:26
    Itse asiassa tässä se pyöristää alaspäin, aina kun
  • 15:26 - 15:31
    tulos ylittää tarkkuuden. Ja sitähän emme halua? Tämä on jotain,
  • 15:31 - 15:38
    missä kehittäjä odottaa tiettyä tarkkuutta tai pitkän doublen tarkkuutta,
  • 15:38 - 15:44
    mutta hyökkääjä itse asiassa
    supistaa tulosta ja sen tarkkuutta.
  • 15:44 - 15:50
    Raportoimme tästä ja itse asiassa löysimme tämän aiheen myös Microsoft OpenEnclavesta. Siksi
  • 15:50 - 15:56
    tätä ei ole merkitty hyväksikäytön mahdollisuudeksi. Mutta mitä huomioimme mielenkiintoisena kohtana on, että Intel
  • 15:56 - 16:01
    SGX SDK, joka oli haavoittuvainen, korjasi tämän xrstore
    ohjeella.
  • 16:01 - 16:10
    Tämä säilyttää täysin tilan tiettynä arvona, kun taas OpenEnclave
  • 16:10 - 16:16
    säilytti vain tietyn rekisteriarvon, joka oli kohteena, ldmxcst ohjeessa.
  • 16:16 - 16:20
    Ohitetaanpa muutama dia tässä vaiheessa, koska haluan
  • 16:20 - 16:27
    painottaa, että tämä ei ollut tarpeeksi.
    Huomiomme mukaan, vaikka tämä tietty rekisteri säilytettiin,
  • 16:27 - 16:33
    on muita rekistereitä,
  • 16:33 - 16:40
    joita voi merkitä käytössä oleviksi
    ennen enklaaviin saapumista, ja johon hyökkääjä voi
  • 16:40 - 16:46
    muuttaa laskentatuloksen ei-numeraaliseksi. Tämä on hiljaista,
  • 16:46 - 16:50
    eikä siis ohjelmointikieliriippuvaista, eikä kehittäjäriippuvaista. Tämä on
  • 16:50 - 16:56
    hiljainen ABI asia, että laskenta ei ole ainoastaan numeroita.
  • 16:56 - 17:04
    Raportoimme myös tämän. Ja nyt, onneksi, kaikki enklaaviympäristöt käyttävät tätä täyttä xrstor ohjetta.
  • 17:04 - 17:10
    säilyttääkseen tämän laajennetun tilan. Siihen vaadittiin kaksi CVE:tä, mutta nyt
  • 17:10 - 17:16
    ne suorittavat täyden hallinnan. En halua mennä nyt tutkimustemme ytimeen, vaan
  • 17:16 - 17:21
    haluan nyt osoittaa näiden tutkimuksiemme tarkoituksen.
  • 17:21 - 17:29
    Tutkimme näitä tapahtumia ja halusimme selvittää,
  • 17:29 - 17:37
    ovatko ne vain vaikeita vaiko huonoja toteutuksia. Huomasimmekin,
    että
  • 17:37 - 17:42
    ylivuotoja voidaan käyttää sivukanavana salaisuuksien päättelemiseen. Esimerkiksi,
  • 17:42 - 17:49
    hyökkääjä voisi käyttää
    rekisteriä poikkeusten paljastamiseen jotta
  • 17:49 - 17:58
    sitten enklaavin sisällä voitaisiin laukaista syöteriippuvaisesti kerrontaa.
  • 17:58 - 18:03
    Lisäksi havaitsimme, että näiden sivukanavien kautta voidaan
  • 18:03 - 18:12
    käyttää syötetilan binäärietsintään.
  • 18:12 - 18:17
    Ja me voimme
    palauttaa tämän moninkertaistamisen määriteltyihin
  • 18:17 - 18:24
    määrään vaiheita. Jos meillä on vain yksi maski, jonka käännämme voimme
  • 18:24 - 18:32
    itse asiassa palauttaa toiminnon määriteltyihin vaiheisiin.
  • 18:32 - 18:37
    Ja jotta tietäisimme, voimme tehdä myös enemmän. Voimme suorittaa myös koneoppimista
  • 18:37 - 18:44
    enklaavissa.
    Jo mainitsikin, että sitä voidaan tehdä TEEn sisällä, pilvessä. Ja
  • 18:44 - 18:48
    se on koneoppimisessa mukavaa, eikö totta? Tehdäänpä hiukan käsinkirjoitetun luvun
  • 18:48 - 18:55
    tunnistamista. Jos ajattelemme mallia, jossa toinen
  • 18:55 - 19:01
    käyttäjä käyttää
    koneoppimismallia
  • 19:01 - 19:06
    ja toinen käyttää enklaavia.
  • 19:06 - 19:11
    Kaikki on turvallista, mutta huomasimme, että voimme saastuttaa näitä FPU
  • 19:11 - 19:18
    rekistereitä ja näin alentaa
    koneoppimisen suorituskykyöä
  • 19:18 - 19:24
    siten, että vain 8 prosenttia merkeistä tulkitaan oikein. Ja
  • 19:24 - 19:32
    kaikki luvut olivat itse asiassa tuloksissa samoja,
  • 19:32 - 19:38
    joten tämä koneoppiminen on tässä kohtaa hyödytöntä, eikö vain? Lisäksi voimme
  • 19:38 - 19:42
    hyökätä kuvamuutoksia sekoittamalla, pienien kuvamuutosten ja sekoitettujen kuvien
  • 19:42 - 19:49
    välillä. Tämä, jotta nähtäisiin, että on pieni mutta monimutkainen asia
  • 19:49 - 19:56
    ja ilmaisee että kaikki voi mennä pieleen nopeasti ABI tasolla, jos siellä puuhailee.
  • 19:56 - 20:03
    Tässä on kyse siis CPU tiloista. Nyt voidaankin puhua lisää
  • 20:03 - 20:06
    sovellusten ohjelmointi rajapinnasta, joka onkin
    hiukan mukavampi
  • 20:06 - 20:09
    aihe olettaisin.
    Joo, otetaan vaan, kiitos
  • 20:09 - 20:14
    Otetaanpa tähän melko yksinkertainen esimerkki.
  • 20:14 - 20:19
    Oletetaan, että lataamme standardin unix binäärin enklaaviin, ja siellä on toiminnot sitä varten,
  • 20:19 - 20:25
    vaikkapa graphene.
    Ja mitä haluan esittää tällä esimerkillä;
  • 20:25 - 20:30
    On hyvin tärkeää tarkistaa, mistä osoittimet ovat lähtöisin. Koska
  • 20:30 - 20:35
    enklaavi tavallaan osittaa muistin luotettuun enklaaviin ja ei-luotettuun muistiin,
  • 20:35 - 20:41
    ne ovat erillisissä muistialueissa. Ongelma tässä on seuraava; Oletetaan että
  • 20:41 - 20:47
    meillä on binäärin kaiutus, joka ainoastaan tuo näytölle input-arvon. Annamme toiminnolle argumenttinä
    merkkijonon
  • 20:47 - 20:53
    ja se normaalisti kaiuttaa sanotaanko "Hello, world", merkkijonon joka on ei-luotetussa
  • 20:53 - 20:58
    muistissa. Kaikki sujuu kuten pitääkin,
  • 20:58 - 21:03
    enklaavissa ajetaan komennot, se saa pointerin ulkopuoliseen muistiin ja printtaa merkkijonon.
  • 21:03 - 21:09
    Ongelmana on kuitenkin se, että enklaavilla on pääsy
  • 21:09 - 21:16
    myös omaan suojattuun muistiinsa. Jos hyökkääjä pääsee
  • 21:16 - 21:21
    käsiksi pointeriin ja ohjaa sen jonkin suojattavan tiedon kohtaan,
  • 21:21 - 21:25
    toiminto printtaa tiedon ulos, eikö niin? Eli äkkiä tämä onkin muuttunut muistin
  • 21:25 - 21:32
    sulku haavoittuvuudeksi. Ja se nähdään tässä
  • 21:32 - 21:36
    tapahtumassa mainitsemassani graphene ympäristössä. Meillä on siis
  • 21:36 - 21:41
    yksinkertainen hello world -merkkijono ja sitä käsitellään parin argumentin avulla.
  • 21:41 - 21:45
    Ja nyt, muutamme enklaavin ulkopuolella pointeria
  • 21:45 - 21:50
    enklaavin muistissa. Seurauksena se printtaa halutun
  • 21:50 - 21:55
    sijasta enklaavin
    muistissa sijaitsevan suojatun tiedon.
  • 21:55 - 22:01
    suojatun tiedon. Tämän tyyppiset haavoittuvuudet
  • 22:01 - 22:06
    ovat melko tunnettuja kernelien tutkinnasta ja muistakin yhteyksistä. Niitä
  • 22:06 - 22:12
    kutsutaan niemllä confused deputy ( hämmentynyt apulaissheriffi). Sheriffillä on ase lukemiseen,
    mutta ei
  • 22:12 - 22:17
    tiedäkään ongelman sattuessa mitä tehdä,
  • 22:17 - 22:22
    kun ei alun perin tarkistanut kenelle muistipaikka kuuluu tai kuka sitä hallitsee.
  • 22:22 - 22:28
    Tämä haavoittuvuus tuntuisi olevan helposti ratkaistavissa. Yksinkertaisesti
  • 22:28 - 22:32
    tarkistetaan koko ajan mitä osoitin tulee. Mutta kuten sanottu,
  • 22:32 - 22:38
    se ei aina ole helppoa. Kyllä David, on melko
    tarkkanäköistä,
  • 22:38 - 22:42
    jos sanoo että meidän tulisi tarkistaa kaikki osoittimet. Niinpä me teimmekin.Tarkistimme kaikki
  • 22:42 - 22:46
    pointereihin liittyvät tarkistukset ja huomasimme että Endolla on mielenkiintoinen tapa
  • 22:46 - 22:50
    tarkistaa nämä kaikki. Toki, koodi on korkealaatuista. He tarkistivat
  • 22:50 - 22:53
    kaikki pointerit, mutta asioiden eteen on tehtävä jotain erityistä. Puhumme nyt
  • 22:53 - 22:58
    C ohjelmointikielestä. Käsittelyä ei siis erityisesti päätetä.
  • 22:58 - 23:03
    Ne loppuvat uuteen tavuun ja funktiota voidaan käyttää samalla kun taistellaan
  • 23:03 - 23:06
    tiedon pituuden kanssa. Ja miten tarkistus tehdään, kun tieto
  • 23:06 - 23:11
    on täysin muistialueen ulkopuolella?
    Ensimmäinen askel on käsitellä pituus,
  • 23:11 - 23:16
    se on 10, ja sitten tarkistetaan alkaako ja loppuuko tietoalue
  • 23:16 - 23:19
    kokonaan kohteen ulkopuolella. Kuulostaa paikkansapitävältä. Sitten päästetään
  • 23:19 - 23:24
    höyryä. Tuntuu toimivan hienosti. Kuinka tämä toimii,
  • 23:24 - 23:26
    kun yhdistetään eri ajoympäristöt. Emmekä nyt ajattele sitä, että koko setup on enklaavin ulkopuolella,
  • 23:26 - 23:34
    johon salattu merkkijono välitetään.
    Ensimmäinen askel
  • 23:34 - 23:38
    on enklaavin aloittama käsittely merkkijonon pituuden suhteen.
  • 23:38 - 23:43
    Kuulostaa melko mehukkaalta, mutta
    onneksi kaikki
  • 23:43 - 23:47
    menee hyvin, kun huomataan että koko toimintoa ei olisi pitänyt tehdäkään ja
  • 23:47 - 23:51
    koko toiminto on itse asiassa enklaavin sisällä. Pyyntö siis hylätään
  • 23:51 - 23:56
    merkkijonon suhteen. Eli OK. Mutta kuten jotkut teistä tietävät,
  • 23:56 - 24:00
    tämä on mielenkiitoista, koska
    English kilpaili asiasta,
  • 24:00 - 24:04
    mistä ei koskaan pitänyt.
    Ja tuon kilpailun pituus määrittyy
  • 24:04 - 24:10
    1-bittien määrästä tehtäväannossa. Eli meillä on tässä sivukanava, jossa English
  • 24:10 - 24:16
    palauttaa aina arvon False. Mutta aika, joka
  • 24:16 - 24:22
    tuon arvon määrittämiseen menee, riippuu 0-tavujen määrästä Arncliffe
  • 24:22 - 24:27
    muistiblokissa. Sen me löysimme. Olimme innoissamme ja sanoimme sen olevan yksinkertainen aikaikkunaongelma.
  • 24:27 - 24:32
    Tällä mennään, eli tuon teimme ja näette sen tässä graafissa,
  • 24:32 - 24:36
    ja se osoittautui hankalammaksi kuin miltä näyttää. Sininen
  • 24:36 - 24:40
    1 mittaisen merkkijonon ja tuo on 2-mittaisen merkkijonon. Mutta
  • 24:40 - 24:44
    mitenkään ei voida graafista päätellä, koska siinä 6 prosessoria toimii
  • 24:44 - 24:48
    kovalla vauhdilla ja että yksi lisäys on täysin
  • 24:48 - 24:53
    hävinnyt kanavaan. Sitä ei pysty selvittämään mittamalla käsittelyaikaa.
  • 24:53 - 24:59
    Tarvitaan siis jotain muuta. Meillähän on viisaita kirjoituksia
  • 24:59 - 25:04
    kirjallisuudessa, esimerkiksi hyvin yleisistä hyökkäyksistä ASICeihin, joista myös Intel kirjoittaa.
  • 25:04 - 25:10
    Voitte nähdä, mitkä muistiblokkien sivut ovat käytössä, kun
  • 25:10 - 25:14
    English ajaa, koska hallitset käyttöjärjestelmää ja
    sivutusmekanismeja.
  • 25:15 - 25:20
    Sitä siis yritimme tehdä ajatellen että se onkin mukava sivukanava.
  • 25:20 - 25:24
    Raavimme päätämme katsoessamme yksinkertaista ja lyhyttä luuppia koodissa,
  • 25:24 - 25:29
    ja lyhyttä merkkijonoa joka sopii kokonaisuudessaan yhdelle muistisivulle.
  • 25:29 - 25:34
    Vaikka meillä on pääsy muistiin, se ei auta meitä tässä, koska
  • 25:35 - 25:39
    koodi ja data mahtuvat molemmat samalla sivulle.
  • 25:39 - 25:44
    Tämä on siis väliaikainen ratkaisu, se ei ole tarpeeksi tarkka.
  • 25:44 - 25:51
    Eli paljon on käsiteltävää ja olemme toimineet mielenkiintoisessa
  • 25:51 - 25:55
    ympäristössä. Se käyttää epäsuoria osoituksia ja sitä sanotaan isoksi askeleeksi. Se on siis
  • 25:55 - 26:01
    täydellinen viitekehys esimerkiksi Hadoopissa. Ja mitä se itse asiallisesi mahdollistaa
  • 26:01 - 26:05
    sinun tehdä, on ajaa enklaavia askel kerrallaan, nimestään huolimatta.
    Se siis myös mahdollistaa
  • 26:05 - 26:09
    hyökkääjän puuttumisen koodin ajoon jokaisen ohjeen tai käskyn välissä.
  • 26:09 - 26:13
    Ja miten me sen esitämme, on hyvin teknistä. Meillä on Linuxin kernelin
  • 26:13 - 26:18
    ajo pienen kirjastokäyttöjärjestelmän ympärillä, mutta se
  • 26:18 - 26:23
    ei ole ihan asian ydin. Asia on siinä, että voimme pysäyttää enklaavin
  • 26:23 - 26:28
    jokaisen komennon jälkeen ja rauhassa pohtia, mitä voisimme tehdä.
  • 26:28 - 26:34
    Mitä me ite asiassa voimme tehdä, on ajaa ja seurata tätä lisäkoodia
  • 26:34 - 26:39
    yksi kerrallaan ja jokaisen keskeytyksen jälkeen
    yksinkertaisesti tarkistaa,
  • 26:39 - 26:45
    saavuttaako enklaavi merkkijonon sieltä mihin olemme sen osoittaneet.
    Se on toinen
  • 26:45 - 26:51
    tapa ajatella asiaa, että meillä on ajo enklaavissa ja se voidaan rikkoa
  • 26:51 - 26:57
    osiin ja laskea osat.
  • 26:57 - 27:03
    Päättäväistä ajoittamista. Tosin sanoen meillä on ennustaja joka kertoo
  • 27:03 - 27:09
    missä 0-tavut sijaitsevat. En tiedä onko se käytännöllistä, itse asiassa on.
    Osoittautuu
  • 27:09 - 27:13
    olevan niin, että jotkut jotka ovat syntyneet hyökkääjiksi,
  • 27:13 - 27:18
    tietävät jo, että on hyvä tietää, missä kohta
    muistia nollat ovat. Ja
  • 27:18 - 27:24
    nyt osoitamme esimerkin, missä rikomme A-S:n ja Iowan, jotka ovat kiihdytyskovona
  • 27:24 - 27:29
    yrityksen AI prosesseissa. Ja
    nämä toimivat ainoastaan rekistereissä.
  • 27:29 - 27:34
    Juuri mainittiin, että tavallaan pidetään tuosta yksittäisestä osoituksesta muistiin,
  • 27:34 - 27:39
    mutta heti on olemassa toinenkin
    temppu. Eli aina kun enklaavi on
  • 27:39 - 27:44
    keskeytetty, se säilöö senhetkiset rekisterinsä ja ajan johonkin muistilokeroonsa kehyksenä,
  • 27:44 - 27:50
    joten voimme keskeyttää ja verifioida sen tekevän oikein.
  • 27:50 - 27:57
    Ja sitten voimme ajaa tämän 0-tavu ennustajan tässä
  • 27:57 - 28:03
    SSA muistissa. Ja mitä löydämme; missä 0 on tai onko siellä nollia lainkaan.
  • 28:03 - 28:09
    En kuitenkaan halua mennä tarkemmin siihen, jos vastaus
    on kyllä. Mutta mitä
  • 28:09 - 28:16
    itse asiassa teemme, kun löydämme nollan viimeisestä vaiheesta
  • 28:16 - 28:22
    ennen viimeistä lisäyskierrosta ja sitten huomaamme että nolla kaatuu ja muuttuu X:ksi
  • 28:22 - 28:28
    tai avaintavuksi, ja saamme tulokseksi salattua tekstiä. Me kuitenkin tiedämme
  • 28:28 - 28:34
    salatekstin tavun, ja voimme palata takaisin päin.
  • 28:34 - 28:40
    salatekstin tavun, ja voimme palata takaisin päin.
  • 28:40 - 28:46
    Tämä ketju toistetaan 16 kertaa, kunnes on löydetty jokainen 0,
  • 28:46 - 28:51
    ja meillä on käsissämme koko avain.
  • 28:51 - 28:56
    Ja ne jotka tietävät, jos on käsissä yksi avainkooste on käsissä myös koko avain.
  • 28:56 - 29:01
    Jos siis saat alkuperäisen avaimen, voit ajaa takaperin. Kuulostaa
  • 29:01 - 29:06
    monimutkaiselta, mutta se on hyvin nopea hyökkäys minkä voit seuratessa todeta.
  • 29:06 - 29:11
    Tässä on siis esimerkki tämän hyökkäyksen tekemisestä, ja kuten huomasitte muutamassa sekunnissa
  • 29:11 - 29:16
    ja noin 520 Asirin hyödyntämisellä, saamme koko KeIson.
  • 29:16 - 29:21
    Se on melko vaikuttavaa. Yksi keskeisimmistä
  • 29:21 - 29:26
    asioista on se, että muistiin ei itse asiassa laiteta mitään, mutta
  • 29:26 - 29:33
    toiminnassa SGX:n kanssa voit manipuloida sitä.
  • 29:33 - 29:41
    Haluankin tässä vaiheessa päättää tämän, olemme kuitenkin löytäneet useita muitakin haavoittuvuuksia.
  • 29:41 - 29:48
    Sekä tutkimus- että tuotantokoodissa, kuten Intelin tai
  • 29:48 - 29:53
    Microsoftin SDK:ssa.
    Ja ne menevät läpi koko alueen käyttäen
  • 29:53 - 29:58
    vieraita kykyjä, joita on nähty muuallakin tutkimuksessa.
  • 29:58 - 30:03
    Mutta, on olemassa myös uudenlaisia mielenkiintoisia esittämiimme aspekteihin liittyviä haavoittuvuuksia.
  • 30:03 - 30:08
    Oli myös ongelmia kaikkien kutsuvälitysten kohdalla,
  • 30:08 - 30:14
    kun enklaavi kutsui ulkopuolellaan olevia osia.
  • 30:14 - 30:19
    Kutsuja joita käytetään emuloimaan järjestelmäkutsuja ja niin edelleen.
    Ja jos palautat
  • 30:19 - 30:25
    tässä yhteydessä ollain tavalla väärän tuloksen, voidaan taas lipsahtaa rajojen ulkopuolelle. Ne myös
  • 30:25 - 30:31
    olivat erittäin, erittäin laajalle levinneitä. Ja lopuksi löysimme jotain tapauksia
  • 30:31 - 30:36
    liittyen paddingiin (kryptauksen toiminto). en taaskaan halua mennä yksityiskohtiin.
  • 30:36 - 30:41
    Olemme todenneet tässä asiassa, että voimme tehdä vertauksia oikeaan maailmaan.
  • 30:41 - 30:47
    On tärkeää pestä kätensä, eli on tärkeää huoltaa ja tiloittaa osoittimet
  • 30:47 - 30:54
    ja niin edelleen. Se on eräänlainen
    poistumisviesti,
  • 30:54 - 30:59
    jolla kääntää ja ottaa yhteys turvallisesti.
  • 30:59 - 31:03
    Kyllä, kaikki kovo-ongelmat täytyy ratkaista, mutta koodin täytyy olla turvallista.
  • 31:03 - 31:10
    Enklaavien tapauksessa se tarkoittaa kunnollisia APIa ja APIen huoltoa. Tämä on itse asiassa erittäin
  • 31:10 - 31:16
    vaikea tehtävä, mielestäni
  • 31:16 - 31:21
    hyökkäyspinta-ala on suuri, erityisesti älykkään X:n
  • 31:21 - 31:26
    tapauksessa, missä voit keskeyttää jokaisen toimen ja niin edelleen. Mielestäni tutkimuksen
  • 31:26 - 31:32
    näkökulmasta, tarvitaan siis enemmän. Näkökulmasta jatkat jos haluat,
  • 31:32 - 31:38
    ehkä voimme oppia
    jotain käyttäjästä analogiaan johon viittasin.
  • 31:38 - 31:44
    Luullakseni tätä tarvitaan, jotta ymmärretään mitä
  • 31:44 - 31:49
    enklaavin pitäisi tehdä verrattuna siihen mitä colonelin pitäisi
    tehdä.
  • 31:49 - 31:54
    Ne ovat kuitenkin tärkeitä eroavaisuuksia, jotka tulisi ottaa huomioon. Joten luulisin,
  • 31:54 - 32:00
    kuten sanoit, kaikki koodimme
    on avointa lähdekoodia.
  • 32:00 - 32:07
    Joten kaiken esitellyn voit löytää allaolevien Github -linkkien kautta
  • 32:07 - 32:15
    ja tietenkin voitte esittää kysymyksiä tämän esityksen katsomisen jälkeen.
    Eli kiitoksia paljon.
  • 32:15 - 32:22
    No niin, olemme palanneet jälleen. Ja tässä kysymyksiä?
  • 32:22 - 32:28
    Ei vielä kysymyksiä....Voitte siis laittaa kysymyksiä tulemaan... Suljenpa nyt tämän
  • 32:28 - 32:37
    ja kysynkin nyt kysymyksiä teiltä. Miten päädyitte tähän aiheeseen ja miten tapasitte toisenne?
  • 32:37 - 32:43
    No se onkin melko mielenkiintoista. Ajattelen sen olevan
  • 32:43 - 32:50
    rakentuneen pitkällä aikavälillä vuosien saatossa.
    Luulisin sen olevan tulosta
  • 32:50 - 32:57
    alkuperäisten suunnitelmiemme haavoittuvuuksista, Aloitin itse asiassa väitöskirjassani perusteiden keräämiseksi.
  • 32:57 - 33:02
    Emme itse asiassa nähneet koko kuvaa ennenkuin tapasimme
  • 33:02 - 33:07
    Davidin ja hänen kollegfansa Birminghamista Lontooseen.
    Mukava konferenssi.
  • 33:07 - 33:11
    Ja sitten aloimme tehdä yhteistyötä ja toimia
  • 33:11 - 33:15
    systemaattisemmin. Aloitin tämän haavoittuvuuksien listaamisen
  • 33:15 - 33:20
    ja sen jälkeen teimme Davidin kanssa systemaattisemman analysoinnin.
  • 33:20 - 33:26
    Ja se oli se Pandoran lipas,
  • 33:26 - 33:32
    samoja virheitä toistaen. Sitten Fitzhugh, joka liittyi seuraamme hiljattain
  • 33:32 - 33:36
    Lontoossa, alkoi työskennellä kanssamme
  • 33:36 - 33:41
    matalan tason Sebu ominaisuuksien kanssa. Ja se itsessään on jo Pandoran lipas.
  • 33:41 - 33:47
    Sanoisin että erityisesti yksi opetus, kuten sanoimme, oli tuo tietty kuutonen, joka on erityisen monimutkainen.
  • 33:47 - 33:51
    Ja tuota kaikkea kompleksisuutta voidaan hyväksikäyttää, erityisesti
  • 33:51 - 33:56
    biodiversiteettiä. Se on kuin osa moniosaisuudesta,
  • 33:56 - 34:02
    missä avaat laatikon ja saat vastaukseksi yhä lisää kysymyksiä.
  • 34:02 - 34:09
    On mielestäni reilua sanoa, että tämä tutkimus ei ole
  • 34:09 - 34:14
    lopullinen vastaus aiheeseen, mutta se on yritys löytää järjestelmällinen tapa
  • 34:14 - 34:19
    tarkastella loputtomia perusteita.
  • 34:19 - 34:26
    Netin kautta on tullut kysymys. Onko muita olosuhteita missä
  • 34:26 - 34:33
    Mianus kirjoittaa rekistereihin, kuin juuri SGX?
  • 34:33 - 34:44
    Täytyy sanoa, etten myöskään ymmärrä kysymystä, mutta kokisin sen niin
  • 34:44 - 34:49
    että onko tulos taktinen häviö? Vankila riippuu siitä, että kun on muistin huollon
  • 34:50 - 34:55
    yhteydessä meitä syytetään sisällön muistiin
  • 34:55 - 34:59
    pakottamisesta.
  • 35:00 - 35:05
    Eli se on ehdottomasti hmmm.
  • 35:05 - 35:09
    Sanoisin kuitenkin että yksi opetuksista viimeisen viiden tutkimusvuoden aikana on,
  • 35:09 - 35:13
    että usein nämä asiat
    yleistyvät kuutosen jälkeen
    ja ainakin yleisesti,
  • 35:13 - 35:19
    oivallus SEBUsta, että oikeellisuus muistin käsittelyssä saavutetaan tavalla tai toisella,
    ennemmin tai myöhemmin.
  • 35:19 - 35:23
    Mielestäni tuo pätee järjestelmien luomisessa, että jos jotenkin voi pakottaa
  • 35:23 - 35:26
    käyttöjärjestelmän kompleksisuuten
    sovellusten osalta,
  • 35:27 - 35:32
    rekistereitten käyttö muistissa on pakollista. Jos teillä olisi jotain samankaltaista mitä
  • 35:32 - 35:37
    meillä on käyttöjärjestelmässä, Colonelissä, teillä olisi
    potentiaalinen hyväksikäytön paikka.
  • 35:38 - 35:44
    Mutta ehkä David haluaa jotain käyttöjärjestelmistä myös.
  • 35:44 - 35:48
    Ei en oikeastaan.
    Ajattelisin, että eräs asia mikä helpottaa SGX:n
  • 35:48 - 35:53
    kanssa on tiukka kontrolli, kuten mainitsit, keskeytysten ja muun
    kanssa,
  • 35:53 - 35:58
    kun olette matkallanne enklaavin ulkopuolella. Voitte siis askeltaa käytännössä koko
  • 35:58 - 36:03
    enklaavin, kuten keskeyttämällä koko käyttöjärjestelmän.
  • 36:03 - 36:08
    Tarkoin toistettuna
    oikeassa kohdassa joku toinen prosessi
  • 36:09 - 36:14
    on taipuvainen olemaan vaikeampi suunnittelultaan. Mutta kontekstissa, jossa
  • 36:14 - 36:19
    meidän täytyy tallentaa jotain turvaan, se on
  • 36:19 - 36:26
    rekisterit joista se päätyy muistiin,
    joissain tilanteissa
  • 36:26 - 36:34
    vähemmän kontrolloidusti kuin esim. Asgeirssonin tapauksessa. On siis olemassa kysymys, entä muut CPU -arkkitehtuurit
  • 36:34 - 36:42
    kuin Intel, testasitteko niitä? Ehkä voin mennä hiukan tähän, mielenkiintoista.
  • 36:42 - 36:48
    Intelhän on suurin, sillä on suurin ohjelmistoalusta ja eniten ajossa olevia ympäristöjä.
  • 36:48 - 36:53
    Sitähän me voisimme tutkia.
    Mutta tietenkin on olemassa muutakin,
  • 36:53 - 37:01
    kuten muutama vuosi sitten kehittämämme Sancho's.
  • 37:01 - 37:05
    Ja tietenkin silläkin on
    samat aiheet. Eli aina tarvitaan
  • 37:05 - 37:15
    ohjelmistokerros jonka täytyy päästä enklaaviin.
    Luullakseni
  • 37:15 - 37:21
    David aikaisemmassa työssään löysi ongelmakohtia TEE:sämme
    Eli tämä ei ole ainoastaan
  • 37:21 - 37:27
    Intel-sidonnaisten projektien sotkun paikka. Mutta mitä me
  • 37:27 - 37:34
    varmasti huomasimme, on helpompaa ajatella kaikkia tapauksia yksinkertaisemmissa ympäristöissä
  • 37:34 - 37:38
    kuin viitosessa ja sitä helpommissa, kuin kompleksisemmaassa kuutosessa.
  • 37:39 - 37:44
    Joten nyt ei ole paljoa ympäristöjä vähemmille tempuille.
  • 37:44 - 37:49
    Heillä on siis etu ja haitta olla ensimmäisiä laajasti
  • 37:49 - 37:56
    levinneitä, mutta luulen että kun muutkin alkavat kasvaa
  • 37:56 - 38:01
    ja yksinkertaisemmat arkkitehtuurit yleistyvät,näemme että
  • 38:01 - 38:06
    on helpompi korjata väitettyjä ongelmia niissä. OK, mikä on
  • 38:06 - 38:19
    järkevä vaihtoehto TEElle vai onko sitä.
  • 38:19 - 38:27
    Meillä molemmilla on asiaan omat perspektiivimme, näin ajattelisin.
  • 38:27 - 38:32
    Kysymyksen vakiintuessa, tarvitsemmeko
  • 38:32 - 38:35
    vaihtoehtoja vai tarvitsemmeko systemaattisempia tapoja huoltaa
  • 38:35 - 38:39
    Australians? Se on mielestäni osavastaus tähän, että meidän ei tarvitse
  • 38:39 - 38:43
    heittää tätä hukkaan, vaikka sen kanssa on ongelmiakin.
  • 38:43 - 38:47
    Voimme myös miettiä miten ratkaista nuo ongelmat. Mutta sen ulkopuolella meillä on jännittävää
  • 38:47 - 38:52
    tutkimusta. OK, ehkä David myös haluaa sanoa hieman lisää esimerkiksi
  • 38:52 - 38:57
    ominaisuuksista, mutta se ei välttämättä ole niin erilaista
    tähän verrattuna.
  • 38:57 - 39:01
    Silloin kun on high tech tukea kuten Cherry
  • 39:01 - 39:05
    Borjessonin tietokoneen osalla, joka itsesiallisesti yhdistää metadatan
  • 39:05 - 39:10
    metadatapisteisiin, kuten tilaustarkistuksia
  • 39:10 - 39:15
    silloin puhumiemme aiheiden saastutushyökkäyksiä voitaisiin saada
  • 39:15 - 39:21
    kiinni ilman itse ilman tukea. Mutta se on hyvin korkean tason idea. Ehkä David
  • 39:21 - 39:26
    jhaluaasanoa jotain. Kyllä, ajattelisin että vaihtoehtona TEE:lle,
  • 39:26 - 39:32
    haluat osittaa järjestelmäsi, mikä on mielestäni hyvä ajatus. Jza
  • 39:32 - 39:38
    Ja kaikki tekevät sitä nyt, miten online palveluita tehdään ja niin edelleen.
  • 39:38 - 39:44
    Nämä ovat järjestelmiä jotka ovat yleistyneet
  • 39:44 - 39:49
    matkapuhelimissa tai vaikkapa pankkikorttijärjestelmissä,
  • 39:49 - 39:53
    jotka ovat suojattu ympäristö yksinkertaisille toimille. Mutta
  • 39:53 - 39:58
    ongelmat alkavat, kun laitetaan paljon toiminnallisuuksia tähän ympäristöön.
  • 39:58 - 40:03
    Kuten näimme, luotettu koodipohja
    tulee yhä monimutkaisemmaksi ja saadaan ympäristöstä perinteinen laatikko.
  • 40:03 - 40:08
    On todellinen kysymys, tarvitaanko vaihtoehto vaiko
  • 40:08 - 40:12
    parempi lähestymiskulma aiheeseen. Miten voitte, ositusohjelmistot? Ja kuten mainitsit
  • 40:12 - 40:16
    on asioita joita voi hoitaa arkkitehtuurilla.
  • 40:16 - 40:21
    Näin voidaan laajentaa arkkitehtuureita
    ominaisuuksilla
  • 40:21 - 40:26
    ja sitten aloittaa komponenttien eristäminen.
  • 40:26 - 40:30
    Esimerkiksi, ohjelmistoprojektissa, sanotaanko Web-serverilläsi, sinä eristät stackin tai jotain vastaavaa. Ja
  • 40:30 - 40:38
    kiitokset katsojille salalisen salasanan huomaamisesta,
    sehän tehdään vain näön tähden,
  • 40:38 - 40:46
    antaaksemme ihmisille jotain katseltavaa.
  • 40:46 - 40:55
    Mutta sehän ei ole perusteiltaan viallinen?
    Tarkoitan että niitä on niin monia,
  • 40:55 - 41:02
    ettet voi sanoa niiden olevan perusteiltaan viallinen, mutta
  • 41:02 - 41:08
    erityisesti SGX:ää
    ajatellen, koska signaali käyttää mobiilikolikoita
  • 41:08 - 41:16
    kryptovaluutta käyttää sitä, ja niin edelleen ja niin edelleen. Onko se perusteiltaan viallinen
  • 41:16 - 41:24
    vai haluatko mieluummin sanoa niin? Sehän riippuu perusteiltaan kunnossa olevan
    määritelmästä.
  • 41:24 - 41:30
    Menneisyydessä olemme työskennelleet myös
  • 41:30 - 41:35
    asenteiden rikkomisen parissa, mutta ne on saatu korjattua ja on aika kaunis
  • 41:35 - 41:41
    ja hyvin tutkittu kokonaisuus jolla on myös lyhytaikaisia vaikutuksia tuotantoon.
  • 41:41 - 41:46
    Löydät siis haavoittuvuuden, toimittajan on tehtävä korjaus jota ei ole olemassa
  • 41:46 - 41:50
    tai siihen tulee väliaikainen
    korjaus. Sitten myöhemmin
  • 41:50 - 41:54
    tarvitaan uusia prosesseja jotta saataisiin lopullinen korjaus ongelmaan
  • 41:54 - 41:59
    ja kuitenkin siihen
    saadaan taas
  • 41:59 - 42:05
    väliaikaisia korjauksia. Jos esimerkiksi yhtiö kuten Signeul käyttää
  • 42:05 - 42:10
    niitä, et saa oletuksena turvallisuutta. Mutta täytyy ajatella
  • 42:10 - 42:14
    ohjelmistoja. niihin keskitytään tässä tapauksessa.
    Täytyy ajatella
  • 42:14 - 42:20
    myös laitteistoja, mikropaikkauksia ja prosessoreita joissa täytyy huolehtia kaikista
  • 42:20 - 42:26
    tunnetuista haavoittuvuuksista. Ja silti täytyy aina kysyä, että entä
  • 42:26 - 42:31
    ne mahdollisuudet joita emme vielä tunne, missään turvallisessa järjestelmässä.
  • 42:31 - 42:37
    Ehkä David haluaa sanoa jotain viimeisimmästä työstään.
  • 42:37 - 42:43
    Hiukan mielenkiintoista.
    Ajattelenpa, että mikä tahansa lähtökohtasi
  • 42:43 - 42:48
    tai minun vastaukseni tähän kysymykseen olisi, riippuu tietenkin
    uhkamallista.
  • 42:48 - 42:54
    Jotkut käyttävät SGX:ää siirtääkseen luotetut asiat pilvipalvelun tuottajalle,
  • 42:54 - 43:00
    kuten RSS tai Signaler. Siirretään
    siis kaikki nämä toiminnot
  • 43:00 - 43:05
    jollekin pilvitoimittajalle enklaaviin. Tällöin minun ei tarvitse
  • 43:05 - 43:11
    luottaa pilvitoimittajaan, koska myös fyysiseen turvallisuuteen on jotain.
  • 43:11 - 43:16
    luottaa pilvitoimittajaan, koska myös fyysiseen turvallisuuteen on jotain.
    Vähän aikaa sitten paljastimme kuitenkin haavoittuvuuden,
  • 43:16 - 43:22
    joka osoittaa, että jos sinulla on fyysinen pääsy SGX:ään,
  • 43:22 - 43:28
    voit injektoida prosessorin pelaamalla voting rajapinnalla, joka on laitteistossa.
  • 43:28 - 43:33
    Siinä todellakin nähtiin, että pari johtoa emolevyn väylältä
  • 43:33 - 43:38
    jännitteen säätimeen. Saadaan aikaan jännitepiikki,
  • 43:38 - 43:44
    kuten
    voitte tietääkin.
  • 43:44 - 43:49
    Sillä tavalla voidaan kääntää bittejä enklaavissa
  • 43:49 - 43:55
    ja näin tietenkin tehdä kaikenlaista
  • 43:55 - 44:00
    pahuutta, kuten injektoida,
    jonka avulla taas voidaan saada avaimia, kaapata ohjaus, tai jotakin. Se siis riippuu
  • 44:00 - 44:05
    uhkamallista. En sanoisi niin, että ASX on täysin turha. Sekin
  • 44:05 - 44:10
    on parempi kuin ei mitään. Mutta
    ehdottomasti, et voi olla
  • 44:10 - 44:15
    täysin turvassa jos jollain on fyysinen pääsy palvelimellesi.
  • 44:15 - 44:21
    Nyt minun täytyy lopettaa keskustelu, pahus sentään. Ja kysyisin kaikki kysymykset
  • 44:21 - 44:26
    jotka sain. Mutta hyvin lyhyt
    vastaus, kiitos. Mikä tuo juttu on tuon
  • 44:26 - 44:31
    salasanan kanssa tuolla taustalla?
    Minähän selitin sen, se on vaan puhdas vitsi.
  • 44:31 - 44:36
    Sanon sen vielä kerran, koska jotkut näyttävät ottaneen sen vakavasti.
    Se on
  • 44:36 - 44:40
    vain tilan täytteeksi.
    Laitoin sen vaan sinne sen takia. Se ei muutoin olekaan kokonaan sieltä luettavissa, onneksi.
  • 44:40 - 44:46
    Minun täytyy varmasti ottaa ja avata David Oswaldin kirja.
  • 44:46 - 45:00
    Kiitokset hyvätä keskustelusta ja nyt siirrytäänkin seuraavaan
  • 45:00 - 45:04
    esitykseen.
  • 45:04 - 45:34
    [Translated by Kari Kananoja (ITKST56 course assignment at JYU.FI)] 2023
Title:
#rC3 - Ramming Enclave Gates: A Systematic Vulnerability Assessment of TEE Shielding Runtimes
Description:

more » « less
Video Language:
English
Duration:
45:34

Finnish subtitles

Revisions