37C3 - Writing secure software
-
0:00 - 0:14[Translated by Santeri Koivisto (ITKST56 course assignment at JYU.FI)]
Musiikkia -
0:14 - 0:20Siitä on kirjoitettu oppikirjoja,
-
0:20 - 0:25on pidetty lukematon määrä esitelmiä, jotka
-
0:25 - 0:30ovat valistaneet meitä kaikista
-
0:30 - 0:34tekemistämme virheistä, ja silti kaikenlaisia huonoja
-
0:34 - 0:40ohjelmistoja on yhä olemassa, mutta
-
0:40 - 0:47Fefe, täällä näin, sankarimme,
-
0:47 - 0:55on ottanut huomioon kaikki parhaat
-
0:54 - 0:59käytännöt, tiedättehän, työskennellessään
-
0:59 - 1:02tehdäkseen turvallisen verkkosivun, hän
-
1:02 - 1:13nyt seuraavaksi näyttää meille miten se tehdään, jotta
-
1:13 - 1:20voimme kaikki nukkua yömme rauhassa ja
-
1:18 - 1:22ottaa mallia, miten voimme
-
1:20 - 1:24tehdä omat ohjelmistomme turvallisiksi.
-
1:22 - 1:26Siispä annan puheenvuoron nyt
-
1:24 - 1:28Fefelle, antakaa hänelle aplodit!
-
1:26 - 1:30Suosionosoituksia
-
1:28 - 1:33Kiitos, minun täytyy aloittaa
-
1:30 - 1:35anteeksipyynnöllä, sillä ehdotin esitelmää,
-
1:33 - 1:37mutta se hylättiin, joten
-
1:35 - 1:39diat eivät ole ihan niin valmiita, kuin
-
1:37 - 1:43niiden pitäisi olla.
-
1:39 - 1:45Nämä diat on tehty esitelmän edellistä versiota varten, jotka pitävät
-
1:43 - 1:48sisällään kaiken materiaalin, yritin päivittää niitä, mutta
-
1:45 - 1:51se tuhosi sulavuuden, joten
-
1:48 - 1:53joudumme pärjäämään tämän version kanssa.
-
1:51 - 1:55Suurin ero on yleisö, sillä
-
1:53 - 1:57odotan tällä kertaa paikalla olevan enemmän ohjelmistokehittäjiä,
-
1:55 - 2:02toisessa yleisössä olisi ollut enemmän hakkereita ja
-
1:57 - 2:02bisnesmiehiä, joten yritän auttaa heitä
-
2:02 - 2:06nykyisestä tilanteestaan eteenpäin, ja pääkysymys
-
2:04 - 2:10on yleensä: "Onko jo valmista?", eikö niin?
-
2:06 - 2:12Joten, hieman minusta, olette varmaankin
-
2:10 - 2:14nähneet tämän jo aiemmin, olen koodin tarkastaja
-
2:12 - 2:15ammatiltani, omistan pienen yrityksen ja
-
2:14 - 2:18yritykset näyttävät meille koodia, ja minä puolestani
-
2:15 - 2:19näytän heille bugeja, jotka löydän, melko helppoa.
-
2:18 - 2:25Mutta ennen kuin aloitamme, minulla on
-
2:19 - 2:25himan syytä juhlaan, tämä oikeastaan tapahtui
-
2:27 - 2:31vain päivää ennen kuin
-
2:29 - 2:33puhuin siitä ensi kertaa, siis tämä viesti Kasperskyltä,
-
2:31 - 2:36he löysivät haittaohjelman
-
2:33 - 2:38liittyen libc:hen,
-
2:36 - 2:40jota olen ollut kirjoittamassa, joten
-
2:38 - 2:44tämä on...
-
2:40 - 2:47Suosionosoituksia
-
2:44 - 2:50Haittaohjelmaporukalla on
-
2:47 - 2:52selvästi hyvä maku.
-
2:50 - 2:54Niin, oikeastaan suurin kysymys, joka tulee vastaan kun
-
2:52 - 2:57keskustelen asiakkaiden kanssa on: "käytämme todella paljon
-
2:54 - 2:59rahaa tähän, miksei se toimi"?
-
2:57 - 3:00Ja vastaus on, että "te toimitte väärin".
-
2:59 - 3:02Yritän nyt siis näyttää, että mitä tarkalleen menee väärin
-
3:00 - 3:05ja tässä on pieni johdanto: yleensä sanotaan,
-
3:02 - 3:07ettei ole aikaa tehdä asioita
-
3:05 - 3:10kunnolla, eikä se pidä paikkaansa lainkaan.
-
3:07 - 3:12Aikaa päivässä on tasan yhtä paljon kuin kaikilla niillä,,
-
3:10 - 3:15jotka ovat pystyneet suuriin saavutuksiin, joten
-
3:12 - 3:17jokainen varmasti pystyy moneen, kunhan ryhtyy hommiin.
-
3:15 - 3:20Pelataan sitten pientä lämmittelypeliä,
-
3:17 - 3:22sen nimi on "miten se alkoi ja
-
3:20 - 3:25miten nyt menee", aloitetaan siis harjoittelukierroksella:
-
3:22 - 3:28"IBM:n Watson mullistaa
-
3:25 - 3:30kymmenen toimialaa", ja nyt menee näin:
-
3:28 - 3:34"Mitä kävi IBM:n Watsonille?". Kyseessä on
-
3:30 - 3:35tyypillinen kuvio tietoturva-alalla.
-
3:34 - 3:37Okei, tässä seuraava, näin se alkoi:
-
3:35 - 3:40"Mullista tietoturva tekoälyllä",
-
3:37 - 3:41no niin, emmeköhän kaikki tiedä, mihin tämä on menossa...
-
3:40 - 3:43Naurua
-
3:41 - 3:45Niin, sehän se kuvio on.
-
3:43 - 3:47Pelataan IT-turvallisuuden miinaharavaa,
-
3:45 - 3:51siis, kaikki täällä varmaankin
-
3:47 - 3:54tuntevat Gartnerin, se julkaisee
-
3:51 - 3:55suosituksia ja sillä on jopa
-
3:54 - 4:02äänestysosio, jossa ihmiset voivat sanoa, että
-
3:55 - 4:03"Tämä on paras tuote tähän tarkoitukseen",
-
4:02 - 4:05joten vilkaistaanhan muutamaa ja
-
4:03 - 4:08katsotaan, miten kävi niille, jotka luottivat Gartneriin.
-
4:05 - 4:10Ensimmäisenä aiheena ovat palomuurit, siis:
-
4:08 - 4:12näin se alkoi: ykkössijan suositus on
-
4:10 - 4:13Fortinet, ja heillä on paljon
-
4:12 - 4:16markkinointi- siansaksaa
-
4:13 - 4:19Naurua
-
4:16 - 4:21Ja jos taas katsotaan, miten nyt menee, niin
-
4:19 - 4:24ei kovin hyvin.
-
4:21 - 4:27Siis, jatketaan kuviota hiukan:
-
4:24 - 4:28Mitä kävi minulle tämän suhteen?
-
4:27 - 4:30En tarvitse palomuuria, koska
-
4:28 - 4:33minulla ei ole yhtään porttia, jolle pääsy pitäisi estää, niinhän.
-
4:30 - 4:36Joten sitä ei tarvita,
-
4:33 - 4:37tarkasti ottaen sitä ei tarvita.
-
4:36 - 4:39Seuraava ala: päätepisteiden suojaus,
-
4:37 - 4:43se alkoi siis Trellix:llä, se on
-
4:39 - 4:45Gartnerin ykkössuositus.
-
4:43 - 4:47En ollut kuullu siitä,
-
4:45 - 4:49joku yhteishanke tai jotain sellaista,
-
4:47 - 4:52ketä kiinnostaa.
-
4:49 - 4:55Heilläkin on hienoa markkinointi- siansaksaa
-
4:52 - 4:55Ja jos katsotaan, mitä tapahtui:
-
4:56 - 5:02se pahensi vain asiaa.
-
5:00 - 5:05Okei, tämäkään ei vaikuta minuun,
-
5:02 - 5:07koska en käytä humpuukkituotteita.
-
5:05 - 5:09Katsotaanhan, kolmanneksi salasananhallintaohjelmistot,
-
5:07 - 5:11myöskin hyvin suosittuja,
-
5:09 - 5:15miten se alkoi: suositeltiin LastPassia,
-
5:11 - 5:16tiedätte varmaan mihin tämä on menossa...
-
5:15 - 5:20Naurua
-
5:16 - 5:23Jep, se hakkeroitiin
-
5:20 - 5:26ja monet joutuivat ongelmiin.
-
5:23 - 5:27Voitte siis huomata kuvion:
-
5:26 - 5:29tämäkään ei vaikuttanut minuun, koska
-
5:27 - 5:30poistin käytöstä salasanatunnistautumisen ja
-
5:29 - 5:33käytän julkisen avaimen menetelmiä, jotka ovat
-
5:30 - 5:35olleet jo vuosikymmeniä saatavilla. Pieni bonus,
-
5:33 - 5:37viimeinen näistä: kaksivaiheinen tunnistautuminen,
-
5:35 - 5:39Gartner suosittelee Duoa, jonka
-
5:37 - 5:41Cisco on ostantut tosin omakseen, mutta sillä ei ole väliä.
-
5:39 - 5:44Katsotaan siis, mitä Duo tekee:
-
5:41 - 5:47palvelimesi pyytää pilvipalvelusta
-
5:44 - 5:49lupaa, pilvipalvelin näyttää
-
5:47 - 5:51puhelimella ilmoituksen, josta painetaan "kyllä",
-
5:49 - 5:52ja pilvipalvelu kertoo palvelimelle:
-
5:51 - 5:53"okei, voit päästä sen sisään". Jos katsot
-
5:52 - 5:55oikein tarkkaan, huomaat, ettei pilvipalvelun
-
5:53 - 5:58ole pakko näyttää ilmoitusta ollenkaan, se voi vain
-
5:55 - 6:01sanoa suoraan "kyllä". Se on siis valmiiksi
-
5:58 - 6:02ongelmainen, mitään ei tarvitse edes hakkeroida.
-
6:01 - 6:06Naurua
-
6:02 - 6:06ja harva tajuaa, että
-
6:08 - 6:12kaksivaiheista tunnistautumista ei tarvita,
-
6:15 - 6:21jos käyttää julkista avainta, se on jo itsessään toinen vaihe.
-
6:18 - 6:22Selvä, niin,
-
6:21 - 6:25jep. Vilkaistaan tämä nopeasti.
-
6:22 - 6:28Splunk on suositeltu vaihtoehto
-
6:25 - 6:30ja se tekee organisaatiosta
-
6:28 - 6:31kestävämmän, kunhan sitä ei asenna.
-
6:30 - 6:33Naurua
-
6:31 - 6:36Suosionosoituksia
-
6:33 - 6:40Okei, tämä aihe on lähellä sydäntäni,
-
6:36 - 6:42sillä usein väitellään siitä,
-
6:40 - 6:44pitäisikö paikkauksia asentaa ja
-
6:42 - 6:46mitkä paikkaukset asentaa ensimmäiseksi ja aiemmin
-
6:44 - 6:48tämä oli yksinkertaista, etsittiin ongelmia
-
6:46 - 6:49ja asennettiin paikkauksia, mutta sitten
-
6:48 - 6:52asioista tuli monimutkaisempia ja
-
6:49 - 6:55tulos oli tämä -
-
6:52 - 6:56kuuluisa podcasti Saksassa,
-
6:55 - 6:59joka kertoo kunnasta, joka joutui
-
6:56 - 7:01kiristysohjelmahyökkäyksen uhriksi ja joutui kutsumaan
-
6:59 - 7:04armeijan apuun
-
7:01 - 7:07Epäselvää puhetta yleisössä
-
7:04 - 7:07Ja mitä pitäisi tehdä, sanon tämän
-
7:08 - 7:12täydellisyyden vuoksi, asentaa kaikki paikkaukset
-
7:11 - 7:15välittömästi, mutta se jääköön toisen esitelmän aiheeksi.
-
7:12 - 7:17Saatatte siis huomata kuvion:
-
7:15 - 7:20IT-turvallisuusala
-
7:17 - 7:21suosittelee jotakin
-
7:20 - 7:24ja jos suositukseen uskoo, on pian kusessa, joten ei kannata.
-
7:21 - 7:27Jos ette näe kunnolla, tässä lukee "käärme-
-
7:24 - 7:31karkoterakeet", ja sen vieressä
-
7:27 - 7:33nukkuu käärme.
-
7:31 - 7:34Naurua
-
7:33 - 7:38Yskäisy
-
7:34 - 7:39Niin, jos emme voi luottaa
-
7:38 - 7:42alan suosituksiin, niin mitä pitäisi tehdä?
-
7:39 - 7:45Ja minulla oli paljon
-
7:42 - 7:48aikaa, koska minun ei tarvinnut
-
7:45 - 7:50siivota kehnojen IT-turvallisuusalan
-
7:48 - 7:52suositustuotteiden jälkiä, joten
-
7:50 - 7:54mihin kulutin aikaani?
-
7:52 - 7:56Päätin, että tarvitsen blogin
-
7:54 - 7:59jo jonkin aikaa sitten, ja aloin
-
7:56 - 8:00miettimään, mitä tarvitsen,
-
7:59 - 8:02itse asiassa ei kovin paljoa, koska olisin
-
8:00 - 8:05voinut vain tarjota staattista sisältöä ja pieni
-
8:02 - 8:07hakutoimintokin olisi hyväksi, muttei kuitenkaan
-
8:05 - 8:09pakollinen. En tarvinnut kommentteja
-
8:07 - 8:13laillisista syistä, koska ihmiset tapaavat
-
8:09 - 8:15lähetellä linkkejä haittaohjelmiin ja
-
8:13 - 8:17mitä lie, mitä en halua,
-
8:15 - 8:20joten ensimmäinen versio oli
-
8:17 - 8:23oikeastaan hyvin helppo toteuttaa, se oli pieni
-
8:20 - 8:25tavanomainen verkkopalvelin ja
-
8:23 - 8:28blogin julkaisut olivat staattisia HTML-tiedostoja,
-
8:25 - 8:30yksi tiedosto kuukautta kohden. Se oli oikeastaan
-
8:28 - 8:32helppoa, jos haluaa hakea joitain voi vain
-
8:30 - 8:32kysyä Googlelta rajoittaen haun kyseiseen verkkosivuun.
-
8:34 - 8:38Julkaiseminenkin oli helppoa, minulla oli pieni
-
8:36 - 8:41skripti, jonka pystyin ajamaan palvelimella
-
8:38 - 8:44ja kirjauduin SSH:lla, ja SSH:n luotan
-
8:41 - 8:47autentikaation suhteen, joten uutta
-
8:44 - 8:49pintaa hyökkäyksille ei ole, käytin sitä muutenkin. Tämä on
-
8:47 - 8:51mahtava kokonaisuus, se on turvallinen ja yksinkertainen,
-
8:49 - 8:53riskit ovat pieniä ja se on suorituskyvyltään
-
8:51 - 8:55erinomainen, mutta sitä ei voisi pitää esitelmää
-
8:53 - 8:58CCC:ssä, koska
-
8:55 - 9:01se on liian tylsä, joten aloin lisäämään
-
8:58 - 9:03riskejä kokoonpanoon.
-
9:01 - 9:05Naurua
-
9:03 - 9:08Joten ensimmäinen ideani oli, että
-
9:05 - 9:10olin kirjoittanut pienen web-palvelimen ja voisin
-
9:08 - 9:12vain käyttää blogia vareten kyseistä palvelinta,
-
9:10 - 9:14koska sehän on minun koodiani joka tapauksessa,
-
9:12 - 9:16mutta siinä on huonoja puolia. Jos blogi
-
9:14 - 9:18pyörii web-palvelimella, sillä on
-
9:16 - 9:19pääsy kaikkeen web-palvelimen muistiin,
-
9:18 - 9:22erityisesti se pääsee käsiksi TLS:n salaiseen
-
9:19 - 9:23avaimeen, enkä halua, että sitä saataisiin
-
9:22 - 9:25vietyä, joten se ei voi olla
-
9:23 - 9:27web-palvelimen moduuli
-
9:25 - 9:29ja ilmiselvä ratkaisu on, että
-
9:27 - 9:30sen täytyy pyöriä toisella käyttäjä-ID:llä
-
9:29 - 9:33Linuxilla, käytän siis Linuxia, mutta minkä tahansa
-
9:30 - 9:35Unixin tai Windowsin suhteen asia olisi sama.
-
9:33 - 9:38Se siis pyörii eri käyttäjällä,
-
9:35 - 9:39ja jos sitten kaappaa
-
9:38 - 9:42blogin prosessin jonkin
-
9:39 - 9:43bugin avulla, TLS-avaimeen ei pääse käsiksi.
-
9:42 - 9:45Ja samaan aikaan kun tein sitä,
-
9:43 - 9:47ala teki tätä.
-
9:45 - 9:51Puheensorinaa
-
9:47 - 9:53Sehän on tämän esitelmän virsi,
-
9:51 - 9:54näytän kaikenlaista kiinnostavaa,
-
9:53 - 9:56mitä ala tekee, ja sitten näytän,
-
9:54 - 9:58mitä itse tein siinä samalla.
-
9:56 - 10:00Seuraava kysymys:
-
9:58 - 10:03Missä sisältöä säilytetään? Voisin vain pitää
-
10:00 - 10:07tiedostoja levyllä staattisena HTML:nä kuten aiemminkin,
-
10:03 - 10:07mutta uskon, ettei se ole riittävän ammattimainen ratkaisu.
-
10:07 - 10:12Hyvää CCC-esitelmää varten täytyy
-
10:09 - 10:15olla ammattimaisempi.
-
10:12 - 10:18Olin myös toista
-
10:15 - 10:21projektia varten kirjoittanut LDAP-palvelimen,
-
10:18 - 10:22joten päätin uudelleenkäyttää sitä, ja
-
10:21 - 10:24samalla kuin tein sitä, ala teki tätä.
-
10:22 - 10:27Otin tämän kuvan Jerusalemin
-
10:24 - 10:30lentokentällä, tämä on siis oikea mainos
-
10:27 - 10:32eikä photoshopattu. Sen omistaa
-
10:30 - 10:35Northrop Grumman, joka on
-
10:32 - 10:37armeijatavarantoimittaja ja se kertoo koko
-
10:35 - 10:37spektrin kyberistä, kattaen kaikki alueet.
-
10:38 - 10:44Puheensorinaa
-
10:41 - 10:44Siis, miksi kirjoittaisin oman LDAP-palvelimeni?
-
10:44 - 10:52Pääasiassa siksi, että se on pieni ja
-
10:49 - 10:55koska olen ammatiltani tarkastaja, ja tiedän,
-
10:52 - 10:57että jos haluaa mahdollisuuden oikeasti
-
10:55 - 11:00tarkastaa koodia, sen täytyy olla vähäistä,
-
10:57 - 11:03sillä rajallinen resurssi on
-
11:00 - 11:06aika, jota voi käyttää koodin tarkastamiseen.
-
11:03 - 11:08SIis, Postgres on yleinen SQL-
-
11:06 - 11:09tietokanta. Slapd on palvelimen
-
11:08 - 11:10avoin LDAP-toteutus ja tinyldap on
-
11:09 - 11:13omani ja näette, että se on paljon hitaampi
-
11:10 - 11:14ja paljon pienempi.
-
11:13 - 11:17Niin, mainoskapanja oli laajempi
-
11:14 - 11:19keräsin tähän muutamia hauskoja kuvia.
-
11:17 - 11:21Siis, jos joku onnistuu
-
11:19 - 11:24hakkeroimaan blogin CGI:n tai mitä hyvänsä moduulia
-
11:21 - 11:27käytänkään yhdistääkseni blogin
-
11:24 - 11:30verkkopalvelimeen, hän pystyy avaaman minkä tahansa tiedoston, jonka
-
11:27 - 11:32blogi itsessään pystyy lukemaan, jonka sen UID pystyy lukemaan,
-
11:30 - 11:33joten minun pitäisi varmaankin tehdä
-
11:32 - 11:36asialle jotakin, se oli seuraava vaihe.
-
11:33 - 11:38Ala puolestaa alkoi miettimään
-
11:36 - 11:40haavoittuvuuksien hallintaa.
-
11:38 - 11:45Unixilla, Linuxilla on mekanismi,
-
11:40 - 11:47josta pidin erillisen esitelmän
-
11:45 - 11:49viime Kongressissa,
-
11:47 - 11:52se on nimeltään seccomp ja seccom on kuin
-
11:49 - 11:55palomuuri järjestelmäkutsuille, joten voin käyttää
-
11:52 - 11:58seccompia estääkseni open-järjestelmäkutsun, jota käytetään
-
11:55 - 12:00tiedostojen avaamiseen, mutta jos minun täytyy
-
11:58 - 12:03itse käyttää open-funktiota,
-
12:00 - 12:06en voi estää sitä, joten mitä
-
12:03 - 12:09tehdä sen suhteen? Esimerkiksi blogini
-
12:06 - 12:12kutsuu localtime-funktiota, joka muuttaa Unix-ajan
-
12:09 - 12:14paikallisen aikavyöhykkeen ajaksi ja sitä
-
12:12 - 12:17varten se avaa tiedoston, joka sisältää
-
12:14 - 12:19kuvauksen järjestelmän aikavyöhykkeestä,
-
12:17 - 12:21ja se kutsuu openia. Siis,
-
12:19 - 12:24jos ottaisin vain open-järjestelmäkutsun pois käytöstä
-
12:21 - 12:26blogistani, niin se ei voisi tehdä
-
12:24 - 12:28tarvittavaa aikamuunnosta, mikä on
-
12:26 - 12:29oikeastaan vanha ongelma, joka pätee myös
-
12:28 - 12:32setuid-ohjelmiin ja on pätenyt niihin jo
-
12:29 - 12:34vuosikymmeniä, joten voi tehdä niin, että
-
12:32 - 12:36koodi järjestetään uudelleen siten, että ennen kuin
-
12:34 - 12:38estää tai, yleisesti ottaen, pudottaa oikeuksia,
-
12:36 - 12:42ensin tehdään open-kutsut,
-
12:38 - 12:45tässä esimerkissä, ja
-
12:42 - 12:48sitten poistetaan open käytöstä ja sitten katsotaan
-
12:45 - 12:50hyökkääjän tarjoamaa dataa,
-
12:48 - 12:52koska jos hyökkääjä tai mikä tahansa lähde,
-
12:50 - 12:54johon ei luoteta, yrittää hakkeroida palveluasi, se tapahtuu
-
12:52 - 12:58palvelullesi annetun datan avulla,
-
12:54 - 13:02ympäristö on vaarannettu, joten katsotaan,
-
12:58 - 13:04minkälaiset elementit ympäristössä
-
13:02 - 13:07hyökkääjä voi määrätä ja
-
13:04 - 13:09enne kuin koskee yhteenkään tavuun niistä, täytyy
-
13:07 - 13:10tehdä kaikki vaaralliset toimenpiteet, jos vain voi.
-
13:09 - 13:12Siis, tässä tapauksessa, kutsun localtime-funktiota
-
13:10 - 13:14kerran ennen kuin pudotan pois open-järjestelmäkutsun,
-
13:12 - 13:16ja libc tallentaa välimuistiin
-
13:14 - 13:19aikavyöhykedatan ja ensi kerralla, kun kutsun sitä
-
13:16 - 13:21sen jälkeen, kun olen käsitellyt hyökkääjän
-
13:19 - 13:25määrittelemää koodia, ei ole enää tarvetta käyttää
-
13:21 - 13:28open-funktiota. Tämä on suuri etu
-
13:25 - 13:30seccomp:n hyödyksi ja muita vastaavia teknologioita,
-
13:28 - 13:35kuten SELinuxia, vastaan, sillä ne asettavat
-
13:30 - 13:38estot järjestelmäkutsuille
-
13:35 - 13:41koko prosessin tasolla, joten tämä
-
13:38 - 13:42olkoon esimerkkinä siitä, mitä
-
13:41 - 13:44pitäisi tehdä: Pitäisi katsoa
-
13:42 - 13:46prosessia ja, ainakin jos on
-
13:44 - 13:48pääsy lähdekoodiin, pitää katsoa, mitä
-
13:46 - 13:51kaikkea täytyy tehdä ennen kuin voin
-
13:48 - 13:53luopua oikeuksista, ja siirtää niitä aiempiin vaiheisiin.
-
13:51 - 13:56Näin siis tein.
-
13:53 - 13:59Tämä tässä on malli
-
13:56 - 14:01Viron kyberturvallisuuskeskukselta,
-
13:59 - 14:03tämäkin on siis aito.
-
14:01 - 14:06Okei, siis,
-
14:03 - 14:09seuraava aihe. Sanotaan, että
-
14:06 - 14:12joku hakkeri blogimoduulin, ja
-
14:09 - 14:15että joku toinen käyttää samaa moduulia, mutta
-
14:12 - 14:18omaa salasanaansa.
-
14:15 - 14:21Tämä on yleinen ongelma verkkosivuilla,
-
14:18 - 14:24joilla on jonkinlainen kirjautumistoiminto,
-
14:21 - 14:27josta saa jonkinlaisen istuntotunnisteen tai
-
14:24 - 14:30jonkin vastaavan, ja jos joku onnistuu
-
14:27 - 14:32kaappaamaan väliohjelmiston
-
14:30 - 14:36tai palvelinkomponentin,
-
14:32 - 14:38hän pystyy näkemään kaikki muutkin yhteydet,
-
14:36 - 14:39jos sama prosessi käsittelee niitä.
-
14:38 - 14:42Se on siis merkittävä ongelma,
-
14:39 - 14:45jonka voi korjata, mikä
-
14:42 - 14:48on meille varsin hyvä asia.
-
14:45 - 14:51Ja minun esimerkissäni tämä sai minut käyttämään CGI:tä
-
14:48 - 14:53FastCGI:n sijaan, FastCGI on siis
-
14:51 - 14:54uudempi versio CGI:stä,
-
14:53 - 14:57ja sen idea on, ettei
-
14:54 - 14:59uutta prosessia käynnistetä jokaista
-
14:57 - 15:02pyyntöä varten, vaan käytetään Unix domain
-
14:59 - 15:06socketia, tai muuta pistoketta FastCGI-prosessiin,
-
15:02 - 15:08joka avaa ehkä yhden säikeen
-
15:06 - 15:11pyyntöä kohden tai jotain sellaista, mutta yleensä
-
15:08 - 15:13FastCGI:n kanssa yritetään käsitellä
-
15:11 - 15:17pyynnöt samassa prosessissa, jotta
-
15:13 - 15:20voidaan käyttää kyseistä prosessia välimuistin ylläpitoon,
-
15:17 - 15:22joten FastCGI on suorituskyvyn kannalta edullinen valinta,
-
15:20 - 15:24mutta tietoturvasyistä en
-
15:22 - 15:27käytä FastCGI:tä, joten en voi käyttää
-
15:24 - 15:27välimuistia, mikä on merkittävä haittapuoli
-
15:27 - 15:32ja blogista tulee lopulta luultavasti
-
15:30 - 15:34todella, todella hidas. Siis,
-
15:32 - 15:38ensiksi, minun täytyy käyttää CGI:tä
-
15:34 - 15:40FastCGI:n sijaan ja toiseksi, on yhä mahdollista
-
15:38 - 15:43käyttää debuggaukseen tarkoitettuja API:ta. Siis, jos käyttää GDB:tä tai
-
15:40 - 15:45jotain muuta debuggeria toisen
-
15:43 - 15:49prosessin seurantaan, se käyttää ptrace-API:ta,
-
15:45 - 15:51mutta se on pohjimmiltaan järjestelmäpyyntö, joten voin käyttää seccompia
-
15:49 - 15:54ptracen kieltämiseksi. Jos noudatan näitä kahta taktiikkaa, ja
-
15:51 - 15:56hyökkääjä kaappaa blogin prosessin, kaikki
-
15:54 - 15:59mitä hän voi nähdä, on hänen itse lähettämänsä data.
-
15:56 - 16:04Kysessä on siis suuri etu.
-
15:59 - 16:06Okei, ENISA on itse asiassa EU:n virasto,
-
16:04 - 16:08mikä on mielestäni hyvin häiritsevää,
-
16:06 - 16:10sillä se kuluttaa paljon veronmaksajien rahoja,
-
16:08 - 16:13mutta ei siitä sen enempää. Oletataan, että hyökkääjä
-
16:10 - 16:16pystyy hakkeroimaan blogini. Silloin tämä pystyy kiertämään
-
16:13 - 16:19kaiken pääsynhallinnan, jota blogissani käytetään.
-
16:16 - 16:21Siis esimerkiksi, jos minulla on ylläpitosivu tai
-
16:19 - 16:22jokin kirjautumista vaativa osa verkkosivusta,
-
16:21 - 16:24ja sitä hallitsee sama ohjelma, ja
-
16:22 - 16:26pääsynhallintaa tehdään siis blogin
-
16:24 - 16:28CGI:ssä, ja joku onnistuu
-
16:26 - 16:29hakkeroimaan blogini CGI:n, hän voi
-
16:28 - 16:31halutessaan vain ohittaa hallinnan, joten on
-
16:29 - 16:33hyvin haastavaa tehdä pääsynhallintatoimenpiteitä, joita ei ole
-
16:31 - 16:35mahdollista kiertää, jos ne toteuttaa omassa
-
16:33 - 16:37koodissaan. Ratkaisu on siis olla tekemättä sitä
-
16:35 - 16:41omassa koodissasi. En rajoita mitenkään
-
16:37 - 16:45pääsyä omassa blogissani, vaan teen sen
-
16:41 - 16:47LDAP-palvelimen puolella. Jos siis yhdistää blogiini
-
16:45 - 16:48ja antaa salasanan, blogi itse ei tiedä,
-
16:47 - 16:50onko salasana oikein
-
16:48 - 16:53vaiko väärin. Esimerkiksi, jos
-
16:50 - 16:55on käyttöliittymä, jonka avulla voi lisätä
-
16:53 - 16:56uusi blogijulkaisuja tai muokata vanhoja
-
16:55 - 17:00sellaisia ja sitä varten täytyy tunnistautua,
-
16:56 - 17:02mutta blogin CGI ei tiedä, ovatko tunnukset
-
17:00 - 17:04oikein vai väärin ja avaa
-
17:02 - 17:07yhteyden LDAP-palvelimeen käyttäen
-
17:04 - 17:09annettuja tunnuksia ja vasta LDAP-palvelin
-
17:07 - 17:11sanoo kyllä tai ei. Koska estimme pääsyn
-
17:09 - 17:13ptrace-järjestelmäpyyntöön ja prosessit
-
17:11 - 17:16on eristetty toisistaan, se tarkoittaa,
-
17:13 - 17:19ettei mitään jää kierrettäväksi.
-
17:16 - 17:22Siis, jos joku hakkeroi blogini,
-
17:19 - 17:24hän ei juuri hyödy, koska
-
17:22 - 17:26hän voi käytännössä tehdä vain samoja asioita
-
17:24 - 17:29kuin jo valmiiksi. Hän voi vain kommunikoida
-
17:26 - 17:31LDAP-palvelimen kanssa.
-
17:29 - 17:33Jes, nyt aletaan jo puhua
-
17:31 - 17:36James Bond -tason jutuista
-
17:33 - 17:38hyökkäyksien monimutkaistuessa entisestään.
-
17:36 - 17:42Samalla IT-turvallisuusala innostui
-
17:38 - 17:45uhkatiedustelufiideistä, jotka
-
17:42 - 17:49ovat täysin turhia. Älkää käyttäkö niihin rahaa.
-
17:45 - 17:51Sanotaan siis, että hyökkääjä hakkeroi
-
17:49 - 17:53blohini ja siirtyi tinyldapin pariin ja
-
17:51 - 17:55nyt siis hyökkää tinyldapiin. Silloin hän pystyykin
-
17:53 - 17:59pääsemään käsiksi toisiin tileihin, koska tinyldap
-
17:55 - 18:01käsittelee myös yhteyksiä toisiin blogin ilmentymiin,
-
17:59 - 18:04joten ongelma on sama kuin aiemminkin,
-
18:01 - 18:06maaliviivaa on vain siirretty
-
18:04 - 18:08hieman eteenpäin. Tämä täytyy estää,
-
18:06 - 18:11ja itsestäänselvä ratkaisu on
-
18:08 - 18:13tehdä sama homma kuin blogin kanssa
-
18:11 - 18:14ja käyttää yhtä LDAP-palvelimen prosessia
-
18:13 - 18:17pyyntöä kohden, ja sitten vain kiellämme
-
18:14 - 18:20ptracen käytön. Siis, enää ei ole mahdollista
-
18:17 - 18:22nähdä, vaikka pystyisikin ajamaan mielivaltaista koodia
-
18:20 - 18:25LDAP-palvelimen sisällä, ei olisi siis mahdollista nähdä,
-
18:22 - 18:28mitä salasanoja toiset käyttäjät käyttävät.
-
18:25 - 18:32On siis yhä mahdollista nähdä-
Okei, ala tekee -
18:28 - 18:35taas jotain hevonpaskaa. On yhä mahdollista nähdä
-
18:32 - 18:35salasana
-
18:35 - 18:39
-
18:38 - 18:42
-
18:39 - 18:43
-
18:42 - 18:45
-
18:43 - 18:47
-
18:45 - 18:50
-
18:47 - 18:54
-
18:50 - 18:56
-
18:54 - 18:58
-
18:56 - 19:01
-
18:58 - 19:03
-
19:01 - 19:05
-
19:03 - 19:08
-
19:05 - 19:10
-
19:08 - 19:11
-
19:10 - 19:14
-
19:11 - 19:16
-
19:14 - 19:18
-
19:16 - 19:19
-
19:18 - 19:22
-
19:19 - 19:25
-
19:22 - 19:27
-
19:25 - 19:29
-
19:27 - 19:32
-
19:29 - 19:34
-
19:32 - 19:36
-
19:34 - 19:39
-
19:36 - 19:42
-
19:39 - 19:44
-
19:42 - 19:44
-
19:45 - 19:50
-
19:48 - 19:51
-
19:50 - 19:55
-
19:51 - 19:57
-
19:55 - 19:59
-
19:57 - 20:01
-
19:59 - 20:04
-
20:01 - 20:06
-
20:04 - 20:09
-
20:06 - 20:13
-
20:09 - 20:16
-
20:13 - 20:19
-
20:16 - 20:21
-
20:19 - 20:22
-
20:21 - 20:25
-
20:22 - 20:27
-
20:25 - 20:30
-
20:27 - 20:33
-
20:30 - 20:35
-
20:33 - 20:38
-
20:35 - 20:41
-
20:38 - 20:43
-
20:41 - 20:46
-
20:43 - 20:47
-
20:46 - 20:49
-
20:47 - 20:51
-
20:49 - 20:53
-
20:51 - 20:56
-
20:53 - 20:56
-
20:56 - 21:00
-
20:59 - 21:02
-
21:00 - 21:05
-
21:02 - 21:09
-
21:05 - 21:10
-
21:09 - 21:13
-
21:10 - 21:15
-
21:13 - 21:16
-
21:15 - 21:19
-
21:16 - 21:21
-
21:19 - 21:23
-
21:21 - 21:25
-
21:23 - 21:27
-
21:25 - 21:30
-
21:27 - 21:33
-
21:30 - 21:35
-
21:33 - 21:38
-
21:35 - 21:41
-
21:38 - 21:44
-
21:41 - 21:46
-
21:44 - 21:48
-
21:46 - 21:51
-
21:48 - 21:51
-
21:53 - 21:59
-
21:56 - 22:02
-
21:59 - 22:04
-
22:02 - 22:07
-
22:04 - 22:09
-
22:07 - 22:12
-
22:09 - 22:14
-
22:12 - 22:16
-
22:14 - 22:19
-
22:16 - 22:21
-
22:19 - 22:24
-
22:21 - 22:26
-
22:24 - 22:30
-
22:26 - 22:33
-
22:30 - 22:35
-
22:33 - 22:37
-
22:35 - 22:39
-
22:37 - 22:41
-
22:39 - 22:43
-
22:41 - 22:46
-
22:43 - 22:49
-
22:46 - 22:51
-
22:49 - 22:53
-
22:51 - 22:56
-
22:53 - 22:58
-
22:56 - 23:01
-
22:58 - 23:03
-
23:01 - 23:06
-
23:03 - 23:08
-
23:06 - 23:10
-
23:08 - 23:13
-
23:10 - 23:15
-
23:13 - 23:17
-
23:15 - 23:19
-
23:17 - 23:23
-
23:19 - 23:25
-
23:23 - 23:28
-
23:25 - 23:31
-
23:28 - 23:33
-
23:31 - 23:35
-
23:33 - 23:39
-
23:35 - 23:41
-
23:39 - 23:43
-
23:41 - 23:47
-
23:43 - 23:49
-
23:47 - 23:51
-
23:49 - 23:54
-
23:51 - 23:57
-
23:54 - 24:00
-
23:57 - 24:02
-
24:00 - 24:06
-
24:02 - 24:09
-
24:06 - 24:11
-
24:09 - 24:13
-
24:11 - 24:15
-
24:13 - 24:18
-
24:15 - 24:21
-
24:18 - 24:23
-
24:21 - 24:25
-
24:23 - 24:29
-
24:25 - 24:32
-
24:29 - 24:34
-
24:32 - 24:37
-
24:34 - 24:40
-
24:37 - 24:42
-
24:40 - 24:44
-
24:42 - 24:47
-
24:44 - 24:49
-
24:47 - 24:50
-
24:49 - 24:53
-
24:50 - 24:55
-
24:53 - 24:56
-
24:55 - 25:00
-
24:56 - 25:02
-
25:00 - 25:05
-
25:02 - 25:07
-
25:05 - 25:11
-
25:07 - 25:13
-
25:11 - 25:16
-
25:13 - 25:19
-
25:16 - 25:23
-
25:19 - 25:24
-
25:23 - 25:26
-
25:24 - 25:28
-
25:26 - 25:31
-
25:28 - 25:32
-
25:31 - 25:34
-
25:32 - 25:37
-
25:34 - 25:40
-
25:37 - 25:45
-
25:40 - 25:46
-
25:45 - 25:48
-
25:46 - 25:49
-
25:48 - 25:52
-
25:49 - 25:55
-
25:52 - 25:56
-
25:55 - 25:58
-
25:56 - 26:01
-
25:58 - 26:03
-
26:01 - 26:05
-
26:03 - 26:07
-
26:05 - 26:09
-
26:07 - 26:11
-
26:09 - 26:13
-
26:11 - 26:16
-
26:13 - 26:19
-
26:16 - 26:21
-
26:19 - 26:23
-
26:21 - 26:26
-
26:23 - 26:28
-
26:26 - 26:30
-
26:28 - 26:33
-
26:30 - 26:35
-
26:33 - 26:37
-
26:35 - 26:39
-
26:37 - 26:42
-
26:39 - 26:47
-
26:42 - 26:50
-
26:47 - 26:51
-
26:50 - 26:53
-
26:51 - 26:55
-
26:53 - 26:58
-
26:55 - 26:59
-
26:58 - 27:01
-
26:59 - 27:05
-
27:01 - 27:07
-
27:05 - 27:10
-
27:07 - 27:12
-
27:10 - 27:14
-
27:12 - 27:16
-
27:14 - 27:18
-
27:16 - 27:20
-
27:18 - 27:21
-
27:20 - 27:25
-
27:21 - 27:28
-
27:25 - 27:30
-
27:28 - 27:32
-
27:30 - 27:36
-
27:32 - 27:39
-
27:36 - 27:39
-
27:41 - 27:46
-
27:47 - 27:52
-
27:50 - 27:55
-
27:52 - 27:57
-
27:55 - 28:00
-
27:57 - 28:02
-
28:00 - 28:05
-
28:02 - 28:07
-
28:05 - 28:11
-
28:07 - 28:12
-
28:11 - 28:16
-
28:12 - 28:20
-
28:16 - 28:23
-
28:20 - 28:25
-
28:23 - 28:28
-
28:25 - 28:30
-
28:28 - 28:33
-
28:30 - 28:34
-
28:33 - 28:37
-
28:34 - 28:38
-
28:37 - 28:40
-
28:38 - 28:43
-
28:40 - 28:45
-
28:43 - 28:47
-
28:45 - 28:50
-
28:47 - 28:52
-
28:50 - 28:54
-
28:52 - 28:56
-
28:54 - 28:59
-
28:56 - 29:01
-
28:59 - 29:05
-
29:01 - 29:07
-
29:05 - 29:11
-
29:07 - 29:13
-
29:11 - 29:14
-
29:13 - 29:16
-
29:14 - 29:17
-
29:16 - 29:20
-
29:17 - 29:24
-
29:20 - 29:26
-
29:24 - 29:29
-
29:26 - 29:30
-
29:29 - 29:32
-
29:30 - 29:35
-
29:32 - 29:37
-
29:35 - 29:40
-
29:37 - 29:42
-
29:40 - 29:44
-
29:42 - 29:48
-
29:44 - 29:50
-
29:48 - 29:52
-
29:50 - 29:55
-
29:52 - 29:58
-
29:55 - 30:01
-
29:58 - 30:03
-
30:01 - 30:04
-
30:03 - 30:07
-
30:04 - 30:09
-
30:07 - 30:12
-
30:09 - 30:14
-
30:12 - 30:16
-
30:14 - 30:18
-
30:16 - 30:20
-
30:18 - 30:23
-
30:20 - 30:26
-
30:23 - 30:27
-
30:26 - 30:29
-
30:27 - 30:31
-
30:29 - 30:33
-
30:31 - 30:34
-
30:33 - 30:36
-
30:34 - 30:38
-
30:36 - 30:40
-
30:38 - 30:41
-
30:40 - 30:44
-
30:41 - 30:47
-
30:44 - 30:50
-
30:47 - 30:53
-
30:50 - 30:55
-
30:53 - 30:58
-
30:55 - 31:00
-
30:58 - 31:03
-
31:00 - 31:05
-
31:03 - 31:07
-
31:05 - 31:09
-
31:07 - 31:10
-
31:09 - 31:13
-
31:10 - 31:15
-
31:13 - 31:18
-
31:15 - 31:20
-
31:18 - 31:22
-
31:20 - 31:25
-
31:22 - 31:27
-
31:25 - 31:30
-
31:27 - 31:32
-
31:30 - 31:33
-
31:32 - 31:35
-
31:33 - 31:39
-
31:35 - 31:41
-
31:39 - 31:43
-
31:41 - 31:45
-
31:43 - 31:48
-
31:45 - 31:49
-
31:48 - 31:51
-
31:49 - 31:54
-
31:51 - 31:55
-
31:54 - 31:57
-
31:55 - 32:01
-
31:57 - 32:04
-
32:01 - 32:07
-
32:04 - 32:09
-
32:07 - 32:11
-
32:09 - 32:14
-
32:11 - 32:16
-
32:14 - 32:19
-
32:16 - 32:21
-
32:19 - 32:24
-
32:21 - 32:26
-
32:24 - 32:28
-
32:26 - 32:32
-
32:28 - 32:35
-
32:32 - 32:36
-
32:35 - 32:39
-
32:36 - 32:41
-
32:39 - 32:43
-
32:41 - 32:45
-
32:43 - 32:47
-
32:45 - 32:50
-
32:47 - 32:53
-
32:50 - 32:56
-
32:53 - 32:57
-
32:56 - 33:01
-
32:57 - 33:05
-
33:01 - 33:08
-
33:05 - 33:10
-
33:08 - 33:12
-
33:10 - 33:15
-
33:12 - 33:18
-
33:15 - 33:21
-
33:18 - 33:24
-
33:21 - 33:26
-
33:24 - 33:28
-
33:26 - 33:31
-
33:28 - 33:34
-
33:31 - 33:36
-
33:34 - 33:37
-
33:36 - 33:39
-
33:37 - 33:41
-
33:39 - 33:44
-
33:41 - 33:47
-
33:44 - 33:49
-
33:47 - 33:52
-
33:49 - 33:55
-
33:52 - 33:57
-
33:55 - 34:00
-
33:57 - 34:04
-
34:00 - 34:05
-
34:04 - 34:07
-
34:05 - 34:09
-
34:07 - 34:11
-
34:09 - 34:15
-
34:11 - 34:17
-
34:15 - 34:20
-
34:17 - 34:22
-
34:20 - 34:24
-
34:22 - 34:27
-
34:24 - 34:29
-
34:27 - 34:31
-
34:29 - 34:33
-
34:31 - 34:35
-
34:33 - 34:38
-
34:35 - 34:40
-
34:38 - 34:42
-
34:40 - 34:43
-
34:42 - 34:45
-
34:43 - 34:47
-
34:45 - 34:48
-
34:47 - 34:51
-
34:48 - 34:55
-
34:51 - 34:55
-
34:55 - 34:59
-
34:57 - 35:01
-
34:59 - 35:03
-
35:01 - 35:07
-
35:03 - 35:09
-
35:07 - 35:11
-
35:09 - 35:13
-
35:11 - 35:16
-
35:13 - 35:18
-
35:16 - 35:20
-
35:18 - 35:24
-
35:20 - 35:26
-
35:24 - 35:29
-
35:26 - 35:29
-
35:29 - 35:34
-
35:32 - 35:36
-
35:34 - 35:38
-
35:36 - 35:40
-
35:38 - 35:43
-
35:40 - 35:45
-
35:43 - 35:48
-
35:45 - 35:50
-
35:48 - 35:52
-
35:50 - 35:56
-
35:52 - 35:58
-
35:56 - 36:00
-
35:58 - 36:03
-
36:00 - 36:06
-
36:03 - 36:08
-
36:06 - 36:10
-
36:08 - 36:12
-
36:10 - 36:16
-
36:12 - 36:17
-
36:16 - 36:19
-
36:17 - 36:22
-
36:19 - 36:25
-
36:22 - 36:26
-
36:25 - 36:29
-
36:26 - 36:30
-
36:29 - 36:33
-
36:30 - 36:36
-
36:33 - 36:38
-
36:36 - 36:39
-
36:38 - 36:42
-
36:39 - 36:44
-
36:42 - 36:46
-
36:44 - 36:48
-
36:46 - 36:50
-
36:48 - 36:51
-
36:50 - 36:54
-
36:51 - 36:56
-
36:54 - 36:58
-
36:56 - 37:01
-
36:58 - 37:03
-
37:01 - 37:05
-
37:03 - 37:09
-
37:05 - 37:11
-
37:09 - 37:12
-
37:11 - 37:16
-
37:12 - 37:18
-
37:16 - 37:21
-
37:18 - 37:21
-
37:22 - 37:25
-
37:24 - 37:28
-
37:25 - 37:31
-
37:28 - 37:34
-
37:31 - 37:36
-
37:34 - 37:39
-
37:36 - 37:40
-
37:39 - 37:43
-
37:40 - 37:45
-
37:43 - 37:48
-
37:45 - 37:49
-
37:48 - 37:52
-
37:49 - 37:54
-
37:52 - 37:55
-
37:54 - 37:58
-
37:55 - 38:00
-
37:58 - 38:01
-
38:00 - 38:03
-
38:01 - 38:06
-
38:03 - 38:08
-
38:06 - 38:11
-
38:08 - 38:13
-
38:11 - 38:17
-
38:13 - 38:20
-
38:17 - 38:21
-
38:20 - 38:24
-
38:21 - 38:27
-
38:24 - 38:30
-
38:27 - 38:32
-
38:30 - 38:35
-
38:32 - 38:37
-
38:35 - 38:39
-
38:37 - 38:41
-
38:39 - 38:43
-
38:41 - 38:45
-
38:43 - 38:47
-
38:45 - 38:50
-
38:47 - 38:53
-
38:50 - 38:55
-
38:53 - 38:57
-
38:55 - 38:59
-
38:57 - 39:01
-
38:59 - 39:05
-
39:01 - 39:08
-
39:05 - 39:10
-
39:08 - 39:13
-
39:10 - 39:15
-
39:13 - 39:18
-
39:15 - 39:21
-
39:18 - 39:24
-
39:21 - 39:27
-
39:24 - 39:30
-
39:27 - 39:32
-
39:30 - 39:34
-
39:32 - 39:36
-
39:34 - 39:39
-
39:36 - 39:41
-
39:39 - 39:43
-
39:41 - 39:44
-
39:43 - 39:47
-
39:44 - 39:48
-
39:47 - 39:52
-
39:48 - 39:54
-
39:52 - 39:56
-
39:54 - 39:58
-
39:56 - 40:01
-
39:58 - 40:01
-
40:01 - 40:09
-
40:09 - 40:13
-
40:11 - 40:15
-
40:13 - 40:18
-
40:15 - 40:20
-
40:18 - 40:23
-
40:20 - 40:26
-
40:23 - 40:28
-
40:26 - 40:30
-
40:28 - 40:34
-
40:30 - 40:35
-
40:34 - 40:38
-
40:35 - 40:42
-
40:38 - 40:42
-
40:45 - 40:50
-
40:47 - 40:51
-
40:50 - 40:56
-
40:51 - 40:57
-
40:56 - 41:00
-
40:57 - 41:02
-
41:00 - 41:03
-
41:02 - 41:06
-
41:03 - 41:07
-
41:06 - 41:09
-
41:07 - 41:11
-
41:09 - 41:15
-
41:11 - 41:17
-
41:15 - 41:19
-
41:17 - 41:22
-
41:19 - 41:24
-
41:22 - 41:26
-
41:24 - 41:28
-
41:26 - 41:30
-
41:28 - 41:33
-
41:30 - 41:35
-
41:33 - 41:38
-
41:35 - 41:40
-
41:38 - 41:42
-
41:40 - 41:45
-
41:42 - 41:47
-
41:45 - 41:51
-
41:47 - 41:53
-
41:51 - 41:56
-
41:53 - 42:00
-
41:56 - 42:03
-
42:00 - 42:05
-
42:03 - 42:07
-
42:05 - 42:09
-
42:07 - 42:12
-
42:09 - 42:14
-
42:12 - 42:17
-
42:14 - 42:19
-
42:17 - 42:21
-
42:19 - 42:23
-
42:21 - 42:25
-
42:23 - 42:27
-
42:25 - 42:29
-
42:27 - 42:32
-
42:29 - 42:34
-
42:32 - 42:36
-
42:34 - 42:37
-
42:36 - 42:40
-
42:37 - 42:42
-
42:40 - 42:44
-
42:42 - 42:47
-
42:44 - 42:49
-
42:47 - 42:51
-
42:49 - 42:53
-
42:51 - 42:55
-
42:53 - 42:58
-
42:55 - 43:00
-
42:58 - 43:03
-
43:00 - 43:05
-
43:03 - 43:08
-
43:05 - 43:10
-
43:08 - 43:12
-
43:10 - 43:13
-
43:12 - 43:16
-
43:13 - 43:19
-
43:16 - 43:22
-
43:19 - 43:24
-
43:22 - 43:27
-
43:24 - 43:29
-
43:27 - 43:32
-
43:29 - 43:34
-
43:32 - 43:36
-
43:34 - 43:38
-
43:36 - 43:42
-
43:38 - 43:46
-
43:42 - 43:48
-
43:46 - 43:49
-
43:48 - 43:52
-
43:49 - 43:55
-
43:52 - 43:57
-
43:55 - 44:00
-
43:57 - 44:03
-
44:00 - 44:05
-
44:03 - 44:07
-
44:05 - 44:09
-
44:07 - 44:12
-
44:09 - 44:15
-
44:12 - 44:18
-
44:15 - 44:22
-
44:18 - 44:23
-
44:22 - 44:27
-
44:23 - 44:30
-
44:27 - 44:32
-
44:30 - 44:34
-
44:32 - 44:38
-
44:34 - 44:39
-
44:38 - 44:42
-
44:39 - 44:44
-
44:42 - 44:45
-
44:44 - 44:48
-
44:45 - 44:50
-
44:48 - 44:53
-
44:50 - 44:55
-
44:53 - 44:57
-
44:55 - 44:59
-
44:57 - 45:02
-
44:59 - 45:03
-
45:02 - 45:06
-
45:03 - 45:09
-
45:06 - 45:11
-
45:09 - 45:14
-
45:11 - 45:16
-
45:14 - 45:18
-
45:16 - 45:21
-
45:18 - 45:22
-
45:21 - 45:25
-
45:22 - 45:27
-
45:25 - 45:29
-
45:27 - 45:31
-
45:29 - 45:33
-
45:31 - 45:34
-
45:33 - 45:36
-
45:34 - 45:38
-
45:36 - 45:40
-
45:38 - 45:42
-
45:40 - 45:44
-
45:42 - 45:46
-
45:44 - 45:47
-
45:46 - 45:51
-
45:47 - 45:54
-
45:51 - 45:56
-
45:54 - 45:59
-
45:56 - 46:01
-
45:59 - 46:05
-
46:01 - 46:09
-
46:05 - 46:09
-
46:09 - 46:16
-
46:12 - 46:16
-
46:25 - 46:28
-
46:28 - 46:37
-
46:38 - 46:41
| Santeri Koivisto edited Finnish subtitles for 37C3 - Writing secure software | ||
| Santeri Koivisto edited Finnish subtitles for 37C3 - Writing secure software | ||
| Santeri Koivisto edited Finnish subtitles for 37C3 - Writing secure software | ||
| Santeri Koivisto edited Finnish subtitles for 37C3 - Writing secure software | ||
| Santeri Koivisto edited Finnish subtitles for 37C3 - Writing secure software | ||
| Santeri Koivisto edited Finnish subtitles for 37C3 - Writing secure software | ||
| Santeri Koivisto edited Finnish subtitles for 37C3 - Writing secure software | ||
| Santeri Koivisto edited Finnish subtitles for 37C3 - Writing secure software |