< Return to Video

37C3 - Writing secure software

  • 0:00 - 0:15
    [Translated by Santeri Koivisto (ITKST56 course assignment at JYU.FI)]
    Musiikkia
  • 0:15 - 0:18
    Siitä on kirjoitettu oppikirjoja ja siitä
  • 0:18 - 0:21
    on pidetty lukematon määrä esitelmiä, jotka
  • 0:21 - 0:23
    ovat valistaneet meitä kaikista
  • 0:23 - 0:27
    tekemistämme virheistä, ja silti kaikenlaisia huonoja
  • 0:27 - 0:30
    ohjelmistoja on yhä olemassa, mutta
  • 0:30 - 0:33
    Fefe, täällä näin, sankarimme,
  • 0:33 - 0:37
    on ottanut huomioon kaikki parhaat
  • 0:37 - 0:40
    käytännöt työskennellessään
  • 0:40 - 0:44
    tehdäkseen turvallisen verkkosivun. Hän
  • 0:44 - 0:48
    seuraavaksi näyttää meille, miten sellainen tehdään, jotta
  • 0:48 - 0:50
    voimme kaikki nukkua yömme rauhassa ja
  • 0:50 - 0:55
    ottaa mallia, jonka avulla voimme
  • 0:55 - 0:57
    tehdä omat ohjelmistomme turvallisiksi.
  • 0:57 - 1:00
    Siispä annan puheenvuoron nyt
  • 1:00 - 1:02
    Fefelle, antakaa hänelle aplodit!
  • 1:02 - 1:14
    Suosionosoituksia
  • 1:14 - 1:16
    Kiitos, minun täytyy aloittaa
  • 1:16 - 1:18
    anteeksipyynnöllä, sillä ehdotin esitelmää,
  • 1:18 - 1:19
    mutta se hylättiin, joten
  • 1:19 - 1:22
    diat eivät ole ihan aivan siinä kunnossa,
  • 1:22 - 1:23
    kuin niiden pitäisi olla.
  • 1:23 - 1:27
    Nämä diat on tehty esitelmän edellistä versiota varten. Ne pitävät
  • 1:27 - 1:29
    sisällään kaiken materiaalin. Yritin päivittää niitä, mutta
  • 1:29 - 1:31
    se tuhosi esitelmän sulavuuden, joten
  • 1:31 - 1:32
    joudumme pärjäämään tämän version kanssa.
  • 1:32 - 1:35
    Suurin ero on yleisössä, sillä
  • 1:35 - 1:38
    tällä kertaa paikalle tulee enemmän ohjelmistokehittäjiä.
  • 1:38 - 1:39
    Toisessa yleisössä olisi ollut enemmän hakkereita ja
  • 1:39 - 1:41
    bisnesmiehiä, joita yritän auttaa heidän
  • 1:41 - 1:48
    nykyisestä tilanteestaan eteenpäin, ja pääkysymyshän
  • 1:48 - 1:49
    on yleensä: "Onko jo valmista?", eikö niin?
  • 1:49 - 1:50
    Siis, hieman minusta, olette varmaankin
  • 1:50 - 1:53
    nähneet tämän jo aiemmin, olen ammatiltani
  • 1:53 - 1:54
    koodin tarkastaja, omistan pienen yrityksen.
  • 1:54 - 1:57
    Yritykset näyttävät meille koodia, ja minä puolestani
  • 1:57 - 2:00
    näytän heille bugeja, joita siitä löydän, melko helppoa.
  • 2:00 - 2:05
    Mutta ennen kuin aloitamme, minulla on
  • 2:05 - 2:06
    hieman syytä juhlaan, tämä oikeastaan tapahtui
  • 2:06 - 2:08
    vain päivää ennen kuin
  • 2:08 - 2:12
    puhuin siitä ensi kertaa, siis tämä viesti Kasperskyltä,
  • 2:12 - 2:14
    he löysivät haittaohjelman
  • 2:14 - 2:15
    joka käyttää libc:tä,
  • 2:15 - 2:17
    jota olen ollut kirjoittamassa, joten
  • 2:17 - 2:19
    tämä on...
  • 2:19 - 2:28
    Suosionosoituksia
  • 2:28 - 2:29
    Haittaohjelmaporukalla on
  • 2:29 - 2:30
    selvästi hyvä maku.
  • 2:30 - 2:35
    Niin, oikeastaan suurin kysymys, joka tulee vastaan, kun
  • 2:35 - 2:37
    keskustelen asiakkaiden kanssa on: "käytämme todella paljon
  • 2:37 - 2:39
    rahaa tähän, miksei se toimi"?
  • 2:39 - 2:41
    Ja vastaus on, että "toimitte itse väärin".
  • 2:41 - 2:46
    Yritän nyt siis näyttää, että mitä tarkalleen menee vikaan
  • 2:46 - 2:52
    ja tässä on pieni johdanto: usein sanotaan,
  • 2:52 - 2:53
    ettei ole aikaa tehdä asioita
  • 2:53 - 2:54
    kunnolla, eikä se pidä paikkaansa lainkaan.
  • 2:54 - 2:57
    Teillä on aikaa päivässä tasan yhtä paljon kuin kaikilla niillä,
  • 2:57 - 2:59
    jotka ovat pystyneet suuriin saavutuksiin, joten
  • 2:59 - 3:01
    jokainen varmasti pääsee pitkälle, kunhan ryhtyy hommiin.
  • 3:01 - 3:05
    Pelataan sitten pientä lämmittelypeliä,
  • 3:05 - 3:07
    sen nimi on "miten se alkoi ja
  • 3:07 - 3:10
    miten nyt menee", aloitetaan siis harjoittelukierroksella:
  • 3:10 - 3:11
    "IBM:n Watson mullistaa
  • 3:11 - 3:15
    kymmenen toimialaa", ja nyt menee näin:
  • 3:15 - 3:17
    "Mitä kävi IBM:n Watsonille?". Kyseessä on
  • 3:17 - 3:19
    tyypillinen kuvio tietoturva-alalla.
  • 3:19 - 3:23
    Okei, tässä seuraava, näin se alkoi:
  • 3:23 - 3:25
    "Mullista tietoturva tekoälyllä",
  • 3:25 - 3:27
    no niin, emmeköhän kaikki tiedä, mihin tämä on menossa...
  • 3:27 - 3:29
    Naurua
  • 3:29 - 3:30
    Niin, sehän se kuvio on.
  • 3:30 - 3:33
    Pelataan IT-turvallisuuden miinaharavaa,
  • 3:33 - 3:35
    siis, kaikki täällä varmaankin
  • 3:35 - 3:38
    tuntevat Gartnerin, se julkaisee
  • 3:38 - 3:40
    suosituksia ja sillä on jopa
  • 3:40 - 3:42
    äänestysosio, jossa ihmiset voivat sanoa, että
  • 3:42 - 3:43
    "Tämä on paras tuote tähän tarkoitukseen",
  • 3:43 - 3:45
    joten vilkaistaanhan muutamaa ja
  • 3:45 - 3:47
    katsotaan, miten kävi niille, jotka luottivat Gartneriin.
  • 3:47 - 3:49
    Ensimmäisenä aiheena ovat palomuurit, siis
  • 3:49 - 3:54
    näin se alkoi: ykkössijan suositus on
  • 3:54 - 3:57
    Fortinet, ja heillä on paljon
  • 3:57 - 3:59
    markkinointi- siansaksaa
  • 3:59 - 4:02
    Naurua
  • 4:02 - 4:04
    Ja jos taas katsotaan, miten nyt menee, niin
  • 4:04 - 4:06
    ei kovin hyvin.
  • 4:06 - 4:08
    Siis, jatketaan kuviota hiukan:
  • 4:08 - 4:10
    Mitä kävi minulle tämän suhteen?
  • 4:10 - 4:13
    En tarvitse palomuuria, koska minulla
  • 4:13 - 4:14
    ei ole yhtään avointa porttia, jolle pääsy pitäisi estää.
  • 4:14 - 4:16
    Joten sitä ei tarvita,
  • 4:16 - 4:18
    periaatteessa sitä ei tarvita ollenkaan.
  • 4:18 - 4:20
    Seuraava ala: päätepisteiden suojaus,
  • 4:20 - 4:25
    se alkoi siis Trellix:llä, joka on
  • 4:25 - 4:26
    Gartnerin ykkössuositus.
  • 4:26 - 4:28
    En ollut kuullut siitä,
  • 4:28 - 4:30
    joku yhteishanke tai joku sellainen,
  • 4:30 - 4:31
    ketä kiinnostaa.
  • 4:31 - 4:33
    Heilläkin on hienoa markkinointi- siansaksaa
  • 4:33 - 4:37
    Ja jos katsotaan, mitä tapahtui:
  • 4:37 - 4:39
    se vain pahensi tilannetta.
  • 4:39 - 4:43
    Okei, tämäkään ei vaikuta minuun,
  • 4:43 - 4:45
    koska en käytä humpuukituotteita.
  • 4:45 - 4:48
    Katsotaanhan, kolmanneksi salasananhallintaohjelmistot,
  • 4:48 - 4:48
    myöskin hyvin suosittuja,
  • 4:48 - 4:52
    miten se alkoi: suositeltiin LastPassia,
  • 4:52 - 4:54
    tiedätte varmaan mihin tämä on menossa...
  • 4:54 - 4:56
    Naurua
  • 4:56 - 4:59
    Jep, se hakkeroitiin
  • 4:59 - 5:01
    ja monet joutuivat ongelmiin.
  • 5:01 - 5:05
    Voitte siis huomata kuvion:
  • 5:05 - 5:08
    tämäkään ei vaikuttanut minuun, koska
  • 5:08 - 5:09
    poistin käytöstä salasanatunnistautumisen ja
  • 5:09 - 5:10
    käytän julkisen avaimen menetelmiä, jotka ovat
  • 5:10 - 5:14
    olleet jo vuosikymmeniä saatavilla. Pieni bonus,
  • 5:14 - 5:18
    viimeinen näistä: kaksivaiheinen tunnistautuminen,
  • 5:18 - 5:20
    Gartner suosittelee Duoa, jonka
  • 5:20 - 5:21
    Cisco on jo ostatut, mutta ei sillä väliä.
  • 5:21 - 5:25
    Katsotaan siis, mitä Duo tekee:
  • 5:25 - 5:28
    palvelimesi pyytää pilvipalvelusta
  • 5:28 - 5:30
    lupaa, pilvipalvelu näyttää
  • 5:30 - 5:33
    puhelimella ilmoituksen, josta painetaan "kyllä",
  • 5:33 - 5:36
    ja pilvipalvelu kertoo palvelimelle:
  • 5:36 - 5:39
    "okei, voit päästää sisään". Jos katsot
  • 5:39 - 5:40
    oikein tarkkaan, huomaat, ettei pilvipalvelun
  • 5:40 - 5:41
    ole pakko näyttää ilmoitusta ollenkaan, se voi vain
  • 5:41 - 5:44
    sanoa suoraan "kyllä". Se on siis valmiiksi
  • 5:44 - 5:45
    ongelmainen, mitään ei tarvitse edes hakkeroida
  • 5:45 - 5:48
    Naurua
  • 5:48 - 5:50
    ja harva tajuaa, että
  • 5:50 - 5:51
    kaksivaiheista tunnistautumista ei tarvita,
  • 5:51 - 5:53
    jos käyttää julkista avainta, se on jo itsessään toinen vaihe.
  • 5:53 - 5:57
    Selvä, niin,
  • 5:57 - 5:58
    jep. Vilkaistaan tämä nopeasti.
  • 5:58 - 6:00
    Splunk on suositeltu vaihtoehto
  • 6:00 - 6:02
    ja se tekee organisaatiosta
  • 6:02 - 6:05
    kestävämmän, kunhan sitä ei asenna.
  • 6:05 - 6:10
    Naurua
  • 6:10 - 6:15
    Suosionosoituksia
  • 6:15 -
    Okei, tämä aihe on lähellä sydäntäni,
  • Not Synced
    sillä usein väitellään siitä,
  • Not Synced
    pitäisikö paikkauksia asentaa ja
  • Not Synced
    mitkä paikkaukset asentaa ensimmäiseksi ja aiemmin
  • Not Synced
    tämä oli yksinkertaista, etsittiin ongelmia
  • Not Synced
    ja asennettiin sen mukaan paikkauksia, mutta sitten
  • Not Synced
    asioista tuli monimutkaisempia ja
  • Not Synced
    tulos oli tämä:
  • Not Synced
    kuuluisa podcast Saksassa,
  • Not Synced
    joka kertoo kunnasta, joka joutui
  • Not Synced
    kiristysohjelman uhriksi ja joutui kutsumaan
  • Not Synced
    armeijan apuun
  • Not Synced
    Epäselvää puhetta yleisössä
  • Not Synced
    Ja mitä pitäisi tehdä, sanon tämän
  • Not Synced
    täydellisyyden vuoksi, täytyy asentaa kaikki paikkaukset
  • Not Synced
    välittömästi, mutta se jääköön toisen esitelmän aiheeksi.
  • Not Synced
    Saatatte siis huomata kuvion:
  • Not Synced
    IT-turvallisuusala
  • Not Synced
    suosittelee jotakin ja
  • Not Synced
    jos suositukseen uskoo, on pian kusessa, joten ei kannata.
  • Not Synced
    Jos ette näe kunnolla, tässä lukee "käärme-
  • Not Synced
    karkoterakeet", ja niiden vieressä
  • Not Synced
    nukkuu käärme.
  • Not Synced
    Naurua
  • Not Synced
    Yskäisy
  • Not Synced
    Niin, jos emme voi luottaa
  • Not Synced
    alan suosituksiin, niin mitä pitäisi tehdä?
  • Not Synced
    Ja minulla oli paljon
  • Not Synced
    aikaa, koska minun ei tarvinnut
  • Not Synced
    siivota kehnojen IT-turvallisuusalan
  • Not Synced
    suositustuotteiden jälkiä, joten
  • Not Synced
    mihin kulutin aikaani?
  • Not Synced
    Päätin, että tarvitsen blogin
  • Not Synced
    jo jonkin aikaa sitten, ja aloin
  • Not Synced
    miettimään, mitä tarvitsen,
  • Not Synced
    itse asiassa en kovin paljoa, koska olisin
  • Not Synced
    voinut vain tarjota staattista sisältöä ja pieni
  • Not Synced
    hakutoimintokin olisi hyväksi, muttei kuitenkaan
  • Not Synced
    pakollinen. En tarvinnut kommenttikenttää
  • Not Synced
    laillisista syistä, koska ihmiset tapaavat
  • Not Synced
    lähetellä linkkejä haittaohjelmiin ja
  • Not Synced
    mitä lie, mitä en halua,
  • Not Synced
    joten ensimmäinen versio oli
  • Not Synced
    oikeastaan hyvin helppo toteuttaa, se oli pieni
  • Not Synced
    tavanomainen verkkopalvelin ja
  • Not Synced
    blogin julkaisut olivat staattisia HTML-tiedostoja,
  • Not Synced
    yksi tiedosto kuukautta kohden. Se oli oikeastaan
  • Not Synced
    hyvin helppoa, sillä jos haluaa hakea joitain voi vain
  • Not Synced
    kysyä Googlelta rajoittaen haun verkkosivulle.
  • Not Synced
    Julkaiseminenkin oli helppoa, minulla oli pieni
  • Not Synced
    skripti, jonka pystyin ajamaan palvelimella,
  • Not Synced
    jolle kirjauduin SSH:lla, ja SSH:n luotan
  • Not Synced
    autentikaation suhteen, joten uutta
  • Not Synced
    pintaa hyökkäyksille ei ole, käytin sitä muutenkin. Tämä on
  • Not Synced
    mahtava kokonaisuus, se on turvallinen ja yksinkertainen,
  • Not Synced
    riskit ovat pieniä ja se on suorituskyvyltään
  • Not Synced
    erinomainen, mutta siitä ei voisi pitää esitelmää
  • Not Synced
    CCC:ssä, koska
  • Not Synced
    se on liian tylsä, joten aloin lisäämään
  • Not Synced
    riskejä kokoonpanoon.
  • Not Synced
    Naurua
  • Not Synced
    Ensimmäinen ideani oli, että
  • Not Synced
    olin kirjoittanut pienen web-palvelimen ja voisin
  • Not Synced
    vain käyttää blogia varten kyseistä palvelinta,
  • Not Synced
    koska sehän on minun koodiani joka tapauksessa,
  • Not Synced
    mutta siinä on huonojakin puolia. Jos blogi
  • Not Synced
    pyörii verkkopalvelimella, sillä on
  • Not Synced
    pääsy kaikkeen verkkopalvelimen muistiin,
  • Not Synced
    erityisesti se pääsee käsiksi TLS:n salaiseen
  • Not Synced
    avaimeen, enkä halua, että sitä saataisiin
  • Not Synced
    vietyä, joten se ei voi olla
  • Not Synced
    verkkopalvelimen moduuli
  • Not Synced
    ja ilmiselvä ratkaisu on, että
  • Not Synced
    sen täytyy pyöriä toisella käyttäjä-ID:llä
  • Not Synced
    Linuxilla, käytän siis Linuxia, mutta minkä tahansa
  • Not Synced
    Unixin tai Windowsinkin suhteen asia olisi sama.
  • Not Synced
    Se siis pyörii eri käyttäjällä,
  • Not Synced
    ja jos sitten joku kaappaa
  • Not Synced
    blogin prosessin jonkin
  • Not Synced
    bugin avulla, TLS-avaimeen ei pääse käsiksi.
  • Not Synced
    Ja samaan aikaan kun tein sitä,
  • Not Synced
    ala teki tätä.
  • Not Synced
    Puheensorinaa
  • Not Synced
    Sehän on tämän esitelmän vitsinä,
  • Not Synced
    näytän kaikenlaista kiinnostavaa,
  • Not Synced
    mitä ala tekee, ja sitten näytän,
  • Not Synced
    mitä itse tein siinä samalla.
  • Not Synced
    Seuraava kysymys:
  • Not Synced
    Missä sisältöä säilytetään? Voisin vain säilyttää
  • Not Synced
    tiedostoja levyllä staattisena HTML:nä kuten aiemminkin,
  • Not Synced
    mutta uskon, ettei se olisi riittävän ammattimainen ratkaisu.
  • Not Synced
    Hyvää CCC-esitelmää varten täytyy
  • Not Synced
    olla ammattimaisempi.
  • Not Synced
    Olin myös toista
  • Not Synced
    projektia varten kirjoittanut LDAP-palvelimen,
  • Not Synced
    joten päätin uudelleenkäyttää sitä, ja
  • Not Synced
    samalla kuin tein sitä, ala teki tätä.
  • Not Synced
    Otin tämän kuvan Jerusalemin
  • Not Synced
    lentokentällä, tämä on siis oikea mainos
  • Not Synced
    eikä photoshopattu. Sen omistaa
  • Not Synced
    Northrop Grumman, joka on
  • Not Synced
    puolustusvälineteollisuusyritys, ja se kertoo koko
  • Not Synced
    spektrin kyberistä, kattaen kaikki alueet.
  • Not Synced
    Puheensorinaa
  • Not Synced
    Siis, miksi kirjoittaisin oman LDAP-palvelimeni?
  • Not Synced
    Pääasiassa siksi, että se on pieni ja
  • Not Synced
    koska olen ammatiltani tarkastaja, ja tiedän,
  • Not Synced
    että jos haluaa mahdollisuuden oikeasti
  • Not Synced
    tarkastaa koodia, sen täytyy olla määrältään vähäistä,
  • Not Synced
    sillä rajallinen resurssi on
  • Not Synced
    aika, jota voi käyttää koodin tarkastamiseen.
  • Not Synced
    Siis, Postgres on yleinen SQL-tietokanta.
  • Not Synced
    Slapd on palvelimen
  • Not Synced
    avoin LDAP-toteutus ja tinyldap on
  • Not Synced
    omani ja näette, että se on paljon hitaampi,
  • Not Synced
    tosin paljon pienempi.
  • Not Synced
    Niin, mainoskampanja oli laajempi,
  • Not Synced
    keräsin tähän muutamia hauskoja kuvia.
  • Not Synced
    Siis, jos joku onnistuu
  • Not Synced
    hakkeroimaan blogin CGI:n tai mitä hyvänsä moduulia
  • Not Synced
    käytänkään yhdistääkseni blogin
  • Not Synced
    verkkopalvelimeen, hän pystyy avaaman minkä tahansa tiedoston, jonka
  • Not Synced
    blogi itsessään pystyy lukemaan, jonka sen UID pystyy lukemaan,
  • Not Synced
    joten minun pitäisi varmaankin tehdä
  • Not Synced
    asialle jotakin, se oli seuraava vaihe.
  • Not Synced
    Ala puolestaan alkoi miettimään
  • Not Synced
    haavoittuvuuksien hallintaa.
  • Not Synced
    Unixilla, Linuxilla on mekanismi,
  • Not Synced
    josta pidin erillisen esitelmän
  • Not Synced
    viime kongressissa,
  • Not Synced
    se on nimeltään seccomp ja seccomp on kuin
  • Not Synced
    palomuuri järjestelmäkutsuille, joten voin käyttää
  • Not Synced
    seccompia estääkseni open-järjestelmäkutsun, jota käytetään
  • Not Synced
    tiedostojen avaamiseen, mutta jos minun täytyy
  • Not Synced
    itse käyttää open-funktiota,
  • Not Synced
    en voi estää sitä, joten mitä
  • Not Synced
    tehdä sen suhteen? Esimerkiksi blogini
  • Not Synced
    kutsuu localtime-funktiota, joka muuttaa Unix-ajan
  • Not Synced
    paikallisen aikavyöhykkeen ajaksi ja sitä
  • Not Synced
    varten se avaa tiedoston, joka sisältää
  • Not Synced
    kuvauksen järjestelmän aikavyöhykkeestä,
  • Not Synced
    ja se kutsuu openia. Siis,
  • Not Synced
    jos ottaisin vain open-järjestelmäkutsun pois käytöstä
  • Not Synced
    blogissani, niin se ei voisi tehdä
  • Not Synced
    tarvittavaa aikamuunnosta, mikä on
  • Not Synced
    oikeastaan vanha ongelma, joka pätee myös
  • Not Synced
    setuid-ohjelmiin ja on pätenyt niihin jo
  • Not Synced
    vuosikymmeniä, voidaankin siis tehdä niin, että
  • Not Synced
    koodi järjestetään uudelleen siten, että ennen kuin
  • Not Synced
    estää tai, yleisesti ottaen, pudottaa oikeuksia,
  • Not Synced
    ensin tehdään open-kutsut,
  • Not Synced
    olkoon ne esimerkkinä, ja
  • Not Synced
    sitten poistetaan open käytöstä, ja sitten katsotaan
  • Not Synced
    hyökkääjän tarjoamaa dataa,
  • Not Synced
    koska jos hyökkääjä tai mikä tahansa lähde,
  • Not Synced
    johon ei luoteta, yrittää hakkeroida palveluasi, se tapahtuu
  • Not Synced
    palvelullesi annetun datan avulla,
  • Not Synced
    ympäristö on saastunut, joten katsotaan,
  • Not Synced
    minkälaiset elementit ympäristössä
  • Not Synced
    hyökkääjä voi määrätä ja
  • Not Synced
    ennen kuin koskee niiden yhteenkään tavuun, täytyy
  • Not Synced
    tehdä kaikki vaaralliset toimenpiteet, jos vain voi.
  • Not Synced
    Siis, tässä tapauksessa, kutsun localtime-funktiota
  • Not Synced
    kerran ennen kuin pudotan pois open-järjestelmäkutsun,
  • Not Synced
    ja libc tallentaa välimuistiin
  • Not Synced
    aikavyöhykedatan ja ensi kerralla, kun kutsun sitä
  • Not Synced
    sen jälkeen, kun olen käsitellyt hyökkääjän
  • Not Synced
    määrittelemää koodia, ei ole enää tarvetta käyttää
  • Not Synced
    open-funktiota. Tämä on suuri etu
  • Not Synced
    seccomp:n hyväksi ja muita vastaavia teknologioita,
  • Not Synced
    kuten SELinuxia, vastaan, sillä ne asettavat
  • Not Synced
    estot järjestelmäkutsuille
  • Not Synced
    koko prosessin tasolla, joten tämä
  • Not Synced
    olkoon esimerkkinä siitä, mitä
  • Not Synced
    pitäisi tehdä: Pitäisi katsoa
  • Not Synced
    prosessia ja, ainakin jos on
  • Not Synced
    pääsy lähdekoodiin, pitää katsoa, mitä
  • Not Synced
    kaikkea täytyy tehdä ennen kuin voi
  • Not Synced
    luopua oikeuksista, ja siirtää kaikki sellainen aiemmaksi.
  • Not Synced
    Näin siis tein.
  • Not Synced
    Tämä tässä on mallikuva
  • Not Synced
    Viron kyberturvallisuuskeskukselta,
  • Not Synced
    tämäkin on siis aito.
  • Not Synced
    Okei, siis, jatketaan
  • Not Synced
    seuraavaan ajatukseen. Sanotaan, että
  • Not Synced
    joku hakkeroi blogimoduulin, ja
  • Not Synced
    että joku toinen käyttää samaa moduulia, mutta
  • Not Synced
    omaa salasanaansa.
  • Not Synced
    Tämä on yleinen ongelma verkkosivuilla,
  • Not Synced
    joilla on jonkinlainen kirjautumistoiminto,
  • Not Synced
    josta saa jonkinlaisen istuntotunnisteen tai
  • Not Synced
    jonkin vastaavan, ja jos joku onnistuu
  • Not Synced
    kaappaamaan väliohjelmiston
  • Not Synced
    tai palvelinkomponentin,
  • Not Synced
    hän pystyy näkemään kaikki muutkin yhteydet,
  • Not Synced
    jos sama prosessi käsittelee niitä.
  • Not Synced
    Se on siis merkittävä ongelma,
  • Not Synced
    jonka voi kyllä korjata, mikä
  • Not Synced
    on meille varsin hyvä asia.
  • Not Synced
    Ja esimerkissäni tämä johti minut käyttämään CGI:tä
  • Not Synced
    FastCGI:n sijaan, FastCGI on siis
  • Not Synced
    uudempi versio CGI:stä,
  • Not Synced
    ja sen ideana on, ettei
  • Not Synced
    uutta prosessia käynnistetä jokaista
  • Not Synced
    pyyntöä varten, vaan käytetään Unix domain
  • Not Synced
    socketia, tai muuta pistoketta FastCGI-prosessiin,
  • Not Synced
    joka avaa ehkä yhden säikeen
  • Not Synced
    pyyntöä kohden tai jotain sellaista, mutta yleensä
  • Not Synced
    FastCGI:n kanssa yritetään käsitellä
  • Not Synced
    pyynnöt samassa prosessissa, jotta
  • Not Synced
    voidaan käyttää kyseistä prosessia välimuistin ylläpitoon,
  • Not Synced
    joten FastCGI on suorituskyvyn kannalta edullinen valinta,
  • Not Synced
    mutta tietoturvasyistä en
  • Not Synced
    käytä FastCGI:tä, joten en voi käyttää
  • Not Synced
    välimuistia, mikä on merkittävä haittapuoli
  • Not Synced
    ja voisi arvella, että blogista tulee lopulta
  • Not Synced
    todella, todella hidas. Siis,
  • Not Synced
    ensiksi, minun täytyy käyttää CGI:tä
  • Not Synced
    FastCGI:n sijaan ja toiseksi, on yhä mahdollista
  • Not Synced
    käyttää debuggaukseen tarkoitettuja API:ta. Siis, jos käyttää GDB:tä tai
  • Not Synced
    jotain muuta debuggeria toisen
  • Not Synced
    prosessin seurantaan, se käyttää ptrace-API:ta,
  • Not Synced
    mutta sekin on pohjimmiltaan järjestelmäkutsu, joten voin käyttää seccompia
  • Not Synced
    ptracen kieltämiseksi. Jos noudatan näitä kahta taktiikkaa, ja
  • Not Synced
    hyökkääjä kaappaa blogin prosessin, kaikki
  • Not Synced
    mitä hän voi nähdä, on hänen itse lähettämänsä data.
  • Not Synced
    Kysessä on siis suuri etu.
  • Not Synced
    Okei, ENISA on itse asiassa EU:n virasto,
  • Not Synced
    mikä on mielestäni hyvin häiritsevää,
  • Not Synced
    sillä se kuluttaa paljon veronmaksajien rahoja,
  • Not Synced
    mutta ei siitä sen enempää. Oletetaan, että hyökkääjä
  • Not Synced
    pystyy hakkeroimaan blogini. Silloin hän pystyy kiertämään
  • Not Synced
    kaiken pääsynhallinnan, jota blogissani käytetään.
  • Not Synced
    Siis esimerkiksi, jos minulla on ylläpitosivu tai
  • Not Synced
    jokin kirjautumista vaativa osa verkkosivusta,
  • Not Synced
    ja sitä hallitsee sama ohjelma, ja
  • Not Synced
    pääsynhallintaa tehdään siis blogin
  • Not Synced
    CGI:ssä, ja joku onnistuu
  • Not Synced
    hakkeroimaan blogini CGI:n, hän voi
  • Not Synced
    halutessaan vain ohittaa hallinnan, joten on
  • Not Synced
    hyvin haastavaa tehdä pääsynhallintatoimenpiteitä, joita ei ole
  • Not Synced
    mahdollista kiertää, jos ne toteuttaa omassa
  • Not Synced
    koodissaan. Ratkaisu on siis olla tekemättä sitä
  • Not Synced
    omassa koodissa. En rajoita mitenkään
  • Not Synced
    pääsyä omassa blogissani, vaan teen sen
  • Not Synced
    LDAP-palvelimen puolella. Jos siis yhdistää blogiini
  • Not Synced
    ja antaa salasanan, blogi itse ei tiedä,
  • Not Synced
    onko salasana oikein
  • Not Synced
    vaiko väärin. Esimerkiksi, jos
  • Not Synced
    on käyttöliittymä, jonka avulla voi lisätä
  • Not Synced
    uusi blogijulkaisuja tai muokata vanhoja
  • Not Synced
    sellaisia, jota varten täytyy tunnistautua,
  • Not Synced
    mutta blogin CGI ei tiedä, ovatko tunnukset
  • Not Synced
    oikein vai väärin ja avaa
  • Not Synced
    yhteyden LDAP-palvelimeen käyttäen
  • Not Synced
    annettuja tunnuksia, ja vasta LDAP-palvelin
  • Not Synced
    sanoo kyllä tai ei. Koska estimme pääsyn
  • Not Synced
    ptrace-järjestelmäkutsuun ja prosessit
  • Not Synced
    on eristetty toisistaan, se tarkoittaa,
  • Not Synced
    ettei mitään jää kierrettäväksi.
  • Not Synced
    Siis, jos joku hakkeroi blogini,
  • Not Synced
    hän ei juuri hyödy, koska
  • Not Synced
    hän voi käytännössä tehdä vain samoja asioita
  • Not Synced
    kuin jo valmiiksi. Hän voi vain kommunikoida
  • Not Synced
    LDAP-palvelimen kanssa.
  • Not Synced
    Jes, nyt aletaan jo puhua
  • Not Synced
    James Bond -tason jutuista
  • Not Synced
    hyökkäyksien monimutkaistuessa entisestään.
  • Not Synced
    Samalla ala innostui
  • Not Synced
    uhkatiedustelufiideistä, jotka
  • Not Synced
    ovat täysin turhia. Älkää käyttäkö niihin rahaa.
  • Not Synced
    Sanotaan siis, että hyökkääjä hakkeroi
  • Not Synced
    blogini, ja siirtyi tinyldapin pariin, ja
  • Not Synced
    nyt siis hyökkää tinyldapia kohtaan. Silloin hän pystyykin
  • Not Synced
    pääsemään käsiksi toisiin tileihin, koska tinyldap
  • Not Synced
    käsittelee myös yhteyksiä toisiin blogin ilmentymiin,
  • Not Synced
    joten ongelma on sama kuin aiemminkin,
  • Not Synced
    maaliviivaa on vain siirretty
  • Not Synced
    hieman eteenpäin. Tämä täytyy estää,
  • Not Synced
    ja itsestäänselvä ratkaisu on
  • Not Synced
    tehdä sama homma kuin blogin kanssa
  • Not Synced
    ja käyttää yhtä LDAP-palvelimen prosessia jokaista
  • Not Synced
    pyyntöä kohden, ja sitten vain kiellämme
  • Not Synced
    ptracen käytön. Siis, enää ei ole mahdollista
  • Not Synced
    nähdä, vaikka pystyisikin ajamaan koodia
  • Not Synced
    LDAP-palvelimen sisällä, ei olisi mahdollista nähdä,
  • Not Synced
    mitä salasanoja toiset käyttäjät käyttävät.
  • Not Synced
    On siis yhä mahdollista nähdä-
    Okei, ala tekee
  • Not Synced
    taas jotain hevonpaskaa. On yhä mahdollista nähdä
  • Not Synced
    salasana LDAP:n muistista, koska
  • Not Synced
    LDAP-palvelimella täytyy olla tallessa versio
  • Not Synced
    salasanasta, jota vastaan salasanoja voi tarkistaa ja
  • Not Synced
    alan käytäntö, paras käytäntö, on
  • Not Synced
    käyttää suolattuja tiivisteitä, joten itse salasanaa
  • Not Synced
    ei olekaan muistissa ollenkaan.
  • Not Synced
    Silti, jos joku onnistuu hyökkäyksessä
  • Not Synced
    tinyldapia kohtaan blogin kautta, hän pystyy
  • Not Synced
    varastamaan tiivisteet ja yrittämään niiden murtamista,
  • Not Synced
    mutta koska olen ainoa, joka lisää käyttäjiä,
  • Not Synced
    voin vapaasti hallita salasanojen turvallisuusvaatimuksia,
  • Not Synced
    joten onnea vaan väsytyshyökkäyksen kanssa.
  • Not Synced
    Okei, tämä on oikeastaan aito ongelma,
  • Not Synced
    ei kuitenkaan nimenomaan blogini suhteen
  • Not Synced
    vaan toisten verkkopalvelujen tai siis
  • Not Synced
    kaikkien palvelujen, joihin voi yhdistää internetin kautta:
  • Not Synced
    Mitä jos hyökkääjä ei haluakaan varastaa
  • Not Synced
    dataa, vaan salata sen?
  • Not Synced
    Kyseessä on siis kiristysohjelma. Mitä sille voi
  • Not Synced
    siis tehdä? Minun ideani oli tallentaa
  • Not Synced
    data lukumuistiin, siis
  • Not Synced
    LDAP-palvelimella on muisti, joka sisältää
  • Not Synced
    kaikki blogimerkinnät ja se on saatavilla vain luettavaksi
  • Not Synced
    LDAP-prosessille. Sitä voi vain lukea,
  • Not Synced
    ja jos siihen haluaa kirjoittaa,
  • Not Synced
    jos esimerkiksi pitää lisätä uusi merkintä,
  • Not Synced
    se lisätäänkin toiseen tiedostoon, jota
  • Not Synced
    kutsun journaliksi. SQL-tietokannoilla on käytössä
  • Not Synced
    vastaava idea, ja sitä käytetään transaktioiden
  • Not Synced
    kumoamiseen. Voin tehdä samoin,
  • Not Synced
    kyseessä on periaatteessa lokitiedosto,
  • Not Synced
    mikä tarkoittaa, että kaikki muutokset
  • Not Synced
    viime kerrasta, kun muisti,
  • Not Synced
    lukumuisti, luotiin, kaikki eroavaisuudet
  • Not Synced
    tallennetaan peräkkäin lokitiedostoon,
  • Not Synced
    eli journaliin. Suorituskyky
  • Not Synced
    huononee sitä mukaa, kun journal kasvaa,
  • Not Synced
    joten silloin tällöin täytyy yhdistää
  • Not Synced
    lukumuistiosio ja journal
  • Not Synced
    uudeksi, isommaksi lukumuistiosioksi ja
  • Not Synced
    sen teen itse manuaalisesti,
  • Not Synced
    koska tinyldap ei pystyisi siihen,
  • Not Synced
    koska siltä on kielletty muistiin kirjoittaminen.
  • Not Synced
    Sehän oli osa turvallisuusmekanismia.
  • Not Synced
    Käyttäen seccompia voin poistaa käytöstä
  • Not Synced
    järjestelmäkutsuja, voin myös asentaa suodattimia, joten
  • Not Synced
    voin sanoa, että open on sallittu toimenpide, mutta vain, jos
  • Not Synced
    käyttää O_APPENDia. O_APPEND Unixin open-järjestelmäkutsun
  • Not Synced
    yhteydessä tarkoittaa, että jokainen muutos, jonka
  • Not Synced
    tiedostonkuvaukseen tekee, tallentuu automaattisesti
  • Not Synced
    aina loppuun. Siis, jos tiedän, että jos joku
  • Not Synced
    onnistuu pääsemään käsiksi tinyldapin
  • Not Synced
    binaaritiedostoon ja pystyy sen avulla kirjoittamaan journaliin, niin
  • Not Synced
    ainoa paikka, johon muutoksia voi tehdä,
  • Not Synced
    on aivan tiedoston lopussa, mikä on oikeastaan
  • Not Synced
    todella hyvä asia, sillä se tarkoittaa, että
  • Not Synced
    jos hakkeroi palveluni ja lisää roskaa
  • Not Synced
    blogiini, voin vain poistaa palan tiedoston lopusta ja
  • Not Synced
    tilanne on sillä selvä. Jos tätä verrataan
  • Not Synced
    tavanomaiseen SQL-tietokantaa, jos silloin joku kirjoittaa
  • Not Synced
    tietokantaan, muutosten kumoamiseksi täytyy ladata
  • Not Synced
    varmuuskopio, koska mikä tahansa
  • Not Synced
    on saattanut muuttua missä tahansa.
  • Not Synced
    Tinyldapilla ei kuitenkaan ole edes
  • Not Synced
    pääsyä tiedostojärjestelmään, eikä se siis pysty
  • Not Synced
    muuttamaan mitään muistin sisältöä, joten
  • Not Synced
    voin palata rauhassa nukkumaan.
  • Not Synced
    Ala käytti rahaa
  • Not Synced
    kyberturvallisuusverkostoarkkitehtuuriin.
  • Not Synced
    Jep. Journalin päivitys on asia,
  • Not Synced
    joka minun täytyy manuaalisesti tehdä kaistan ulkopuolisesti.
  • Not Synced
    Se ei siis ole mikään automaattinen prosessi,
  • Not Synced
    koska teen sen manuaalisesti ja
  • Not Synced
    kun teen sen,
  • Not Synced
    dataahan ei ole paljoa, vain viikon
  • Not Synced
    tai parin ajalta, voin vain lukea sen
  • Not Synced
    läpi ja tarkistaa, että kaikki näyttää
  • Not Synced
    siltä, miltä pitäisi. Tämä ei välttämättä ole vaihtoehto
  • Not Synced
    kaikissa muissa skenaarioissa, mutta on tärkeää
  • Not Synced
    ymmärtää, että vaikka dataa on enemmän,
  • Not Synced
    kaikkea dataa ei yleensä olekaan paljoa enempää.
  • Not Synced
    Suurin osa sisällöstä on muuttumatonta lukusisältöä,
  • Not Synced
    ja lisäksi on joitain lokitiedostoja, joihin
  • Not Synced
    lisätään jatkuvasti dataa ja jotka kasvavat kasvamistaan,
  • Not Synced
    mutta yleensä on olemassa osa datasta,
  • Not Synced
    osa, johon siis...
  • Not Synced
    henkilötiedot kuuluvat, kuten myös
  • Not Synced
    laskutustiedot, ja tämä data on yleensä
  • Not Synced
    määrältään vähäistä ja siihen voidaan
  • Not Synced
    soveltaa samaa strategiaa.
  • Not Synced
    Jaa, no niin.
  • Not Synced
    Hyökkääjä voi siis yhä kirjoittaa roskaa
  • Not Synced
    blogiini, mikä ei ole ideaalinen tilanne,
  • Not Synced
    mutta koska kaikki, mitä hän voi tehdä, on lisätä
  • Not Synced
    dataa journalin loppuun, voin käyttää tekstieditoria
  • Not Synced
    ja avata journalin sekä rajata sen sisällön johonkin kohtaan.
  • Not Synced
    Saan siis datan palautettua
  • Not Synced
    tilanteeseen, jossa blogia alettiin saastuttamaan.
  • Not Synced
    Tilanne ei ole ideallinen,
  • Not Synced
    mutta kuitenkin hyvä hätätapauksien kannalta,
  • Not Synced
    koska on mahdollista
  • Not Synced
    tutkia tilannetta ensin rauhassa.
  • Not Synced
    Ensin poistetaan käytöstä kirjoitusoikeudet,
  • Not Synced
    sitten vandalismi poistetaan journalista,
  • Not Synced
    ja tässä kohtaa voidaan olla varmoja, ettei mitään ole menetetty,
  • Not Synced
    koska jos blogista haluaa poistaa merkinnän,
  • Not Synced
    sekin on mahdollista, mutta se tarkoittaa käytännössä,
  • Not Synced
    että journalin loppuun lisätään
  • Not Synced
    merkintä, joka sanoo: "tämä tieto
  • Not Synced
    poistetaan", ja tämän merkinnän voi vain poistaa,
  • Not Synced
    jolloin poistettu tieto saadaan takaisin. Ei siis ole
  • Not Synced
    mahdollista vandalisoida mitään blogin
  • Not Synced
    dataa, joka oli siellä ennen vandalisointia.
  • Not Synced
    On mahdollista ainoastaan lisätä loppuun roskaa,
  • Not Synced
    ja tämän mahdollisuuden kanssa jo pärjätään.
  • Not Synced
    Pitäisi olla johtavana ajatuksena
  • Not Synced
    kaiken turvallisuuden lomassa, että
  • Not Synced
    jos joutuu hakkeroinnin uhriksi, tilanne on
  • Not Synced
    hyvin stressaava, pomo tulee olemaan
  • Not Synced
    olan takana hengittelemässä niskaasi kyselemässä, että
  • Not Synced
    "Onko jo valmista?" ja että "Onko se nyt korjattu?", ja sillä hetkellä
  • Not Synced
    tulisi olla mahdollisimman vähän asioita, joista huolehtia.
  • Not Synced
    Kaikki stressi kannattaa siirtää
  • Not Synced
    hakkerointia edeltävälle ajalle, koska
  • Not Synced
    silloin aikaa on enemmän.
  • Not Synced
    Okei, ala teki taas kaikenlaista.
  • Not Synced
    Siis, entä jos hyökkääjä ei kirjoitakaan
  • Not Synced
    roskaa journaliin, vaan kirjoittaa jotain
  • Not Synced
    haitallista journaliin, joka aiheuttaa sen,
  • Not Synced
    että kun jokin tinyldap-ilmentymä lukee sitä
  • Not Synced
    seuraavan kerran, ilmentymä saastuu?
  • Not Synced
    Se on mahdollisuus, joka on
  • Not Synced
    meille hyvin epäedullinen,
  • Not Synced
    mutta on tajuttava, kuinka uskomaton skenaario
  • Not Synced
    on kyseessä. Nyt puhutaan hyökkääjästä,
  • Not Synced
    joka on löytänyt vakaan nollapäivähaavoittuvuuden blogista,
  • Not Synced
    ja käyttänyt sitä sekä toista
  • Not Synced
    vakaata nollapäivähaavoittuvuutta tinyldapissa kirjoittaakseen journaliin,
  • Not Synced
    ja käyttänyt vielä
  • Not Synced
    kolmatta nollapäivähaavoittuvuutta journalin
  • Not Synced
    lukukoodia vastaan. No,
  • Not Synced
    kyllä, kyseessä on yhä ongelma, mutta
  • Not Synced
    riskiä on vähennetty merkittävästi.
  • Not Synced
    Tämä on juuri sitä,
  • Not Synced
    mitä yritän sanoa:
  • Not Synced
    kyseessä ei ole kaikki tai ei mitään -tilanne. Riittää,
  • Not Synced
    että riski saadaan puolitettua, se on jo hyvin
  • Not Synced
    tärkeää, ja sitä pitäisi tehdä aina,
  • Not Synced
    kun mahdollista: Mitä enemmän riskiä saa kavennettua,
  • Not Synced
    sitä paremmassa tilanteessa ollaan,
  • Not Synced
    kun käy huonosti.
  • Not Synced
    Koska mitä pienempi määrä koodia,
  • Not Synced
    jota kohtaan voi yhä hyökätä, on,
  • Not Synced
    sitä paremmin tätä koodia voi tarkastaa ja varmistua,
  • Not Synced
    että koodi on kunnossa. Koodia voi näyttää ystäville ja
  • Not Synced
    hekin voivat tarkastaa sitä. On ehdottoman tarpeellista,
  • Not Synced
    että tätä aikaa säästetään, koska
  • Not Synced
    silloin tällöin käy niin, että pääsen
  • Not Synced
    näkemään koko koodikannan, ja
  • Not Synced
    tavanomainen koodikanta kaupallisille
  • Not Synced
    tuotteille koostuu gigatavuista lähdekoodia.
  • Not Synced
    Kukaan ei pysty lukemaan sitä kokonaisuudessaan.
  • Not Synced
    Olen hyvä työssäni, mutten aivan niin hyvä.
  • Not Synced
    Siis, tämä on hyvä tilanne.
  • Not Synced
    Ala taisi myydä suojausta
  • Not Synced
    hajautettuja palvelunestohyökkäyksiä kohtaan, juu, niinpä niin.
  • Not Synced
    Mitä siis tapahtuu, jos joku hyökkää verkkopalvelinta kohtaan?
  • Not Synced
    Kyseessä on edelleen suuri ongelma.
  • Not Synced
    Pahinta on siis
  • Not Synced
    täydellinen vahinko, eikö niin?
  • Not Synced
    Se on pahin mahdollisuus, joka voi toteutua,
  • Not Synced
    jos joku onnistuu hyökkäyksessä verkkopalvelinta kohtaan.
  • Not Synced
    Hyökkääjä näkee kaiken kulkevan verkkoliikenteen,
  • Not Synced
    hän pystyy vakoilemaan TLS-suojattuja
  • Not Synced
    yhteyksiä ja nuuskimaan sieltä
  • Not Synced
    salasanoja, mikä on todella huono homma.
  • Not Synced
    Valitettavasti ei ole paljoakaan,
  • Not Synced
    jota asialle voisi tehdä.
  • Not Synced
    Olisi mahdollista tehdä jako,
  • Not Synced
    mikä on asia, josta on puhuttu
  • Not Synced
    jo jonkin aikaa OpenSSL:n kannalta. Se tarkoittaisi, että
  • Not Synced
    OpenSSL tekee kaiken riskialttiin kryptografian
  • Not Synced
    toisessa prosessissa, ja käyttää
  • Not Synced
    hiekkalaatikkoa kyseisen prosessin rajoittamiseen.
  • Not Synced
    Se olisi mahdollista, mutta kukaan ei ole toteuttanut sitä vielä
  • Not Synced
    OpenSSL:ssä, OpenSSL ei siis
  • Not Synced
    tue sitä. Verkkopalvelimeni
  • Not Synced
    tukee myös Mbed TLS:ää, mitä OpenSSL ei tue.
  • Not Synced
    Voisin käyttää tähän aikaa,
  • Not Synced
    ja itse asiassa olenkin
  • Not Synced
    jo käyttänyt siihen aikaa, mutta
  • Not Synced
    se ei ole vielä valmis. Se olisi
  • Not Synced
    hyvä tapa vähentää riskiä. Saatatte
  • Not Synced
    huomata, että työkalut, joita käytän
  • Not Synced
    riskin vähentämiseen ovat vain muutamia samoja.
  • Not Synced
    Ei ole mitään noituutta.
  • Not Synced
    En keksi uusia tapoja tarkastella asioita.
  • Not Synced
    Teen vain samoja asioita
  • Not Synced
    uudelleen ja uudelleen. Tunnistan sen osan koodista,
  • Not Synced
    joka on vaarallinen, ja sen jälkeen
  • Not Synced
    mietin, miten voisin pienentää kyseistä
  • Not Synced
    osaa koodista tai ehkä siirtää sen toiseen
  • Not Synced
    prosessiin, jota rajoitetaan. Sama täytyy
  • Not Synced
    tehdä myös verkkopalvelimelle,
  • Not Synced
    tietenkin, mutta prosessi on kesken.
  • Not Synced
    Jep, jälleen, niinpä niin.
  • Not Synced
    Miksen ole siis tehnyt sitä vielä?
  • Not Synced
    Verkkopalvelimessani on koodia kääntäessä tehtävä
  • Not Synced
    päätös, haluaako SSL-tukea käyttää vaiko ei.
  • Not Synced
    Näemme, että binaaritiedosto on
  • Not Synced
    huomattavasti suurempi SSL:n ollessa käytössä.
  • Not Synced
    Näytän tämän, koska se merkitsee,
  • Not Synced
    että hyökkäyspinnasta suurin osa on SSL-koodissa,
  • Not Synced
    ei siis minun koodissani. Jos siis voin
  • Not Synced
    siirtää SSL-koodin toiseen prosessiin,
  • Not Synced
    salaisen avaimen tulee silti olla näkyvillä,
  • Not Synced
    koska sitähän TLS tarvitsee,
  • Not Synced
    salaista avainta siis, muutoin se ei pysty
  • Not Synced
    tarvittavaan kryptografiaan. Suurimmalla osalla
  • Not Synced
    hyökkäyspinnasta olisi siis yhä pääsy avaimiin,
  • Not Synced
    voisin tehdä sen silti, koska
  • Not Synced
    omassa kodissani saattaa olla bugeja
  • Not Synced
    SSL-koodin sijaan, mutta se on vain 5%
  • Not Synced
    koko hyökkäyspinnasta, joten
  • Not Synced
    teen sen luultavasti jossain vaiheessa, mutta
  • Not Synced
    on turhaa odottaa mitään ihmeitä.
  • Not Synced
    Bugit OpenSSL:ssä koituvat vielä kuolemakseni,
  • Not Synced
    sille en voi oikeastaan mitään.
  • Not Synced
    Naurua
  • Not Synced
    Okei, tiedän siis, mitä ajattelette:
  • Not Synced
    Äänekästä naurua
  • Not Synced
    entä bugit käyttöjärjestelmän ytimessä?
  • Not Synced
    Katsoin siis läpi muutamia viime aikaisia
  • Not Synced
    ytimen bugeja ja kävi ilmi, että
  • Not Synced
    ne yleensä tapahtuvat järjestelmäkutsuissa, joita
  • Not Synced
    harvoin käytetään tavallisissa ohjelmissa. Koska rajoitan
  • Not Synced
    kaikki järjestelmäkutsut, joita en oikeasti
  • Not Synced
    tarvitse, yksikään bugeista ei koske minua.
  • Not Synced
    Tämähän on yleinen kuvio
  • Not Synced
    ytimen bugien suhteen.
  • Not Synced
    On olemassa projekti nimeltä Sandstorm,
  • Not Synced
    joka käyttää ptracea ja seccomp-seurantaa
  • Not Synced
    järjestelmäkutsujen hyökkäyspinnan
  • Not Synced
    vähentämiseksi ja joka laittaa tavalliset palvelut
  • Not Synced
    verkkopalveluille tarkoitettuun hiekkalaatikkoon, ja tämä
  • Not Synced
    auttaa kiertämään kaikenlaisia ytimen bugeja
  • Not Synced
    jo itsessään, kyseessähän on siis
  • Not Synced
    asia, jota varten ei tarvitse paljoa työskennellä,
  • Not Synced
    tietenkin, jos käytössä on lista järjestelmäkutsuista,
  • Not Synced
    niin käytetään valkoista listaa,
  • Not Synced
    pidetään yllä listaa asioista,
  • Not Synced
    jotka ovat erikseen sallittuja,
  • Not Synced
    eikä toisin päin.
  • Not Synced
    Yksikään tavanomainen ytimen bugi ei siis kosketa
  • Not Synced
    minua, koska hyödynnän seccompia.
  • Not Synced
    Ytimen bugit eivät ole yhtä iso
  • Not Synced
    ongelma kuin olettaisi. Ne ovat yhä
  • Not Synced
    olemassa, ellen ole paikannut niitä,
  • Not Synced
    mutta blogin kautta niihin ei pääse käsiksi.
  • Not Synced
    Minulla on pieni tunnustus:
  • Not Synced
    Olen tavallaan trolli ja se vaikutti
  • Not Synced
    myös tähän projektiin, käytin siis
  • Not Synced
    huonointa ohjelmointikieltä, C:tä.
  • Not Synced
    Trollaan siis turvallisuusporukkaa
  • Not Synced
    ja trollaan myös Java-porukkaa,
  • Not Synced
    joka väittää, että tulisi käyttää
  • Not Synced
    monisäikeistystä parantamaan suorituskykyä eikä
  • Not Synced
    yhtä prosessia pyyntöä kohden,
  • Not Synced
    käytän siis kahta fork- ja exec-kutsua
  • Not Synced
    jokaista pyyntöä kohden.
  • Not Synced
    Trollaan tietokantaporukkaa,
  • Not Synced
    en käytä välimuistia,
  • Not Synced
    en käytä connection poolia
  • Not Synced
    ja myös suorituskykyporukkaa, koska
  • Not Synced
    ratkaisuni on kaikesta huolimatta nopeampi kuin suurin osa
  • Not Synced
    tavanomaisista ratkaisuista, joten ohjelmiston
  • Not Synced
    suunnittelemisessa tällä tavoin ei ole juuri
  • Not Synced
    huonoja puolia,
  • Not Synced
    ratkaisu on muita vaihtoehtoja hitaampi,
  • Not Synced
    mutta suurin osa muista ohjelmistoista ei kuitenkaan
  • Not Synced
    ole yhtä nopeita, joten etumatkaa on riittävästi,
  • Not Synced
    jotta voi keskittyä turvallisuuteen
  • Not Synced
    suorituskyvyn sijaan ollen silti nopeampi.
  • Not Synced
    Kerrataan vielä käyttämäni metodologia.
  • Not Synced
    Ensimmäiseksi teen listan kaikistä hyökkäyksistä,
  • Not Synced
    joita voin kuvitella, ja tarkoitan nyt
  • Not Synced
    konkreettisia hyökkäyksiä, jotka voisivat tapahtua,
  • Not Synced
    ja ongelmista,
  • Not Synced
    jotka niistä seuraisivat.
  • Not Synced
    Jokaista listan kohtaa kohden
  • Not Synced
    mietin: "miten tämän voisi estää?",
  • Not Synced
    "voinko estää tämän?" ja "mitä estämiseksi on tehtävä?".
  • Not Synced
    Sen jälkeen teen, mitä pitää, helppoa.
  • Not Synced
    Tämä muistuttaa Feynmanin ongelmanratkaisualgoritmia
  • Not Synced
    hengeltään. Tätä prosessia kutsutaan
  • Not Synced
    uhkamallinnukseksi.
  • Not Synced
    Se on kuin kirosana, koska kuulostaa
  • Not Synced
    siltä, että siinä on kova työ
  • Not Synced
    eikä kukaan halua tehdä sitä, mutta tosiasiassa
  • Not Synced
    se on helppoa, pitää vain noudattaa näitä askelia.
  • Not Synced
    Ohjelmistoa tutkitaan ja
  • Not Synced
    mietitään, millä kaikilla tavoilla sitä kohtaan voisi hyökätä.
  • Not Synced
    Sitten harkitaan, miten
  • Not Synced
    hyökkäys voitaisiin estää tai toisinaan,
  • Not Synced
    voitaisiinko sitä estää ollenkaan
  • Not Synced
    ja jos ei, riskin kanssa on selviydyttävä.
  • Not Synced
    Tätä kutsutaan siis uhkamallinnukseksi,
  • Not Synced
    sitä kannattaa kokeilla, se on mahtavaa.
  • Not Synced
    Näitte, että yritin
  • Not Synced
    optimoida jotain tiettyä,
  • Not Synced
    tavoittelin jotain, tässä tapauksessa
  • Not Synced
    mahdollisimman vähäistä koodimäärää.
  • Not Synced
    Mitä enemmän koodia on, sitä enemmän bugeja
  • Not Synced
    siinä on. Kyseessä on vanha
  • Not Synced
    oivallus, muistaakseni alun perin
  • Not Synced
    IBM:n tutkimuksesta, jossa saatiin selville,
  • Not Synced
    että koodissa olevien bugien määrä on
  • Not Synced
    koodirivien määrän funktio.
  • Not Synced
    Asia ei oikeasti ole aivan näin simppeli,
  • Not Synced
    mutta pohjimmiltaan tämä on totta. Ei puhuta
  • Not Synced
    mistä tahansa koodista, jonka määrää halutaan minimoida,
  • Not Synced
    vaan jos koodi on vaarallista, haluan erityisesti
  • Not Synced
    vähentää sen määrää ja tärkein
  • Not Synced
    kategoria, jota pienentää, on
  • Not Synced
    turvallisuustakuita yllä pitävä koodi.
  • Not Synced
    Turvallisuustakuu on
  • Not Synced
    esimerkiksi se, että on mahdotonta kirjautua
  • Not Synced
    ilman oikeaa salasanaa.
  • Not Synced
    Haluan tällaisia asioita tarkastavaa koodia
  • Not Synced
    olevan niin vähän kuin mahdollista, ehkä yksi tai kaksi
  • Not Synced
    riviä koodia, jos vain mahdollista,
  • Not Synced
    jolloin on selkeää, onko koodi tehty oikein vai
  • Not Synced
    väärin. Mitä monimutkaisempi ohjelmakoodi on,
  • Not Synced
    sitä vaikeampaa on varmistua,
  • Not Synced
    onko se tehty oikein vai ei. Sehän on
  • Not Synced
    haluttu lopputulos, varmuus sitä, että
  • Not Synced
    koodi on oikein. Kuinka pitkälle siis pääsin?
  • Not Synced
    Tulokset ovat mielestäni melko hienot.
  • Not Synced
    LDAP-palvelimen voi kirjoittaa 5000 koodirivillä,
  • Not Synced
    itse blogi koostuu 3500 koodirivistä,
  • Not Synced
    plus LDAP-asiakaskirjasto,
  • Not Synced
    plus zlib,
  • Not Synced
    mutta käytän zlib:tä vain pakkaamiseen enkä
  • Not Synced
    purkamiseen, joten suurin osa hyökkäysskenaarioista
  • Not Synced
    ei koske minun zlib-käyttöäni.
  • Not Synced
    Verkkopalvelin on melko hidas,
  • Not Synced
    jos keskitytään pelkkään HTTP-koodiin,
  • Not Synced
    se valitettavasti sisältää myös
  • Not Synced
    SSL-kirjaston, joka on useita suuruusluokkia
  • Not Synced
    omaa koodiani isompi, ja tämähän on haluttu tilanne.
  • Not Synced
    Suurimman riskin ei tulisi olla
  • Not Synced
    uudessa koodissa, vaan vanhassa koodissa,
  • Not Synced
    jonka joku muu on jo tarkastanut,
  • Not Synced
    mikäli vain mahdollista. Tämä on
  • Not Synced
    siis optimointistrategia, yritä minimoida
  • Not Synced
    vaarallisen koodin määrä, mikä kuulostaa
  • Not Synced
    helpolta jutulta, mutta kun katsoo tarkemmin
  • Not Synced
    modernia ohjelmistokehitystä, huomaa,
  • Not Synced
    että todellisuus on päinvastainen: käytetään
  • Not Synced
    mahdollisimman monia ohjelmistokehyksiä.
  • Not Synced
    Strategian nimi on TCB-minimointi,
  • Not Synced
    sitä kannattaa kokeilla,
  • Not Synced
    olen pitänyt aiheesta jo esitelmän ja
  • Not Synced
    se on oikeastaan melko helppoa.
  • Not Synced
    Kerroin jo, mitä tein
  • Not Synced
    blogille vähentääkseni
  • Not Synced
    vahinkoa, joka voi aiheutua,
  • Not Synced
    jos joku onnistuu kaappaamaan sen,
  • Not Synced
    mikä on oikeastaan osa TCB-minimointiprosessia.
  • Not Synced
    Blogi oli varsin
  • Not Synced
    riskialtis, mutta vähensin
  • Not Synced
    oikeuksia ja poistin ylimääräisiä tarkastuksia.
  • Not Synced
    Lopulta, vaikka antaisin jokaiselle
  • Not Synced
    mahdollisuuden suorittaa koodia blogin sisällä,
  • Not Synced
    ei silti olisi mahdollista tehdä mitään, mitä ei olisi jo valmiiksi voinut.
  • Not Synced
    Se ei enää kuulu TCB:hen,
  • Not Synced
    TCB on osio, joka pitää yllä
  • Not Synced
    turvallisuustakuita, joita blogin CGI
  • Not Synced
    ei enää pidä.
  • Not Synced
    Tämä on siis tavoite.
  • Not Synced
    TCB pitää saada niin pieneksi,
  • Not Synced
    kuin vain mitenkään mahdollista ja matkan
  • Not Synced
    joka askel on tärkeä. Yksikään askel
  • Not Synced
    ei ole liian pieni. Jos pienenkin
  • Not Synced
    ylimääräisen osan voi poistaa, se kannattaa.
  • Not Synced
    Tämä on se, mitä minimoidaan
  • Not Synced
    TCB-minimoinnissa. Onnistuin poistamaan
  • Not Synced
    blogin TCB:stä. tinyldap:ssa
  • Not Synced
    on yhä riskejä, näitte riskimallin:
  • Not Synced
    jos joku onnistuu kaappaamaan
  • Not Synced
    tinyldap:n, hän pystyy lukemaan
  • Not Synced
    tiivisteet ja yrittämään niiden murtamista.
  • Not Synced
    Se on yhä huono homma, mutta sen kanssa selviydytään.
  • Not Synced
    Jos blogia vandalisoidaan, vahinko
  • Not Synced
    voidaan perua käymättä
  • Not Synced
    nauha-arkistossa, hyvä.
  • Not Synced
    Jos tätä verrataan nykyisiin alan standardeihin.
  • Not Synced
    voidaan huomata, että lähestymistapani on
  • Not Synced
    paljon parempi. Alalla näkee
  • Not Synced
    usein alustavalintoja,
  • Not Synced
    jotka tekee johto, eikä tekniikan tuntija.
  • Not Synced
    Alaa ei kiinnosta asiantuntemus eikä
  • Not Synced
    riskianalyysi, vaan vastuu
  • Not Synced
    usein vain leviää, koska vaikka
  • Not Synced
    yritettäisiin selvittää, kuka
  • Not Synced
    on vastuussa jostakin osasta, saadaan selville,
  • Not Synced
    että vastuussa oli tämä ja tuo tiimi,
  • Not Synced
    mutta emme ole siitäkään aivan varmoja,
  • Not Synced
    ja tiimi itse asiassa lakkautettiin viime viikolla,
  • Not Synced
    tilanne on siis kamala. Ja hiljattain
  • Not Synced
    saataville tulleet tekoälytyökalut johtavat myös
  • Not Synced
    vastuun leviämiseen.
  • Not Synced
    Jotkut taas puolestaan
  • Not Synced
    väittävät, että tilanne on niin huono, ettei
  • Not Synced
    se voi muuttua huonommaksi; siirrytään siis pilveen,
  • Not Synced
    ja silloin tilanne tietenkin huononee
  • Not Synced
    välittömästi. Pidän enemmän omasta ratkaisustani.
  • Not Synced
    Loppujen lopuksi on tärkeää
  • Not Synced
    tajuta, että tietoturvan puute,
  • Not Synced
    jota projekteissasi ehkä tällä hetkellä on,
  • Not Synced
    on itse aiheutettu ongelma. Kukaan ei seiso
  • Not Synced
    haulikon kanssa takanasi
  • Not Synced
    uhkailemassa. On mahdollista tarttua toimeen,
  • Not Synced
    täytyy vain aloittaa. Ongelmana on itse aiheutettu avuttomuus.
  • Not Synced
    Voit oikeasti auttaa
  • Not Synced
    itseäsi, mutta se täytyy aloittaa.
  • Not Synced
    Niin, miten tähän tilanteeseen päästiin?
  • Not Synced
    Tilanne ei selvästi ole hyvä.
  • Not Synced
    Ohjelmistot ovat huonoja ja
  • Not Synced
    sen takana on muitakin syitä kuin se,
  • Not Synced
    että ihmiset ovat tyhmiä. Syitä on muutamia.
  • Not Synced
    Aiemmin käytettiin
  • Not Synced
    mittatilausohjelmistoja, jotka tehtiin
  • Not Synced
    tiettyä tarkoitusta varten ja käytettiin
  • Not Synced
    vesiputousmallia. Oli
  • Not Synced
    vaatimusspesifikaatioita ja paljon
  • Not Synced
    byrokratiaa, eikä elämä ollut helppoa,
  • Not Synced
    mutta se tarkoitti myös, että tiedettiin tasan,
  • Not Synced
    mitä ohjelmiston pitää pystyä tekemään.
  • Not Synced
    Tällöin voitiin varmistaa, että
  • Not Synced
    kaikki muu on kiellettyä. Jos tietää,
  • Not Synced
    mitä sovelluksen täytyy pystyä tekemään,
  • Not Synced
    voidaan varmistaa, ettei se tee mitään muuta.
  • Not Synced
    Se on turvallisuutta, jos asiaa tarkemmin
  • Not Synced
    ajattelee. Estetään kaikki,
  • Not Synced
    mitä sovelluksen ei pitäisi tehdä,
  • Not Synced
    mikä olisi sitä, mitä hyökkääjä tekisi,
  • Not Synced
    jos saisi koneen kaapattua, eikö?
  • Not Synced
    Jos siis tietää etukäteen, mitä
  • Not Synced
    tavoittelee, on mahdollista
  • Not Synced
    toteuttaa oikeudenhallinta arkkitehtuuritasolla,
  • Not Synced
    kuten olen näyttänyt.
  • Not Synced
    Nykyään käytössä on enemmänkin Ikea-malli:
  • Not Synced
    ostetaan osia, joita on suunnittelemassa
  • Not Synced
    omat tiiminsä, eivätkä osia suunnittelevat tiimit
  • Not Synced
    tiedä, millainen lopputuote tulee olemaan.
  • Not Synced
    Joissain tapauksissa
  • Not Synced
    kukaan ei tiedä, millainen
  • Not Synced
    lopputuote on, mutta pahinta on,
  • Not Synced
    jos tiimi, joka rakentaa
  • Not Synced
    jotakin ohjelmiston osaa,
  • Not Synced
    ei tiedä, miten sitä tullaan käyttämään,
  • Not Synced
    jolloin siitä tehdään niin yleispätevä,
  • Not Synced
    kuin mahdollista. Mitä enemmän sillä
  • Not Synced
    voidaan saada aikaan, sitä parempi.
  • Not Synced
    Se on turvallisuuden vastakohta. Turvallisuus
  • Not Synced
    tarkoittaa sitä, että tiedetään, mitä pitää tehdä,
  • Not Synced
    ja että kaikki muu estetään.
  • Not Synced
    Tämä tarkoittaa, että ollaan niin geneerisiä, kuin mahdollista,
  • Not Synced
    osat optimoidaan ajatellen geneerisyyttä... Mikä se sana nyt
  • Not Synced
    on? Generismiä? En tiedä. Ne siis
  • Not Synced
    optimoidaan joustavuutta ajatellen,
  • Not Synced
    ne valitaan joustavuuden mukaan.
  • Not Synced
    Osan kehittäjällä ei yleensä
  • Not Synced
    ole aavistustakaan, mihin sitä käytetään,
  • Not Synced
    ja se tarkoittaa, ettei vähimpien oikeuksien
  • Not Synced
    periaatetta voida noudattaa, koska ei tiedetä, mitkä
  • Not Synced
    nämä vähimmät tarvittavat oikeudet ovat.
  • Not Synced
    Seuraa suuri sotku. Jos käyttää
  • Not Synced
    toisten ohjelmoimia osia,
  • Not Synced
    täytyy tehdä lisätyötä sen eteen,
  • Not Synced
    että saadaan selville, mitä kaikkea
  • Not Synced
    osalta voidaan estää, koska se varmasti pystyy
  • Not Synced
    tekemään enemmän kuin sen tarvitsisi. Mitä enemmän
  • Not Synced
    toimintaa rajoitetaan, sitä parempi
  • Not Synced
    turvallisuus on. Tilanne on
  • Not Synced
    vielä pahempi, jos käytetään ketterää kehitystä,
  • Not Synced
    koska silloin, jo määritelmän mukaan,
  • Not Synced
    lopputulos ei ole tiedossa ja
  • Not Synced
    jos sitä ei tiedä, ei ole mahdollista
  • Not Synced
    tehdä tietoturvaeristystä.
  • Not Synced
    Toinen argumentti, jonka vuoksi nykytilanteeseen jouduttiin,
  • Not Synced
    on suurtuotannon edut. Aiemmin oli niin,
  • Not Synced
    että jos rakentaa jotain laitetta,
  • Not Synced
    jonka täytyy tehdä jokin tietty asia,
  • Not Synced
    sanotaan vaikka mikroaaltouuni,
  • Not Synced
    etsitään osia ja
  • Not Synced
    yhdistetään ne, juotetaan
  • Not Synced
    ne yhteen ja ratkaistaan sitten ongelma.
  • Not Synced
    Nykyään osia ei enää
  • Not Synced
    juoteta yhteen, vaan kasaamiseen käytetään
  • Not Synced
    valmisosia, jotka ovat yleensä
  • Not Synced
    ohjelmoitavia. Pieni ARM-siru
  • Not Synced
    maksaa sentin kymmenyksen, joten miksi käyttää
  • Not Synced
    erikoistuneita osia, kun voi vain käyttää ARM-sirua
  • Not Synced
    ja ohjelmoida sen. Se kuitenkin tarkoittaa,
  • Not Synced
    että ongelma täytyy ratkaista ohjelmistolla.
  • Not Synced
    Ohjelmisto oikeastaan ratkaisee ongelman ja rauta
  • Not Synced
    on yleispätevää. Se tarkoittaa, että rautaa
  • Not Synced
    voidaan hakkeroida. On hiljattain huomattu,
  • Not Synced
    että se on ongelma.
  • Not Synced
    20 vuotta sitten pystyi olemaan varma, että jarru jarruttaa,
  • Not Synced
    mutta nykyään jarru onkin ohjelmoitava,
  • Not Synced
    ja harva on tajunnut,
  • Not Synced
    kuinka huono homma se on, mutta haitta on todellinen.
  • Not Synced
    Se tulee vielä puremaan meitä kaikkia
  • Not Synced
    persuksille. Hups.
  • Not Synced
    Alan vastaus on
  • Not Synced
    toistaiseksi ollut strutsimetodi.
  • Not Synced
    Asennetaan siis asioita, jotka ovat
  • Not Synced
    varmasti epäluotettavia, ja sitten
  • Not Synced
    asennetaan niiden päälle lisää tavaraa,
  • Not Synced
    joka on myös epäluotettavaa. Sitten puhutaan
  • Not Synced
    telemetriasta tai big datasta ja käytetään jotakin
  • Not Synced
    riskilokkausanalyysiohjelmaa,
  • Not Synced
    ja yhtäkkiä hyökkäyspinta on
  • Not Synced
    kasvanut kuin ydinräjähdyksen sienipilvi.
  • Not Synced
    Ongelma on itse aiheutettu.
  • Not Synced
    Kukaan ei ole pakottanut nykytilanteeseen.
  • Not Synced
    Teidän ei tarvitse tehdä näin omissa
  • Not Synced
    projekteissanne. Se olkoon tämän esitelmän
  • Not Synced
    positiivinen viesti. Yhteenvetona, jos esitelmästä
  • Not Synced
    ei jää mitään muuta päähän, muistakaa, että
  • Not Synced
    uhkamallinnus on olemassa ja että sitä
  • Not Synced
    kannattaa kokeilla, TCB-minimointi oikeasti
  • Not Synced
    auttaa, vähimpien oikeuksien periaate on sama asia,
  • Not Synced
    mutta eri näkökulmasta. Jos voitte käyttää
  • Not Synced
    loppuun lisäävää tallennusta, sitä
  • Not Synced
    kannattaa harkita.
  • Not Synced
    - Lohkoketju?
    - Ei lohkoketjua.
  • Not Synced
    Vain lisäävä tallennus.
  • Not Synced
    Ei siis lohkoketju.
  • Not Synced
    Naurua
  • Not Synced
    Suosionosoituksia
  • Not Synced
    - Vielä kaksi, enää kaksi
  • Not Synced
    - Enää kaksi diaa?
  • Not Synced
    - Niin, enää kaksi diaa.
  • Not Synced
    - Anteeksi, olen toiseksi tekeytyjä.
  • Not Synced
    - Ei se mitään.
  • Not Synced
    Siis, muistisääntönä pitäisi
  • Not Synced
    olla, jos joku pesemätön
  • Not Synced
    harrastelija netissä
  • Not Synced
    noudattaa sinua parempaa IT-turvallisuutta,
  • Not Synced
    sinun täytyy parantaa IT-turvallisuuttasi.
  • Not Synced
    Sen ei pitäisi olla mahdollista.
  • Not Synced
    No niin, siinä oli koko esitelmä.
  • Not Synced
    Meillä taitaa olla vielä aikaa kysymyksille, eikö?
  • Not Synced
    - On.
    - Okei, hienoa.
  • Not Synced
    - Nyt on oikea hetki pistää käsiä yhteen.
  • Not Synced
    Suosionosoituksia
  • Not Synced
    - Jos haluat esittää kysymyksen,
  • Not Synced
    meillä on huoneessa neljä mikrofonia,
  • Not Synced
    1, 2, 3, 4, ja otan ensimmäiseksi esiin
  • Not Synced
    kysymyksen internetistä.
  • Not Synced
    Joku netissä sanoo, että sinut
  • Not Synced
    oikeasti hakkeroitiin. Voitko selventää,
  • Not Synced
    mitä tapahtui?
  • Not Synced
    - Niin, itse asiassa oli kyllä
  • Not Synced
    tapaus, jossa joku pystyi julkaisemaan
  • Not Synced
    tavaraa blogiini, ja koska käytin vain lisäävää
  • Not Synced
    tallennusta, sivuutin sen oikeastaan
  • Not Synced
    olankohautuksella. Käyttäkää siis vain lisäävää tallennusta.
  • Not Synced
    Se pelastaa vielä nahkanne jonakin päivänä.
  • Not Synced
    Ongelma oli bugi
  • Not Synced
    pääsynhallintalistoissani, olin käyttänyt
  • Not Synced
    LDAP-palvelimessani pääsynhallintalistaa,
  • Not Synced
    jossa oli rivi, joka olisi
  • Not Synced
    pitänyt poistaa, mutta unohdin
  • Not Synced
    poistaa sen ja se tarkoitti, että oli mahdollista
  • Not Synced
    tehdä julkaisuja ilman tunnistautumista.
  • Not Synced
    Näin siis tapahtui, mutta mitään katastrofia ei käynyt,
  • Not Synced
    koska arkkitehtuurini esti vahinkojen syntymisen.
  • Not Synced
    - Huoneesta poistuville: Voisitteko poistua
  • Not Synced
    hyvin hiljaisesti, kiitos?
  • Not Synced
    Mikrofoni numero yksi.
  • Not Synced
    - Jes, onko olemassa vaihtoehtoa
  • Not Synced
    Windowsille ja MacOS:lle?
  • Not Synced
    - Turvallista vaihtoehtoa? No,
  • Not Synced
    periaatteessa on mahdollista noudattaa
  • Not Synced
    periaatteita, jotka näytin esitelmässäni,
  • Not Synced
    voitte noudattaa niitä kahta. Yleensä
  • Not Synced
    hakkeroiduiksi ei tulla, koska MacOS:ssä
  • Not Synced
    tai Windowsissa oli bugi, sitäkin tapahtuu, mutta
  • Not Synced
    isompia ongelmia ovat bugit itse kirjoitetuissa
  • Not Synced
    ohjelmistoissa tai käytetyissä ohjelmistoissa.
  • Not Synced
    Yritän siis sanoa,
  • Not Synced
    ettei Linux oikeasti ole
  • Not Synced
    varsinaisesti turvallisempi kuin Windows,
  • Not Synced
    pohjimmiltaan on mahdollista kirjoittaa
  • Not Synced
    turvallisia ja turvattomia ohjelmistoja
  • Not Synced
    millä tahansa käyttöjärjestelmällä. Silti kannattaa
  • Not Synced
    käyttää Linuxia, koska se tarjoaa joitakin etuja, mutta
  • Not Synced
    jos ottaa nämä tekniikat käyttöön omissa
  • Not Synced
    ohjelmistoissa, ne ovat turvallisia myös
  • Not Synced
    MacOS- ja Windows-laitteilla. Tämä
  • Not Synced
    ei siis koske loppukäyttäjiä, jotka valitsevat
  • Not Synced
    ohjelmistoja. Jos valitsee valmiin ohjelmiston,
  • Not Synced
    täytyy luottaa sen valmistajaan.
  • Not Synced
    Siitä ei pääse yli eikä ympäri. Jos taas
  • Not Synced
    kirjoittaa omat ohjelmistonsa, on mahdollista
  • Not Synced
    vähentää riskiä sellaiseen pisteeseen,
  • Not Synced
    että sen kanssa selviytyy ja että voi itse nukkua rauhassa.
  • Not Synced
    - Vai niin. Onko olemassa teknistä vaihtoehtoa
  • Not Synced
    tai vastaavaa ominaisuutta kuin seccomp
  • Not Synced
    Windowsille tai MacOS:lle, voiko siis pudottaa
  • Not Synced
    oikeudet sen jälkeen, kun on avannut tiedoston,
  • Not Synced
    näin esimerkiksi ottaen?
  • Not Synced
    - MacOS:n suhteen en ole varma, mutta tiedän,
  • Not Synced
    että FreeBSD:llä, NetBSD:llä ja OpenBSD:llä on vastaava
  • Not Synced
    ominaisuus, luulen, että sama pätee MacOS:n kanssa, mutta
  • Not Synced
    en ole siitä varma. Windowsilla on
  • Not Synced
    hiekkalaatikkomenetelmiä, voit katsoa
  • Not Synced
    esimerkiksi vaikka Chromen lähdekoodia,
  • Not Synced
    se käyttää hiekkalaatikkoa ja lähdekoodi on avointa.
  • Not Synced
    Sellaista voi käyttää
  • Not Synced
    tällaisiin asioihin.
  • Not Synced
    - Okei, kiitos.
  • Not Synced
    - Seuraavaksi mikrofoni numero kaksi... Paitsi että
  • Not Synced
    se meni jo. Siinä tapauksessa
  • Not Synced
    taidan valita mikrofonin numero kolme.
  • Not Synced
    - Tämä on numero neljä.
    - Anteeksi, numero neljä tosiaan.
  • Not Synced
    - Kertooko seuraava esitelmäsi turvallisten
  • Not Synced
    ohjelmistojen kirjoittamisesta Windowsille ja
  • Not Synced
    jos ei, paljonko omaisuutta vaadit
  • Not Synced
    korvaukseksi siitä aiheutuvasta tuskasta?
  • Not Synced
    - Ei.
  • Not Synced
    Naurua
  • Not Synced
    Kysymys ei ole rahasta.
  • Not Synced
    Naurua
  • Not Synced
    - Selvä, mikrofoni numero yksi.
  • Not Synced
    - Oletko kokeillut tarpeettomien
  • Not Synced
    ominaisuuksien poistamista OpenSSL:stä?
  • Not Synced
    - Kyllä, itse asiassa olen kokeillut sitä
  • Not Synced
    jo melko ajoissa, mutta se on silti
  • Not Synced
    paljon isompi kuin oma koodini.
  • Not Synced
    Siis, esimerkiksi, OpenSSL tukee
  • Not Synced
    UDP-pohjaista TLS:ää, mutta
  • Not Synced
    jaettuja kryptografisia koodeja on paljon. Niistä
  • Not Synced
    voi poistaa niitä, joita ei tarvitse, ja se auttaa
  • Not Synced
    hieman, mutta silti jäljelle jää
  • Not Synced
    verkkopalvelimen selkeästi suurin osa.
  • Not Synced
    - Taisi tulla internet-kysymys?
  • Not Synced
    Tuliko? Ei näytä siltä.
  • Not Synced
    Ei? Kyllä? Ei? Ei? Kyllä? Okei.
  • Not Synced
    - Sitten mikrofoni numero neljä.
  • Not Synced
    - Ihmisenä, joka on tekemisissä
  • Not Synced
    tai on ollut tekemisissä alan, johon kuuluu
  • Not Synced
    ohjelmointi-
    Ohjelmoitavia jarruja,
  • Not Synced
    mikä on mielipiteesi sellaisista asioista,
  • Not Synced
    kuten MISRA?
  • Not Synced
    - No siis, on olemassa standardeja,
  • Not Synced
    esimerkiksi autoalalla, kuten
  • Not Synced
    juuri MISRA, joiden tarkoituksena on varmistaa
  • Not Synced
    paremman koodin kirjoittaminen, ja kyseessä
  • Not Synced
    on pääasiassa sääntöjen noudattaminen. Annetaan sääntöjä,
  • Not Synced
    kuten että rekursiota ei tulisi käyttää koodissa,
  • Not Synced
    esimerkiksi, ja että
  • Not Synced
    funktioiden pitäisi olla näin ja noin isoja
  • Not Synced
    enimmillään, ja uskon, että
  • Not Synced
    se auttaa hieman, mutta on paljon
  • Not Synced
    parempi vaihtoehto investoida
  • Not Synced
    arkkitehtuuriin. Saatoitte huomata, että
  • Not Synced
    sanoin kirjoittaneeni koodia C:llä, mutta
  • Not Synced
    en sanonut mitään siitä, miten varmistin,
  • Not Synced
    että koodista tuli laadukasta.
  • Not Synced
    Se on kokonaan eri ulottuvuus,
  • Not Synced
    kohtisuoraan eri akselilla, siis,
  • Not Synced
    noudattakaa standardeja, sillä tavalla
  • Not Synced
    koodista tulee hieman parempaa,
  • Not Synced
    luultavasti, mutta se ei varmasti ratkaise
  • Not Synced
    kaikkia ongelmia ja itse uskon, että
  • Not Synced
    pitäisi tehdä molemmat: Varmistaa,
  • Not Synced
    tai ainakin yrittää varmistaa, että koodissa
  • Not Synced
    on mahdollisimman vähän bugeja,
  • Not Synced
    on tapoja, joilla se onnistuu, pidin siitäkin esitelmän,
  • Not Synced
    mutta sen lisäksi pitäisi noudattaa
  • Not Synced
    vastaavan laisia
  • Not Synced
    arkkitehtuuririllisiä suojakaiteita,
  • Not Synced
    jotka pitävät asiat raiteillaan, vaikka joku
  • Not Synced
    onnistuisikin kaappaamaan prosessin.
  • Not Synced
    - Nyt uskon, että saimme
  • Not Synced
    internet-kysymyksen.
  • Not Synced
    - Kyllä. Joku internetissä kysyy, miten
  • Not Synced
    onnistuisi tämän todella vaikuttavan turvallisuusarkkitehtuurin
  • Not Synced
    skaalaaminen suurempaan kokoluokkaan,
  • Not Synced
    eri käyttötarkoituksiin,
  • Not Synced
    suurempiin tarkoituksiin vai pilaisiko
  • Not Synced
    projektin hallitsematon laajeneminen kaiken?
  • Not Synced
    - Niin, siis...
  • Not Synced
    - Haloo, haloo.
  • Not Synced
    - Voi ei!
  • Not Synced
    Naurua
  • Not Synced
    - No, olen pahoillani.
  • Not Synced
    Suosionosoituksia
  • Not Synced
    [Translated by Santeri Koivisto (ITKST56 course assignment at JYU.FI)]
    Musiikkia
Title:
37C3 - Writing secure software
Description:

more » « less
Video Language:
English
Duration:
46:39

Finnish subtitles

Revisions Compare revisions