1 00:00:00,000 --> 00:00:03,060 Translated by Markus Aurala (ITKST56 course assignment at JYU.FI) 2 00:00:03,060 --> 00:00:12,256 rC3-tunnusmusiikkia 3 00:00:12,256 --> 00:00:18,400 Herald: Seuraava aiheemme on "Saksan vaalien hakkerointi - turvaton sähköinen 4 00:00:18,400 --> 00:00:23,600 ääntenlaskenta, kuinka se palasi ja miksi et edes tiedä 5 00:00:23,600 --> 00:00:32,330 siitä". Teille saksalaisille täällä, huomasitteko, että äänestäminen muuttui 6 00:00:32,330 --> 00:00:37,647 sähköisemmäksi juuri? Itse asun Saksassa ja 7 00:00:37,647 --> 00:00:43,200 en tätä huomannut. Molemmat puhujamme ilmoittautuivat vapaaehtoisiksi vaali- 8 00:00:43,200 --> 00:00:50,080 työntekijöiksi Saksassa ja tutkivat vaalien tietoturvaa. He lupasivat 9 00:00:50,080 --> 00:00:56,630 kertoa meille kuinka siinä kävi ja kuinka vaaleista voidaan tehdä turvalliset. 10 00:00:56,630 --> 00:01:01,680 Puhujamme ovat Tobias, tietoturvatutkija, joka keskittyy haavoittuvaisuuksien 11 00:01:01,680 --> 00:01:07,120 etsimiseen, autojen tietoturvaan ja lipunryöstöhaasteisiin. Sekä Johannes, 12 00:01:07,120 --> 00:01:11,960 joka on postdoc-tietoturvatutkija. Kummatkin ovat työskennelleet yhdessä 13 00:01:11,960 --> 00:01:18,528 Fraunhofer AISEC -instituutissa. Nauttikaa esityksestä. 14 00:01:18,528 --> 00:01:24,722 Hiljaisuus 15 00:01:24,722 --> 00:01:29,450 Johannes: Hei ja tervetuloa esitykseemme "Saksan vaalien hakkerointi - 16 00:01:29,450 --> 00:01:33,840 turvaton sähköinen ääntenlaskenta, kuinka se palasi ja miksi et edes tiedä siitä." 17 00:01:33,840 --> 00:01:39,840 Minun nimeni on Johannes Obermaier. Tobias: Ja minä olen Tobias Madl. Olemme 18 00:01:39,840 --> 00:01:44,720 hyvin sisällä Baijerin vaaleissa, koska olemme vaalityöntekijöitä ja tarjoamme 19 00:01:44,720 --> 00:01:49,200 tukeamme täällä Saksassa. J: Olemme haavoittuvuuksia etsiviä 20 00:01:49,200 --> 00:01:52,778 tietoturvatutkijoita. T: Ihan ensimmäiseksi, haluamme puhua 21 00:01:52,778 --> 00:01:59,554 esityksemme sisällöstä. Tietomme ja ohjelmistomme ovat peräisin 22 00:01:59,554 --> 00:02:06,048 Baijerin kunnallisvaaleista, jotka käytiin alkuvuonna 2020. Kyseessä oli 23 00:02:06,048 --> 00:02:12,237 tietokonepohjainen äänestysteknologia, joten olimme hyvin huolissamme kun me 24 00:02:12,237 --> 00:02:16,620 aloimme kokeilemaan sitä. Ja lopulta päädyimme esittämään kysymyksen "ovatko 25 00:02:16,620 --> 00:02:24,025 vaalit turvatut?" Seuraavaksi esitän tämänpäiväisen puheemme rungon. 26 00:02:24,025 --> 00:02:28,862 Ensiksi, katsomme sähköistä ääntenlaskujärjestelmää. Seuraavaksi, 27 00:02:28,862 --> 00:02:34,425 tunnistamme käsitteellisiä ja käytännön ongelmia tähän teknologiaan liittyen. 28 00:02:34,425 --> 00:02:40,626 Sen jälkeen tutkimme ohjelmistoa ja siitä löydettyjä haavoittuvaisuuksia. 29 00:02:40,626 --> 00:02:46,727 Esityksen lopuksi tehdään yhteenveto. 30 00:02:46,727 --> 00:02:52,060 J: Ymmärtääkseemme miksi tarvitsemme sähköistä ääntenlaskentaa, katsotaan 31 00:02:52,060 --> 00:02:57,766 äänestyslippua. Tämä äänestyslippu on paperimuodossaan noin metrin leveä ja 32 00:02:57,766 --> 00:03:03,466 50 senttimetriä korkea. Joten se on aika iso lipuke, paljon ehdokkaita. 33 00:03:03,466 --> 00:03:11,091 Vedetään faktat yhteen. On yhteensä 599 ehdokasta, jotka jakaantuvat 34 00:03:11,091 --> 00:03:17,287 yhdeksään puolueeseen. Äänestäjä saa antaa maksimissaan 70 ääntä näissä 35 00:03:17,287 --> 00:03:23,150 vaaleissa. Kuulostaa yksinkertaiselta, mutta muuttuu monimutkaisemmaksi, koska 36 00:03:23,150 --> 00:03:28,616 äänestäjä voi antaa maksimissaan 3 ääntä per ehdokas ja jakaa 70 ääntään eri 37 00:03:28,616 --> 00:03:35,572 puolueiden ehdokkaille. Vaikka äänestäjä päättäisikin 38 00:03:35,572 --> 00:03:40,771 äänestää yhtä ainoaa puoluetta, hän voi yliviivata ehdokkaan, josta 39 00:03:40,771 --> 00:03:46,142 ei pidä. Ja näin nuo ehdokkaat eivät saa ääniä lipukkeestasi. Tästä seuraa, että 40 00:03:46,142 --> 00:03:51,984 äänestysjärjestelmä antaa paljon valtaa kansalaisille ja äänestäminen on hauskaa. 41 00:03:51,984 --> 00:03:57,902 Äänten laskeminen näistä lipukkeista on hankalaa, koska kaikkien lipukkeiden 42 00:03:57,902 --> 00:04:03,986 laskeminen oikein edellyttää paljon tietoa erikoissäännöistä. Tästä syystä 43 00:04:03,986 --> 00:04:09,320 on kehitetty ohjelmisto OK.VOTE. OK.VOTE on tyypillinen 44 00:04:09,320 --> 00:04:15,154 vaaliohjelmisto, jota käytetään myös äänestyspaikoilla ääntenlaskentaan. 45 00:04:15,154 --> 00:04:20,478 OK.VOTE:lla on aika suuri markkinaosuus. He sanovat, että se olisi 75% 46 00:04:20,478 --> 00:04:26,112 Saksassa. Ohjelmistoa käytetään useissa osavaltioissa. OK.VOTE:ssa on useita 47 00:04:26,112 --> 00:04:32,114 moduuleja vaalien järjestämiseen, mutta tässä esityksessä 48 00:04:32,114 --> 00:04:40,082 tarkastelemme ainoastaan OK.VOTE:n ääntenlaskentamoduulia, johon 49 00:04:40,082 --> 00:04:47,328 vaalityöntekijät syöttävät lipukkeet manuaalisesti 50 00:04:47,328 --> 00:04:52,928 äänien tallentamiseksi tieto- järjestelmään. OK.VOTE:n tehtävä on 51 00:04:52,928 --> 00:04:58,734 prosessoida jokainen lipuke äänten laskemiseksi, tarkistaa 52 00:04:58,734 --> 00:05:03,708 oikeellisuus, sitten tallettaa lipukkeen tiedot tietokantaan, lopuksi se tekee 53 00:05:03,708 --> 00:05:10,065 taikojaan ja laskee lopputuloksen. Tämä kuulostaa aika samalta mitä äänestyskone 54 00:05:10,065 --> 00:05:17,592 tekee. Mutta hetkinen... Äänestyskoneita, minun Saksassani? 55 00:05:17,592 --> 00:05:22,585 T: Hetkonen, sehän on laitonta. J: Onko se laitonta? Katsotaan, 56 00:05:22,585 --> 00:05:29,618 mitä lainsäädäntö siitä sanoo. Kyllä, vuonna 2009 Saksan liittotasavallan 57 00:05:29,618 --> 00:05:35,258 perustuslakioikeus teki merkittävän päätöksen ja sanoi, että äänestys- 58 00:05:35,258 --> 00:05:40,474 koneiden käyttö liittopäivävaaleissa vuonna 2005 oli perustuslain vastaista. 59 00:05:40,474 --> 00:05:48,755 Muun muassa siksi, että ne eivät olleet riittävän avoimia. Tämä on aika lähellä 60 00:05:48,755 --> 00:05:54,393 kunnallisvaaleja koskevia löydöksiämme. Mutta hetkinen, me 61 00:05:54,393 --> 00:05:58,564 puhumme liittopäivävaaleista. Mutta nämähän ovat kunnallisvaalit 62 00:05:58,564 --> 00:06:03,430 ja meillä on eri säännöt kunnallis- vaaleille. Esimerkiksi on olemassa 63 00:06:03,430 --> 00:06:10,374 GLKrWO, Gemeinde- und Landkreiswahlordnung Bayern, 64 00:06:10,374 --> 00:06:16,605 joka kääntyy Baijerin kunnallisvaali- säännöiksi. Ja nuo säännöt sanovat, 65 00:06:16,605 --> 00:06:23,009 että emme saa käyttää äänestämiseen tietokonetta, mutta tietokoneita 66 00:06:23,009 --> 00:06:29,417 voidaan käyttää ääntenlaskuun. Tässä tapauksessa, olettaisin, että meillä on 67 00:06:29,417 --> 00:06:35,686 jonkinlaisia tietoturvavaatimuksia noissa säännöissä. Mutta yritin 68 00:06:35,686 --> 00:06:40,713 löytää niitä. Ja olin todella yllättynyt. Niitä on tarkalleen nolla kappaletta. 69 00:06:40,713 --> 00:06:45,370 T: Eli jos ei ole laillisia vaatimuksia, onko edes mitään ohjelmistoa koskevia 70 00:06:45,370 --> 00:06:50,590 vaatimuksia tai sertifiointeja, joilla taataan OK.VOTE:n turvallisuus? 71 00:06:50,590 --> 00:06:55,813 J: Kyllä, niitä on. Tutkin web-sivustoa ja näin siellä tämän kivan pienen 72 00:06:55,813 --> 00:07:03,127 kappaleen "Turvalliset vaalit". Siinä sanotaan OK.VOTE:n kehityksen aikana 73 00:07:03,127 --> 00:07:10,540 heidän laittaneet korkeimman painoarvon turvallisuusasioihin. He seuraavaat BSI:n 74 00:07:10,540 --> 00:07:16,193 ja OWASP:in tietoturvasuosituksia, ja heillä on sertifioitu palvelinkeskus 75 00:07:16,193 --> 00:07:20,540 erittäin korkeilla turvastandardeilla. T: Ja miltä tämä näyttää sitten 76 00:07:20,540 --> 00:07:23,507 käytännössä? J: Voi, en haluaisi näyttää sinulle tätä 77 00:07:23,507 --> 00:07:29,597 tässä. Se on aika pelottavaa. Tämä tässä oli se näky kun astuin sisään 78 00:07:29,597 --> 00:07:33,909 vaalihuoneeseen. Tämä ei ole kuva- kirjastosta. Otin tämän kuvan itse ja se 79 00:07:33,909 --> 00:07:40,187 on todellisuus. Siis, kävelin näiden tyyppien luo ja kysyin, että "pitäisikö 80 00:07:40,187 --> 00:07:44,069 meidän käyttää näitä ääntenlaskuun?" ja he sanoivat "kyllä, sitä varten 81 00:07:44,069 --> 00:07:50,037 ne ovat täällä". Ja minä rukoilin Jumalaa, että olisi joku syy, ettei se 82 00:07:50,037 --> 00:07:55,102 onnistuisi. Ja Windows XP ei pettänyt minua, koska kun käynnistin ohjelmistoa, 83 00:07:55,102 --> 00:08:02,812 se kaatui, koska ne koneet olivat 32-bittisiä ja OK.VOTE vaati 64-bittisen. 84 00:08:02,812 --> 00:08:09,354 Joo, se oli hienoa. Joten me emme sitten käyttäneet Windows XP -koneita. Etsimme 85 00:08:09,354 --> 00:08:14,331 sen sijaan muita koneita ja löysimme tämän tässä. Se on Windows 10 -kone. 86 00:08:14,331 --> 00:08:20,749 Se oli OK. Kuitenkin, siinä oli vanhentunut virusskanneri. No, parempi 87 00:08:20,749 --> 00:08:26,916 kuin ei mitään. Eli käytimme siis sitä konetta. Mutta pidetään mielessä mitä 88 00:08:26,916 --> 00:08:34,486 meille luvattiin: turvallisia vaaleja. Epäilimme sitä todellakin. 89 00:08:34,486 --> 00:08:39,503 Katsotaan IT-ympäristöä ja miten siihen tilanteeseen päädyttiin. Ensimmäiseksi 90 00:08:39,503 --> 00:08:46,211 tämä ei ollut ihan täysin OK.VOTE:n vika, koska se oli 91 00:08:46,211 --> 00:08:53,682 paikallishallinnon vastuulla hankkia koneet ääntenlaskuun ja AKDB, OK.VOTE:n 92 00:08:53,682 --> 00:08:59,771 toimittaja, sanoi, että he suosittelevat käyttämään turvattuja hallinnon koneita. 93 00:08:59,771 --> 00:09:05,515 OK tähän asti, mutta meillä ei vain ollut tarpeeksi turvattuja hallinnon koneita 94 00:09:05,515 --> 00:09:10,845 tähän tarkoitukseen. Esimerkiksi, kotikaupungissani tarvitsimme noin 8 95 00:09:10,845 --> 00:09:16,571 tietokonetta laskemaan vaalitulosta ja meillä ei ollut tarpeeksi 96 00:09:16,571 --> 00:09:23,211 kaupungintalolla. Ja lisäksi vaalihuone oli koululla ja siellä 97 00:09:23,211 --> 00:09:27,923 oli valmiina koulu-PC:itä. Joten käytimme sitten koulu-PC:itä. 98 00:09:27,923 --> 00:09:33,520 Ja ne olivat peruskoulun koneita. En ole todellakaan varma, tietävätkö 99 00:09:33,520 --> 00:09:38,466 kaikki oppilaat mitä linkkejä saa painaa ja mitä mitä ei pitäisi 100 00:09:38,466 --> 00:09:43,991 painaa. Joten nämä koneet saattaisivat olla turvattomia. Niissä voisi olla 101 00:09:43,991 --> 00:09:49,038 haittaohjelmia. Ja olisi mahdollista, että joku olisi manipuloinut niitä 102 00:09:49,038 --> 00:09:55,854 etukäteen. Emme voi varmuudella sanoa. En haluaisi kuitenkaan syyttää 103 00:09:55,854 --> 00:10:00,058 hallintoa, koska he olivat tehneet hyvää työtä vaalien järjestämisessä. 104 00:10:00,058 --> 00:10:05,967 Heillä oli paljon tehtävää ja he tekivät sen hyvin. Kaikki järjestyi 105 00:10:05,967 --> 00:10:12,283 lopulta. He eivät ole tietoturva- ammattilaisia ja emme voi sitä vaatia 106 00:10:12,283 --> 00:10:18,532 heiltä, että he tietäisivät, miten pystyttää järjestelmät ja mitä 107 00:10:18,532 --> 00:10:24,045 riskejä liittyy turvaamattomiin tietokoneisiin vaaleissa. 108 00:10:24,045 --> 00:10:29,890 Se ei vain ole heidän työtään. Me vain päädyimme käyttämään epäluotettavia 109 00:10:29,890 --> 00:10:36,069 koneita, koska - kuten olemme nähneet - lailliset vaatimukset eivät sano toisin. 110 00:10:36,069 --> 00:10:40,108 Nyt, katsotaan miten saimme digitaalisen tuloksen aikaan. 111 00:10:40,108 --> 00:10:47,214 T: Juuri niin. Menimme äänestys- paikoillemme ja saimme jokainen 112 00:10:47,214 --> 00:10:52,811 PC:n ja nipun äänestyslipukkeita laskettavaksi ja tulosten syöttämiseksi. 113 00:10:52,811 --> 00:10:59,468 Johannes oli Tiimissä 2, minä Tiimissä 1. Syötimme lipukkeita koneisiimme. 114 00:10:59,468 --> 00:11:06,232 Ne digitoitiin. Tiimi 1 oli vihreä ja Tiimi 2 oli sininen. 115 00:11:06,232 --> 00:11:11,103 J: Kun lopetin lipukkeiden syöttämisen, laitoin sisään USB-muistin ja 116 00:11:11,103 --> 00:11:16,735 annoin sen Tiimi 1:lle. T: Juuri niin. Latasin koneelleni äänet, 117 00:11:16,735 --> 00:11:22,094 koska siinä vaiheessa minulla oli keskuskone. OK.VOTE:n ohjelmisto 118 00:11:22,094 --> 00:11:28,578 finalisoi nämä vaalit ja siirsi tulokset sen jälkeen 119 00:11:28,578 --> 00:11:34,055 jälleen USB-muistille. Ja sitten se kuljetettiin eteenpäin prosessoitavaksi. 120 00:11:34,055 --> 00:11:39,160 J: Mikä ongelma tässä kaikessa oli? Ensinnäkin, siinä oli paljon 121 00:11:39,160 --> 00:11:43,301 läpinäkymättömyyttä. Esimerkiksi, ohjelmisto, jota käytimme äänten 122 00:11:43,301 --> 00:11:49,171 laskemiseen, OK.VOTE, ei ole avointa lähdekoodia. Se on suljettu järjestelmä, 123 00:11:49,171 --> 00:11:55,572 eikä kukaan pysty sitä analysoimaan. Ja koska se on suljettu järjestelmä, on 124 00:11:55,572 --> 00:12:00,433 myös hyvin hankala ymmärtää miten se toimii ja varmistaa, että se todella 125 00:12:00,433 --> 00:12:05,192 laskee oikein. Meillä oli satoja äänestyslipukkeita siellä ja 126 00:12:05,192 --> 00:12:10,217 on todella vaikeaa sanoa, ovatko ne kaikki oli laskettu oikein. Ja 127 00:12:10,217 --> 00:12:16,887 me olemme nähneet tämän ennenkin. Ei voi varmistaa laskennan olleen turvattu. 128 00:12:16,887 --> 00:12:22,264 Meillä olisi voinut olla peukaloitu järjestelmä. Emme voi sulkea pois, että 129 00:12:22,264 --> 00:12:29,346 joku olisi manipuloinut sitä etukäteen. Jos sitä olisi manipuloitu, sitä olisi 130 00:12:29,346 --> 00:12:34,988 rivivaalityöntekijän vaikea havaita. Joten se tarkoittaa, että 131 00:12:34,988 --> 00:12:40,947 koko vaaliprosessi on läpinäkymätön ja siitä tulee vaikeasti ymmärrettävä 132 00:12:40,947 --> 00:12:46,460 henkilölle, joka vain haluaa seurata vaaleja. Se on täysin vastaan 133 00:12:46,460 --> 00:12:52,953 julkisen ääntenlaskun ideaa. T: Puhutaan nyt siitä vaiheesta, 134 00:12:52,953 --> 00:12:58,323 joka tapahtuu sen jälkeen kun lopetamme laskemisen tiimeissämme. 135 00:12:58,323 --> 00:13:02,038 J: Mitä sitä teit kun sait ulos lopullisen ääntenlaskennan tuloksen? 136 00:13:02,038 --> 00:13:04,581 Kuinka se toimitettiin keskushallintoon? 137 00:13:04,581 --> 00:13:10,666 T: Jep, istuin autooni ja otin USB-muistit taskuuni ja ajoin 138 00:13:10,666 --> 00:13:17,868 keskus-PC:lle. Kuten varmaan tiedät, vaalipäivä on erittäin kiireinen ja 139 00:13:17,868 --> 00:13:24,386 jotkut tiimit ovat hitaampia laskemaan. Jotkut tiimi ovat nopeampia. Keskustiimi 140 00:13:24,386 --> 00:13:29,052 ei tiedä milloin USB-muistit saapuvat. Meneekö siinä kaksi, kolme tuntia vai 141 00:13:29,052 --> 00:13:33,191 puolikas, he eivät tiedä. Joten voisin mennä ja syödä jotain matkallani. 142 00:13:33,191 --> 00:13:39,311 Tai voisin manipuloida äänestystuloksia. Tarkoitan, jakaa ääniä. Ja kun lopulta 143 00:13:39,311 --> 00:13:44,307 joku päivä saavun keskus-PC:lle, annan vain USB-muistin, he asentavat sen 144 00:13:44,307 --> 00:13:48,340 ja ottavat datan joka sieltä löytyy. Siinä kaikki. Jälkeen päin 145 00:13:48,340 --> 00:13:52,574 he vain lataavat lopulliset tulokset sivulle. 146 00:13:52,574 --> 00:13:59,035 J: Nyt ehkä mietitte, miten hän voisi manipuloida vaalituloksia? 147 00:13:59,035 --> 00:14:04,844 Koska niiden autenttisuutta ei ole suojattu. Kuljettavan tiedoston 148 00:14:04,844 --> 00:14:10,388 koskemattomuus on suojattu. On CRC32 ja SHA-tiiviste, mutta ei krypto- 149 00:14:10,388 --> 00:14:16,464 grafista allekirjoitusta. Jos hän muuttaisi dataa, hän voisi generoida 150 00:14:16,464 --> 00:14:22,089 uudet koskemattomuustiedot ja data hyväksyttäisiin. Pääongelma tässä on 151 00:14:22,089 --> 00:14:28,508 myös se, että tämä on harvoja hetkiä kun vain yhdellä ihmisellä on valvomaton 152 00:14:28,508 --> 00:14:34,268 pääsy kuljettavana olevaan äänestysdataan. Ja se tekee 153 00:14:34,268 --> 00:14:39,255 manipuloinnista mahdollista ja helposti tehtävissä olevaa. Ja se ei saisi olla 154 00:14:39,255 --> 00:14:48,145 näin, erityisesti sähköistetyissä vaaleissa. Katsotaanpa 155 00:14:48,145 --> 00:14:52,487 itse äänteenlaskuohjelmistoa, koska teimme siellä vielä enemmän 156 00:14:52,487 --> 00:14:55,962 mielenkiintoisia löydöksiä. T: Juuri näin. Aloitetaan järjestelmä- 157 00:14:55,962 --> 00:15:01,951 arkkitehtuurista. Ensimmäiseksi, tämä on paikallinen tai hajautettu versio 158 00:15:01,951 --> 00:15:08,008 järjestelmästä. Joten kaikki tämä tapahtuu paikallisilla koneilla, niillä 159 00:15:08,008 --> 00:15:13,154 joihin tutustuimme luokkahuoneissa. Ja näillä koneilla on asennettuna Apache 160 00:15:13,154 --> 00:15:18,011 Tomcat -web-palvelin, joka on yhdistetty MariaDB-tietokantaan. Käyttäjä käyttää 161 00:15:18,011 --> 00:15:25,414 äänestysjärjestelmä siirrettävällä Firefoxilla. AKDB sanoi aiemmin, että he 162 00:15:25,414 --> 00:15:33,166 suhtautuivat erittäin vakavasti tieto- turvaan. Mietitään mitä hyökkääjiä heillä 163 00:15:33,166 --> 00:15:38,349 oli mielessään suunnitellessaan järjestelmää ja keneltä pitäisi 164 00:15:38,349 --> 00:15:44,342 puolustautua. Hyökkääkö järjestelmää, ääntenlaskuohjelmistoa, vastaan käyttäjä, 165 00:15:44,342 --> 00:15:51,336 joka on normaalisti vain vapaa-ajallaan vaaleissa avustava vaalityöntekijä, 166 00:15:51,336 --> 00:15:57,549 vai oliko heillä mielessä verkkohyökkääjät, jotka tulevat 167 00:15:57,549 --> 00:16:03,077 ihan jostain muualta ja yrittävät manipuloida verkkoa ulkoapäin? 168 00:16:03,077 --> 00:16:09,895 Ensiksi, tarkastelimme käyttäjää yhtenä mahdollisista hyökkääjistä. Ja jopa tässä 169 00:16:09,895 --> 00:16:15,412 ympäristössä me löysimme todella rikkinäistä tavaraa. Ensimmäiseksi, 170 00:16:15,412 --> 00:16:20,525 rikkinäinen pääsynhallinta. Mutta ei siinä kaikki. Tässä kirjautumissivu, 171 00:16:20,525 --> 00:16:26,630 jolla kirjauduimme äänestysjärjestelmään, ja jossa klikkasimme hallintasivua missä 172 00:16:26,630 --> 00:16:31,467 voimme vaihtaa salasanan tai editoida profiiliamme. Vasemmalla on nappuloita ja 173 00:16:31,467 --> 00:16:36,585 kuten näette, olemme kirjautuneet sisään "user42":na. Ei ole muuta tehtävää kuin 174 00:16:36,585 --> 00:16:42,976 valita mitä laskentaa haluamme tehdä: yleistä alueellista äänestystä vai 175 00:16:42,976 --> 00:16:48,223 kunnallista laskentaa. Ja siinä kaikki mitä voimme tehdä sivulla. Vaihdetaan 176 00:16:48,223 --> 00:16:53,726 järjestelmänvalvojaksi. Tässä meillä on järjestelmänvalvojan tili, kuten näette 177 00:16:53,726 --> 00:17:00,193 ylävasemmalta. Siellä voimme tehdä paljon enemmän kuin normaali käyttäjä. Olemme 178 00:17:00,193 --> 00:17:04,483 taas hallintasivulla, mutta nyt meillä on käyttäjienhallinta, jossa voimme lisätä 179 00:17:04,483 --> 00:17:12,495 tai poistaa käyttäjiä. Me voimme avata uudelleen tai sulkea äänestystapoja. Me 180 00:17:12,495 --> 00:17:18,471 voimme tuoda/viedä tietoa. Mikä ei ole käytössä ruutukaappauksissa on 181 00:17:18,471 --> 00:17:25,003 äänestystulosten poisto jne. Me valitsimme kaksi erittäin kiinnostavaa 182 00:17:25,003 --> 00:17:31,602 URL-osoitetta teille. Ensimmäiseksi, "Bezirk wieder eröffnen" joka kääntyy 183 00:17:31,602 --> 00:17:36,360 "avaa uudelleen vaalit". Sen jälkeen kun vaalit on suljettu, 184 00:17:36,360 --> 00:17:41,296 ääniä ei voi enää syöttää järjestelmään. Ja toinen 185 00:17:41,296 --> 00:17:46,709 linkki on "Löschen", joka kääntyy "tuhoa". Se puolestaan tuhoaa 186 00:17:46,709 --> 00:17:53,156 kaiken datan koneelta, jolloin siellä ei ole enää yksityistä tai turvattua dataa. 187 00:17:53,156 --> 00:17:59,470 Ja tämä on se miltä ne näyttävät kun me avaamme ne vasemmalta puolelta. 188 00:17:59,470 --> 00:18:04,428 Näemme "avaa uudelleen" -valinnan. Oikealla näemme datan poiston. Hetkinen, 189 00:18:04,428 --> 00:18:12,609 tämä ei ole järjestelmänvalvojan näkymä, vaan käyttäjän näkymä. He eivät 190 00:18:12,609 --> 00:18:18,184 tarkastaneet oliko tämä sallittua käyttäjälle. Pakko sanoa ettei tämä 191 00:18:18,184 --> 00:18:22,008 ollut vain näkymä, vaan ne toimivat. Täysin toimivat prosessit, joilla 192 00:18:22,008 --> 00:18:25,533 poistat dataa tai avaat vaalit uudelleen. 193 00:18:25,533 --> 00:18:29,296 Hälytysääni J: Mikä ongelma tässä on? 194 00:18:29,296 --> 00:18:33,754 T: Jep, kuten varmaan jo arvasit, vaalien avaaminen uudelleen voi 195 00:18:33,754 --> 00:18:38,529 tehdä siitä todennäköisempää, että mukaan ujutetaan ääniä omalle suosikille. 196 00:18:38,529 --> 00:18:44,795 Ja lisäksi, jos haluan sekoittaa vaaleja, voin vain poistaa kaiken 197 00:18:44,795 --> 00:18:50,043 äänestysdatan. Joutuisimme aloittamaan alusta. Olisimme täysin myöhässä tai 198 00:18:50,043 --> 00:18:53,422 kiistämään äänestyksen. J: Mutta kuinka tämä on edes mahdollista? 199 00:18:53,422 --> 00:18:59,710 T: Jep, me opimme, että tässä on heidän sovelluksensa pääsyoikeuksien tarkastus. 200 00:18:59,710 --> 00:19:05,694 Tässä funktiossa "getZugriffRollen", joka kääntyy "hae pääsyroolit". 201 00:19:05,694 --> 00:19:10,859 Normaalisti siellä olisi koodia joka tarkastaa onko tällä roolilla pääsy 202 00:19:10,859 --> 00:19:15,304 tähän osaa sivustoa. Mutta se vain palauttaa "null", ei sitä ole toteutettu. 203 00:19:15,304 --> 00:19:21,863 Ja se on kiva homma implementoida pääsynhallinta. Kuitenkin, me voimme 204 00:19:21,863 --> 00:19:27,422 ehdottaa mekanismeja, joilla tämä olisi voitu estää. Ensimmäiseksi, et voi 205 00:19:27,422 --> 00:19:33,174 luottaa piilotettuun tietoon. Jos jätät näyttämättä mistä voi klikata 206 00:19:33,174 --> 00:19:38,835 URLia tai sivua, se ei ole oikeasti salaisuus, koska ehkä löydät jotain 207 00:19:38,835 --> 00:19:43,488 vuodettua lähdekoodia, varmistat ajamisen järjestelmänvalvojana, tai 208 00:19:43,488 --> 00:19:48,774 naputtelet URL:n vahingossa väärin ja pääset piilotettuun tietoon. Tai sitten 209 00:19:48,774 --> 00:19:54,505 käytät skanneria löytääksesi piilodatan. Datan piilottaminen ei ole turvallista. 210 00:19:54,505 --> 00:19:59,009 Ja toisaalta, sinun pitäisi implementoida pääsyoikeuksien hallinta, jotta 211 00:19:59,009 --> 00:20:03,394 se olisi olemassa ja testata edes kerran, että se toimii. Lopulta 212 00:20:03,394 --> 00:20:07,678 voimme todeta, että piilotettu data ei ole suojattua dataa. 213 00:20:07,678 --> 00:20:11,802 T: Katsotaaanpa toisentyyppistä hyökkäystä, XSS-hyökkäystä. 214 00:20:11,802 --> 00:20:17,009 XSS-hyökkäys on eräänlaista häirintää kahden web-sivun välillä. 215 00:20:17,009 --> 00:20:21,862 Esimerkiksi, yksi sivusto yrittää tehdä jotain toisen puolesta. Tavoite on usein 216 00:20:21,862 --> 00:20:27,052 huijata käyttäjää tai käynnistää manipulaatio. Ensimmäiseksi, olemme aika 217 00:20:27,052 --> 00:20:33,217 varmoja, että he ovat miettineet XSS- hyökkäyksiä, koska tehdessämme testausta, 218 00:20:33,217 --> 00:20:39,979 me näimme lisättyjä HTTP-otsakkeita, jotka torjuvat suuren kirjon erilaisia 219 00:20:39,979 --> 00:20:45,140 XSS-hyökkäysvektoreita. Esimerkiksi, tässä on "X-Frame-Options: Same Origin". 220 00:20:45,140 --> 00:20:52,179 Se tarkoittaa, että muut sivut eivät voi sisällyttää ääntenlaskentaohjelmistoa 221 00:20:52,179 --> 00:20:56,608 omiin kehyksiinsä jne. Myöskin XSS-hyökkäyksen suojaus on asetettu: 222 00:20:56,608 --> 00:21:03,739 "X-XXS-Protection". Joten tämä näyttää aika hyvältä, koska jo tämä sulkee pois 223 00:21:03,739 --> 00:21:10,328 useita hyökkäysvektoreita. Mutta entäs CSRF-hyökkäykset? Kun me ensin testasimme 224 00:21:10,328 --> 00:21:16,157 tätä, meille selvisi, että ääntenlasku- järjestelmää ei oltu täysin suojattu. 225 00:21:16,157 --> 00:21:21,490 Mitä CSRF-hyökkäys tarkoittaa? Vaiheessa 1 vaalityöntekijä käyttää integroitua 226 00:21:21,490 --> 00:21:26,566 Firefox-selainta vihamielisellä web-sivustolla. Eli käyttäjä 227 00:21:26,566 --> 00:21:31,965 keksii mennä web-sivustolle. Esimerkiksi joku lähettää hänelle linkin ja se sai 228 00:21:31,965 --> 00:21:37,805 hänet klikkaamaan sitä, esimerkiksi suloisten eläinkuvien toivossa tai 229 00:21:37,805 --> 00:21:43,088 jotain sellaista. Ja sitten käyttäjä vierailee sivustolla. Ja tämä sivusto 230 00:21:43,088 --> 00:21:47,972 sisältää lomakkeen kenttiä, jotka muistuttavat ääntenlaskentaohjelmiston 231 00:21:47,972 --> 00:21:53,890 kentistä. Ja vihamielinen web-sivusto saa selaimen lähettämään niiden datan 232 00:21:53,890 --> 00:21:59,576 ääntenlaskentaohjelmistoon sen alkuperäisen web-sivuston sijasta. 233 00:21:59,576 --> 00:22:04,489 Ja heti kun se saavuttaa Tomcat- web-palvelimen, se hämääntyy, 234 00:22:04,489 --> 00:22:11,266 koska web-palvelin ei CSRF-hyökkäyksessä erota käyttäjän syötettä vihamielisen 235 00:22:11,266 --> 00:22:15,432 sivuston syötteestä. Ja sitten Apache Tomcat -palvelin 236 00:22:15,432 --> 00:22:20,482 vain pitää sitä käyttäjän syötteenä ja käsittelee sen. Ja tätä 237 00:22:20,482 --> 00:22:25,550 kutsutaan CSRF-hyökkäykseksi. Näimme siis, että joskus siellä 238 00:22:25,550 --> 00:22:31,360 on suojaus tietyntyyppisiä hyökkäyksiä vastaan. Mutta monet sivut eivät ole 239 00:22:31,360 --> 00:22:37,647 suojattuja. Se on hyvin huolestuttavaa. Haavoittuvaisuus vuodelta 2001. Se on 240 00:22:37,647 --> 00:22:43,873 melkein 20 vuotta vanha ja löytyy yhä tästä ohjelmistossa. Tämä on hyvin 241 00:22:43,873 --> 00:22:49,950 huolestuttavaa. Nyt, vedetään yhteen mitä sillä voi tehdä. Ensimmäiseksi, 242 00:22:49,950 --> 00:22:55,508 tämä ongelma aiheutuu siitä, että sieltä puuttuu nk. CSRF-tunniste tai mikä vain 243 00:22:55,508 --> 00:23:00,456 hyvä vastatoimenpide CSRF-hyökkäyksille. Ja toisekseen, vain minimaalinen 244 00:23:00,456 --> 00:23:05,161 käyttäjän vuorovaikutus tarvitaan. Käyttäjä ei aina edes näe, että 245 00:23:05,161 --> 00:23:11,233 hän on parhaillaan osallisena CSRF-hyökkäyksessä. 246 00:23:11,233 --> 00:23:15,695 Se on melkein käyttäjän huomaamattomissa. Ja se on erittäin yksinkertaista huijata 247 00:23:15,695 --> 00:23:22,824 käyttäjää klikkaamaan linkkiä. Vaikutus on tuhoisa, koska me voimme manipuloida 248 00:23:22,824 --> 00:23:29,414 asetuksia ääntenlaskentaohjelmistossa. Ja me voimme lisätä feikkilipukkeita. 249 00:23:29,414 --> 00:23:33,604 Hälytysääni T: Mikä tämän lopputulos on? 250 00:23:33,604 --> 00:23:37,899 Mitä me voimme tehdä tällä? J: No, me voimme manipuloida koko 251 00:23:37,899 --> 00:23:42,534 vaalit tällä. Katsotaan demo siitä, kuinka me sen teemme. 252 00:23:42,534 --> 00:23:45,009 T: Siistiä. J: Olemme jo kirjautuneet sisään 253 00:23:45,009 --> 00:23:54,763 ääntenlaskentajärjestelmään. Tunnuksemme on "admin321934". Lasketaanpa ääniä. 254 00:23:54,763 --> 00:23:59,625 Näemme tässä kaikki lipukkeet, jotka voimme syöttää järjestelmään. Nämä ovat 255 00:23:59,625 --> 00:24:07,226 yhä tyhjiä, koska emme ole syöttäneet lipukkeita vielä. Aloitetaan. Yksin- 256 00:24:07,226 --> 00:24:12,337 kertaisuuden takia, meillä on vain kaksi puoluetta. Vasemmalla Hyvä Puolue, joka 257 00:24:12,337 --> 00:24:16,812 haluaa parasta ihmisille. Oikealla meillä on Paha Puolue, joka 258 00:24:16,812 --> 00:24:22,339 haluaa valtaa ja on valmis turvautumaan jopa vaalivilppiin. Aloitetaan 259 00:24:22,339 --> 00:24:27,957 ja syötetään ensimmäinen paperilipuke. Äänestäjä on äänestänyt Hyvää Puoluetta, 260 00:24:27,957 --> 00:24:37,867 joten syötämme tämän ohjelmistoon. Nyt me tallennamme lipukkeen ja jatkamme 261 00:24:37,867 --> 00:24:44,743 eteenpäin. Se on ääni Hyvälle Puolueelle. Syötetään se ja mennään kolmanteen 262 00:24:44,743 --> 00:24:52,906 lipukkeeseen. Ja taas, se on Hyvälle Puolueelle. Tallennetaan kolmas lipuke. 263 00:24:52,906 --> 00:24:59,870 Mennään lipukkeiden yleiskatsaukseen ja katsotaan mitä on tapahtunut. Näette, 264 00:24:59,870 --> 00:25:05,244 että olemme syöttäneet onnistuneesti 3 lipuketta. Seuraavaksi, katsotaan 265 00:25:05,244 --> 00:25:11,353 alustavia vaalituloksia. Ja kuten näemme, meillä on yhteensä 3 lipuketta, 266 00:25:11,353 --> 00:25:15,983 jotka olemme syöttäneet järjestelmään. Se on oikein. 3 lipuketta sisälsivät 267 00:25:15,983 --> 00:25:21,764 ääniä Hyvälle Puolueelle. Se on myös oikein. Ja nolla ääntä on annettu 268 00:25:21,764 --> 00:25:28,235 Huonolle Puolueelle. Kaikki hyvin vielä. Seuraavaksi, näytän mitä tapahtuu jos 269 00:25:28,235 --> 00:25:32,616 avaan vihamielisen verkkosivun. Sivusto tekee CSRF-hyökkäyksen ja manipuloi 270 00:25:32,616 --> 00:25:38,984 vaalituloksia. Oletetaan, että pidämme taukoa ja vierailemme Twitterissä. 271 00:25:49,004 --> 00:25:54,058 OK, täällä ollaan. Täällä on kiva kissakuva ja täällä on linkki, josta 272 00:25:54,058 --> 00:26:02,388 löytyy lisää niitä. Leikitään, että meidät huijataan klikkaamaan linkkiä. 273 00:26:02,388 --> 00:26:08,001 Voi, katsokaa noita suloisia eläinkuvia. Katsokaa tuota nälkäistä kania, apinaa, 274 00:26:08,001 --> 00:26:14,318 pientä siiliä ja kahta suloista vuohta jne. Kun lopetamme selaamisen, 275 00:26:14,318 --> 00:26:23,343 suljemme välilehdet ja palaamme äänten- laskentaohjelmistoon. Mitä huomaamme nyt 276 00:26:23,343 --> 00:26:29,460 on, että käyttäjänimi on muuttunut. Meidät on "häkätty". Meidät huijattiin 277 00:26:29,460 --> 00:26:34,599 vierailemaan vihamielisellä sivustolla. Se suoritti CSRF-hyökkäyksen sovellukseen 278 00:26:34,599 --> 00:26:42,758 ja manipuloi sitä. Katsotaan mitä muuta on muuttunut. Kaikki 3 lipuketta on 279 00:26:42,758 --> 00:26:48,426 yhä siellä, mutta nyt menemme katsomaan alustavia vaalituloksia. 280 00:26:48,426 --> 00:26:53,792 Mitä näemme siellä on, että lipukkeiden määrä järjestelmässä 281 00:26:53,792 --> 00:26:58,190 on noussut kahdeksaan. Meillä on nyt 5 ylimääräistä lipuketta, joita emme ole 282 00:26:58,190 --> 00:27:03,728 syöttäneet. Kuten näette, Hyvällä Puolueella on yhä 3 ääntä. Ne me 283 00:27:03,728 --> 00:27:09,531 syötimme. Mutta nyt Paha Puolue on ottanut johdon. Sillä on nyt 5 ääntä. 284 00:27:09,531 --> 00:27:15,648 Tämä hyökkäys on manipuloinut vaalituloksia. Tosi huono homma, 285 00:27:15,648 --> 00:27:21,111 koska me emme näe niitä feikkiääniä, jotka on lisätty. 286 00:27:21,111 --> 00:27:26,789 Olimme kuitenkin onnekkaita kun huomasimme sen, koska odotimme 287 00:27:26,789 --> 00:27:31,534 hyökkäystä. Mutta emme huomaisi asiaa jokaisessa tapauksessa. 288 00:27:33,233 --> 00:27:39,124 T: Mutta mitä tapahtuu, jos emme huomaa? J: No, tämä tapahtuu. Tässä esimerkissä 289 00:27:39,124 --> 00:27:44,213 me vain oletimme, että Tiimillä 1 oli 3 lipuketta, jotka se oli syöttänyt 290 00:27:44,213 --> 00:27:48,247 järjestelmään ja Tiimillä 2 oli 6 lipuketta, jotka se oli syöttänyt 291 00:27:48,247 --> 00:27:55,038 järjestelmään. Nyt Tiimi 1 vierailee vihamielisellä sivustolla ja 5 feikki- 292 00:27:55,038 --> 00:28:01,085 lipuketta lisätään vaalituloksiin. Tässä tapauksessa hyökkääjä oli fiksu 293 00:28:01,085 --> 00:28:06,498 ja injektoi lipukkeet paikkaan, johon Tiimi 2:n äänten odotetaan 294 00:28:06,498 --> 00:28:14,209 tulevan myöhemmin. Joten mitä tapahtuu: Tiimi 2 vie lipukkeensa Tiimi 1:lle ja 295 00:28:14,209 --> 00:28:20,736 se yrittää lukea ne sisään. Ja mitä nyt tapahtuu: koska siellä mihin Tiimin 2 296 00:28:20,736 --> 00:28:26,460 lipukkeiden olisi määrä päätyä, on jo lipukkeita, sisäänlukuprosessi 297 00:28:26,460 --> 00:28:32,353 ei toimi onnistuneesti. Vain joukko ääniä luetaan sisään. 298 00:28:32,353 --> 00:28:37,955 Joten enemmistö lipukkeista, 5 tai 6 lipuketta, 299 00:28:37,955 --> 00:28:42,483 ohitetaan, koska ne eivät mahdu tietokantaan, koska niiden paikat 300 00:28:42,483 --> 00:28:48,120 on jo viety feikkilipukkeiden toimesta. Yleensä me voisimme olettaa, että 301 00:28:48,120 --> 00:28:52,786 tämä generoisi virheviestin tai ainakin varoituksen, mutta näin ei käy. Tämä on 302 00:28:52,786 --> 00:28:59,567 ohjelmiston hiljainen epäonnistuminen. Ja mikä on vielä pahempaa, äänimäärät 303 00:28:59,567 --> 00:29:04,639 ovat jälleen oikein. Se tarkoittaa, että meillä on yhdeksän ääntä järjestelmässä 304 00:29:04,639 --> 00:29:09,926 ja ne vastaavat yhdeksää paperilipuketta. Näyttää siltä kuin kaikki lipukkeet olisi 305 00:29:09,926 --> 00:29:14,250 syötetty ja kaikki olisi kuten pitääkin. Siispä suljemme 306 00:29:14,250 --> 00:29:19,486 äänestyksen ja laskemme vaalituloksen. Ja se tapahtuu nyt. Kuten näette, 307 00:29:19,486 --> 00:29:25,624 on vain 4 ääntä Hyvälle Puolueelle, mutta 5 ääntä Pahalle Puolueelle. 308 00:29:25,624 --> 00:29:31,747 Joten Paha Puolue voitti vaalit manipuloimalla äänestysjärjestelmää, 309 00:29:31,747 --> 00:29:38,272 käyttämällä CSRF-hyökkäystä. Ja sen ei pitäisi olla koskaan mahdollista, koska 310 00:29:38,272 --> 00:29:45,812 emme se ei vastaa ääntenlaskujärjestelmän odotuksia. Vaalitulos on vilpillinen. 311 00:29:45,812 --> 00:29:50,570 Mietimmekö verkkohaavoittuvaisuuksia? T: Joo, varmasti, mutta se on kolikon 312 00:29:50,570 --> 00:29:55,010 toinen puoli. Tarkastimme ensin vaali- työntekijöiden osion hyökkäyksiä vastaan, 313 00:29:55,010 --> 00:30:00,345 sitten tarkastimme verkkopuolen ja skannasimme ja analysoimme järjestelmää. 314 00:30:00,345 --> 00:30:07,530 Sitten me huomasimme: avoimia portteja kaikkialla. Kuten näette, he ovat 315 00:30:07,530 --> 00:30:13,729 jättäneet Apache Tomcatin ja MariaDB:n avoimeksi koko järjestelmän verkolle. 316 00:30:13,729 --> 00:30:19,010 Ja me mietimme tästä, että "no, testataan tuoreita haavoittuvaisuuksia, 317 00:30:19,010 --> 00:30:25,090 kuten 2020 löydettyä Ghostcatia". Ghostcat on hyökkäys, joka tehdään 318 00:30:25,090 --> 00:30:31,290 Apachen AJP-protokollaa vastaan. Tarkastellaan Apachen järjestelmää ja 319 00:30:31,290 --> 00:30:37,780 miten se on rakennettu. Apachessa on hakemisto, josta jaetaan staattisia 320 00:30:37,780 --> 00:30:43,270 resursseja, HTML- ja JSP-tiedostoja. Lisäksi se voi sisältää luokkatiedostoja 321 00:30:43,270 --> 00:30:48,979 tai servlettejä, joita käytetään JSP- tai HTML-tiedostojen yhteydessä. 322 00:30:48,979 --> 00:30:56,990 Annoimme ajpShooter-skriptille ohjel- miston osoitteen, portin ja tiedoston, 323 00:30:56,990 --> 00:31:01,980 jonka halusimme sen lukevan. Tässä se oli luokka "PrivateTest", koska 324 00:31:01,980 --> 00:31:07,250 se voisi vuotaa, ehkäpä. Me sanoimme, että haluamme vain sen luettavan. 325 00:31:07,250 --> 00:31:10,750 Siinä olisi mahdollisuus, että sen sisältämä koodi tulisi 326 00:31:10,750 --> 00:31:17,600 suoritettavaksi. Me teimme sen hyökkäyksen ja TA-DAA, tulos! Tässä on 327 00:31:17,600 --> 00:31:22,510 luokan "PrivateTest" tavukoodi. Tiputetaan tämä koodi kahvikuppiimme 328 00:31:22,510 --> 00:31:29,132 ja ehkä saamme ongittua sieltä luokan lähdekoodin. Ja, kyllä, saimme sen. 329 00:31:29,132 --> 00:31:36,700 Miksipä salausmekanismia ei testattaisi tekstijonolla? 330 00:31:36,700 --> 00:31:42,020 Mutta tämä ei ole tavallinen tekstijono, kuten ehkä huomaat. Tämä on oikea 331 00:31:42,020 --> 00:31:45,661 ylläpitäjän salasana tuotannossa olevaan MariaDB:een. Ja tämä on... 332 00:31:45,661 --> 00:31:51,775 Hälytysääni J: Mikä tässä on ongelma? T: Kuten ehkä 333 00:31:51,775 --> 00:31:56,850 selvästi näet tästä hyökkäyksestä, me voisimme vuotaa MariaDB:n kirjautumis- 334 00:31:56,850 --> 00:32:02,363 tiedot ja ehkä enemmänkin kirjautumis- tietoja ja salasanoja. Voisimme vuotaa 335 00:32:02,363 --> 00:32:08,392 koko lähdekoodin verkkoon ilman, että meillä on pääsyä PC:lle vaalihuoneessa. 336 00:32:08,392 --> 00:32:15,533 Ja tämä oli vain mahdollista, koska he jättivät avoimiksi verkkoon kaikki koneet 337 00:32:15,533 --> 00:32:22,285 ja sovellukset. Näin ei pitäisi koskaan olla. Joten lopputulos. 338 00:32:22,285 --> 00:32:26,902 Miten tämän voi estää? Ensiksikin, sinun ei pitäisi koskaan jättää tarpeettomia 339 00:32:26,902 --> 00:32:31,445 portteja avoimiksi. He eivät edes käytä AJP-välityspalvelinta sovelluksessaan, 340 00:32:31,445 --> 00:32:38,185 mutta jättivät sen auki koko maailmalle. Seuraavaksi, pidä ohjelmistosi ajan 341 00:32:38,185 --> 00:32:43,948 tasalla, jotta ohjelmistosi ei olisi haavoittuvainen jos jotain löytyy. 342 00:32:43,948 --> 00:32:49,771 Ja viimeisenä mutta ei vähäisimpänä: älä koskaan käytä tuotantosalasanoja 343 00:32:49,771 --> 00:32:55,430 yksikkötesteissäsi. Se ei ole paras idea. Lopuksi, yhteenvetona: vältä kaikin 344 00:32:55,430 --> 00:33:01,316 keinoin jättämästä ylimääräistä hyökkäys- pinta-alaa tälläisille hyökkäyksille, 345 00:33:01,316 --> 00:33:04,671 joista et ehkä edes vielä tiedä. J: Nyt kun Tobi on näyttänyt 346 00:33:04,671 --> 00:33:09,759 mielenkiintoisia Apache-juttuja, minä testasin tietokannan tietoturvaa. 347 00:33:09,759 --> 00:33:14,918 Ensimmäisen analyysin aloitin samalla PC:llä, jossa ohjelmisto 348 00:33:14,918 --> 00:33:20,154 oli asennettuna. Kokeilin saada pääsyä tietokantaan, joka oli samalla koneella, 349 00:33:20,154 --> 00:33:25,040 localhostilla. Kokeilin käyttäjätunnusta "root" ja sitten minä huomasin, että 350 00:33:25,040 --> 00:33:29,723 minulta kysytään salasanaa pääsyä varten. Se oli kuitenkin 351 00:33:29,723 --> 00:33:35,338 triviaalia, koska kaikki mitä minun tarvitsi tietää, oli 352 00:33:35,338 --> 00:33:40,744 edellisessä tiedostossa. Onnistuin purkamaan salasanan salauksen 353 00:33:40,744 --> 00:33:46,397 helposti. Sillä hetkellä tajusin, että Tobi oli näyttänyt sitä 354 00:33:46,397 --> 00:33:51,313 aiemmin. Että hän oli löytänyt sen Ghostcat-haavoittuvuudella ja se oli 355 00:33:51,313 --> 00:33:58,846 MySQL-pääkäyttäjän salasana. Kun sain yhteyden MySQL:ään, yritin dumpata 356 00:33:58,846 --> 00:34:05,507 käyttäjätietokannan katsoakseni millä käyttäjillä oli pääsy tietokantaan. Ja 357 00:34:05,507 --> 00:34:11,357 tältä se näyttää. "root"-käyttäjiä on 4 ja käyttäjältä "root" vaaditaan 358 00:34:11,357 --> 00:34:16,576 salasana kun yhteys otetaan paikalliselta koneelta. Mutta odotapa hetki, täällä on 359 00:34:16,576 --> 00:34:23,840 myös kone "pci90309". Ja kuten huomaatte, sillä käyttäjällä ei ole MySQL-salasanaa 360 00:34:23,840 --> 00:34:29,687 asetettuna. Se tarkoittaa, että joku koneelta "pci90309" saa ottaa yhteyden 361 00:34:29,687 --> 00:34:37,518 käyttäjänä "root" ja siihen ei tarvita edes salanaa. Ja se on 362 00:34:37,518 --> 00:34:42,104 todella outoa. Hälytysääni 363 00:34:42,104 --> 00:34:50,530 T: Joten mitä tästä voi seurata? J: No, joku verkossa voi nyt 364 00:34:50,530 --> 00:34:56,310 vain tehdä massaäänestysmanipulointia. Se on aika triviaalia, koska voin vain 365 00:34:56,310 --> 00:35:01,250 nimetä koneeni sopivasti ja saan täyden pääsyn tietokantaan, johon kaikki 366 00:35:01,250 --> 00:35:05,750 äänestystulokset on säilötty. Järjestel- mänvalvojana voin käpistellä niitä. Voin 367 00:35:05,750 --> 00:35:09,943 muuttaa niitä kuten haluan. Tämä haavoittuvaisuus on niin hitsin outo ja 368 00:35:09,943 --> 00:35:16,850 itsestäänselvä, että se ei vaadi mitään vaivannäköä. Ja siksi me emme edes demoa 369 00:35:16,850 --> 00:35:22,770 sitä tässä. Se on typerryttävän yksin- kertaista tässä tapauksessa. Normaalisti 370 00:35:22,770 --> 00:35:28,370 sanoisin "eiköhän se ollut tässä", koska meillä on täysi pääsy järjestelmään 371 00:35:28,370 --> 00:35:33,620 ja voimme muuttaa mitä haluamme. Päätimme kuitenkin mennä vielä syvemmälle, koska 372 00:35:33,620 --> 00:35:42,290 näimme "pci90309":n avaavan ovia. Joten meillä on pääsy äänestystuloksiin. Ja me 373 00:35:42,290 --> 00:35:47,630 voimme muuttaa niitä, mutta meillä ei ole vielä pääsyä koko järjestelmään. 374 00:35:47,630 --> 00:35:52,186 Entäs se PC? Olisiko se mahdollista, että järjestelmänvalvojan pääsyllä 375 00:35:52,186 --> 00:35:59,840 tietokantapalvelimelle voisi ajaa etäältä koodia sillä koneella? Tätä koetta varten 376 00:35:59,840 --> 00:36:04,740 käytimme seuraavaa asetelmaa. Oikealla meillä on äänestysjärjestelmä avoimen 377 00:36:04,740 --> 00:36:10,620 MariaDB-tietokantapalvelimen kanssa. Vasemmalla on minun koneeni. Nimesin 378 00:36:10,620 --> 00:36:16,480 sen "pci90309":ksi, koska voin sen tehdä. Saan siltä avattua yhteyden 379 00:36:16,480 --> 00:36:23,927 MariaDB-palvelimelle. Käytän tunnusta "root" ilman salasanaa. Ja se 380 00:36:23,927 --> 00:36:30,119 hyväksytään heti. Kun minulla on nyt yhteys, voin antaa komentoja. 381 00:36:30,119 --> 00:36:36,440 Esimerkiksi, voin käskeä MariaDB:tä ottamaan käyttöön lisäosia. Tämä lisäosa 382 00:36:36,440 --> 00:36:42,390 on nimeltään "ha_connect". Se on yksi lisäosista, jotka sisältyvät MariaDB:een. 383 00:36:42,390 --> 00:36:49,980 Tämä on erittäin voimallinen MySQL- tallennusajuri. Ja nyt näytän mitä 384 00:36:49,980 --> 00:36:57,020 sillä voi tehdä. Seuraavaksi, luon tietokantataulun nimeltä "pwn". 385 00:36:57,020 --> 00:37:02,538 Käytän tätä tallennusajuria "ha_connect" ja käsken sitä luomaan tiedoston, jonka 386 00:37:02,538 --> 00:37:09,470 nimi on "pwn.dll" ja tallentamaan sen lisäosat sisältävään hakemistoon. 387 00:37:09,470 --> 00:37:14,270 Mikään ei estä meitä tekemästä näin. Se on yksi erikoistoiminnallisuuksista 388 00:37:14,270 --> 00:37:20,289 tässä tallennusajurissa. Voin sanoa tämän taulun vastaavan nyt tuota tiedostoa 389 00:37:20,289 --> 00:37:25,180 tiedostojärjestelmässä. Tämä tiedosto on kuitenkin vielä tyhjä, koska taulu on 390 00:37:25,180 --> 00:37:30,690 tyhjä. Mutta koska tämä on tietokanta, me voimme ajaa "INSERT INTO" -komentoja 391 00:37:30,690 --> 00:37:36,430 ja tallentaa siihen mitä dataa haluamme, esimerkiksi haitta-DLL:n. Voin vain 392 00:37:36,430 --> 00:37:41,270 lisätä sen tauluun käyttäen "INSERT INTO" -komentoa ja se kirjoitetaan 393 00:37:41,270 --> 00:37:49,470 suoraan haitta-DLL:äämme "pwn.dll":ään. Kun olen lopettanut kirjoittamisen, 394 00:37:49,470 --> 00:37:55,060 käsken MariaDB:n ottaa tuo lisäämäni lisäosa käyttöönsä. 395 00:37:55,060 --> 00:38:00,447 Lisäosan käyttöönotto tarkoittaa, että me suoritamme sen tallentamamme koodin 396 00:38:00,447 --> 00:38:05,184 DLL-tiedostossa. Se tarkoittaa, että voimme ajaa etäältä omaa koodiamme. 397 00:38:05,184 --> 00:38:09,960 Hälytysääni T: En edes aio kysyä mitä etäältä 398 00:38:09,960 --> 00:38:14,410 suoritettavalla koodilla voi tehdä. J: No, sillä voi tehdä mitä vain. Se 399 00:38:14,410 --> 00:38:19,870 tarkoittaa, että minulla ei ole esteitä. Täysi kontrolli ääntenlaskujärjestelmään. 400 00:38:19,870 --> 00:38:24,520 En puhu ainoastaan tiedosta tietokannassa. Puhun koko 401 00:38:24,520 --> 00:38:30,040 tietokoneesta, jota voin nyt kontrolloida ja manipuloida kuten haluan. Se on 402 00:38:30,040 --> 00:38:35,580 mahdollista vain käyttämällä äänestysohjelmistoa verkon yli 403 00:38:35,580 --> 00:38:41,080 käyttäen sen avoimia liittymiä. Ja nyt näytän teille miten helppoa on 404 00:38:41,080 --> 00:38:49,720 suorittaa mielivaltainen ohjelma siellä. T: Tämä on ääntenlaskujärjestelmä. 405 00:38:49,720 --> 00:39:01,575 Aloitetaan käynnistämällä ääntenlasku- ohjelmisto. Apache Tomcat -web-palvelin 406 00:39:01,575 --> 00:39:07,733 ja MariaDB-tietokantapalvelin käynnistyvät. Lopulta siirrettävä 407 00:39:07,733 --> 00:39:14,598 Firefox on käynnistynyt. Järjestelmä on toimintavalmis. Varovaisuutta, 408 00:39:14,598 --> 00:39:21,954 hyökkääjä aktivoituu. Hänen koneensa on pahamainen "pci90309". Se käynnistää 409 00:39:21,954 --> 00:39:28,738 välittömästi Python-hyökkäysskriptin "fun.py". Se ottaa yhteyden MariaDB- 410 00:39:28,738 --> 00:39:34,845 palvelimeen käyttäjänä "root" ilman sala- sanaa ja lataa haitta-DLL:n lisäosana. 411 00:39:34,845 --> 00:39:41,512 Kun lataus on ohi, haittakoodi ajetaan. Kuten voimme nähdä, 412 00:39:41,512 --> 00:39:47,506 laskin käynnistyy eli etäältä tapahtuva suorittaminen oli onnistunut. Äänten- 413 00:39:47,506 --> 00:39:52,869 laskentajärjestelmä on nyt hyökkääjän hallinnassa. 414 00:39:52,869 --> 00:40:00,893 J: Sen jälkeen kun löysimme tuhoisat ongelmat ääntenlaskentajärjestelmässä, 415 00:40:00,893 --> 00:40:06,156 kerroimme välittömästi toimittajalle. T: Ja he olivat erittäin ammattimaisia 416 00:40:06,156 --> 00:40:11,269 ja vastasivat nopeasti sähköposteihimme. Pidimme työskentelystä heidän kanssaan 417 00:40:11,269 --> 00:40:18,114 yhdessä ja kerroimme heille meidän tuloksistamme ja he olivat aina 418 00:40:18,114 --> 00:40:23,340 myönteisiä. He myös suosittelivat korjauksia. 419 00:40:23,340 --> 00:40:27,624 J: He kertoivat meille esimerkiksi, että ääntenlaskuohjelmaa pitäisi käyttää vain 420 00:40:27,624 --> 00:40:31,662 turvatussa ympäristössä, kuten hallintoon kuuluvassa verkossa. 421 00:40:31,662 --> 00:40:35,890 Me emme kuitenkaan usko, että se on hyvä ratkaisu. 422 00:40:35,890 --> 00:40:39,563 T: Juuri näin. Me emme ole tyytyväisiä tähän ehdotukseen, koska meillä on silti 423 00:40:39,563 --> 00:40:44,645 kaksi ongelmaa olemassa, vaikka ympäristö olisikin turvattu. Ensiksikin, 424 00:40:44,645 --> 00:40:50,325 hallinnon PC voi silti olla haitta- ohjelmien saastuttama tai se voi olla 425 00:40:50,325 --> 00:40:55,583 manipuloitu ennen kuin äänestys alkaa. Ja toisekseen, oli tämä 426 00:40:55,583 --> 00:40:59,988 bugi rikkinäisessä pääsynhallinnassa, muistattehan? Ja vaikka meillä olisi 427 00:40:59,988 --> 00:41:05,130 ollut turvattu ympäristö, tämä bugi olisi toiminut varmasti ja olisit 428 00:41:05,130 --> 00:41:09,303 voinut tuhota kaiken datan tai avata vaalit uudelleen tai jotain 429 00:41:09,303 --> 00:41:12,260 tälläistä. J: Olemme silti aika tyytyväisiä, 430 00:41:12,260 --> 00:41:17,833 että he ottivat meidät vakavasti. He ovat jopa ilmoittaneet päivityksistä. 431 00:41:17,833 --> 00:41:23,090 He kirjoittivat meille suunnittelevansa CSRF-todenteita sivuille, joilta löysimme 432 00:41:23,090 --> 00:41:28,302 CSRF-haavoittuvaisuuksia. Joten se jo on hyvä askel oikeaan 433 00:41:28,302 --> 00:41:35,020 suuntaan. Vedetään nyt yhteen mitä olemme tänään esittäneet. Ihan ensimmäiseksi, 434 00:41:35,020 --> 00:41:40,408 löysimme useita ongelmallisia puolia konseptista ja sen käytännön 435 00:41:40,408 --> 00:41:45,241 toteutuksesta. Ensimmäiseksi, koko äänestysjärjestelmä pyörii 436 00:41:45,241 --> 00:41:50,384 epäluotettavissa järjestelmissä. Niitä on voitu manipuloida etukäteen. 437 00:41:50,384 --> 00:41:56,055 Niissä voi olla haittaohjelmia tai ne eivät vain toimi oikein. 438 00:41:56,055 --> 00:42:00,638 Jo se on erittäin ongelmallista, koska meillä ei ole luottamusta 439 00:42:00,638 --> 00:42:05,946 näitä järjestelmiä kohtaan ja me käytämme niitä laskemaan 440 00:42:05,946 --> 00:42:11,702 ääniä, laskemaan koko vaalitulosta. Ja lisänä tähän, että vaikka 441 00:42:11,702 --> 00:42:19,430 käytetty ohjelmisto ja sitä ajava PC, olisivat turvatut, se ei tuo vielä 442 00:42:19,430 --> 00:42:25,326 riittävää läpinäkyvyyttä. Sitä on erittäin hankala ymmärtää mitä softa 443 00:42:25,326 --> 00:42:31,001 tarkalleen tekee ja miten. Joten en voi oikein ymmärtää miten se päätyy 444 00:42:31,001 --> 00:42:36,034 tulokseensa. Pitäkää tämä mielessä, että meillä on melkein 600 ehdokasta ja useita 445 00:42:36,034 --> 00:42:42,445 satoja lipukkeita, jotka pitää kaikki syöttää järjestelmään ja sitten 446 00:42:42,445 --> 00:42:47,504 jotain magiaa tapahtuu ja se sylkäisee ulos tuloksensa. Ja sitten meidän vain 447 00:42:47,504 --> 00:42:53,417 ottaa tulos. Koska se on mahdotonta tarkistaa, että laskettiinko jokainen 448 00:42:53,417 --> 00:42:57,822 ääni oikein ja tapahtuiko siellä jotain outoa tai tapahtuiko siellä mitään 449 00:42:57,822 --> 00:43:00,619 manipulaatiota. T: Ja tämä on myös mahdollista, koska me 450 00:43:00,619 --> 00:43:07,262 löysimme paljon haavoittuvaa softaa ja ei vain järjestelmän turvallisuus ollut 451 00:43:07,262 --> 00:43:12,208 kyseessä vaan oli myös täysin mahdollista manipuloida koko äänestystä useista 452 00:43:12,208 --> 00:43:19,954 paikoista pitkin verkkoa. Ja tämä johtaa meidät päätelmään, että nämä vaalit ovat 453 00:43:19,954 --> 00:43:24,900 suuressa vaarassa tällä teknologialla. J: Ja se on se syy miksi me haluamme 454 00:43:24,900 --> 00:43:31,125 teidät vaalityöntekijöiksi. Mitä enemmän silmiä vaaleissa on, sitä turvallisemmat 455 00:43:31,125 --> 00:43:35,539 niistä tulee. Ja jos olet kiinnostunut olemaan vaalityöntekijä, ota vain yhteys 456 00:43:35,539 --> 00:43:40,212 paikallishallintoosi. He ovat aina hyvin tyytyväisiä kun saavat 457 00:43:40,212 --> 00:43:45,222 vapaaehtoisia, jotka haluavat olla vaalityöntekijöitä. Perustuen omaan 458 00:43:45,222 --> 00:43:49,961 kokemukseeni usemmalta vuodelta, se on myös hauskaa. Saat olla 459 00:43:49,961 --> 00:43:54,727 yhteydessä moniin ihmisiin. Minä nautin siitä paljon ja voin vain 460 00:43:54,727 --> 00:44:00,790 suositella sitä. Tämä on hyvä tapa jokaiselle tukea demokratiaa 461 00:44:00,790 --> 00:44:05,273 omassa maassaan. T: Päättääksemme esityksemme, meille 462 00:44:05,273 --> 00:44:11,593 selvisi tämän teknologian tietoturvan olevan huono ja ei siinä vielä kaikki. 463 00:44:11,593 --> 00:44:16,986 J: Tämä oli vain jäävuoren huippu, koska katsoimme vain yhtä ainoaa 464 00:44:16,986 --> 00:44:21,965 ratkaisua, joka on saatavilla äänten- laskentaan. Ja tämä oli myös erikois- 465 00:44:21,965 --> 00:44:28,086 konfiguraatio. Mitä on vielä vaikeampaa nähdä, on se mitä tapahtuu kaiken sen 466 00:44:28,086 --> 00:44:34,597 takana mitä tänään näimme, koska kun me otamme datan ulos ja viemme sen keskus- 467 00:44:34,597 --> 00:44:40,264 hallintoon, jossa data luetaan sisään ja ladataan eteenpäin, mihin se kaikki 468 00:44:40,264 --> 00:44:44,910 data menee? Missä se kaikilta äänestyspaikoilta kertyvä data 469 00:44:44,910 --> 00:44:49,603 lasketaan yhteen? Me emme tiedä sitä vielä miten tämä toimii. Meillä ei ole 470 00:44:49,603 --> 00:44:53,868 sitä ohjelmistoa tutkittavana. On siis paljon tehtävää 471 00:44:53,868 --> 00:44:59,355 jäljellä siinä miten voisimme tarkistaa koko järjestelmän. Me otimme siitä vain 472 00:44:59,355 --> 00:45:04,149 pienen palan ja se on vain tämä ääntenlaskujärjestelmä tässä. 473 00:45:04,149 --> 00:45:08,647 T: Olimme hyvin järkyttyneitä siitä tiedosta, että ääntenlaskennan 474 00:45:08,647 --> 00:45:14,458 siirtyminen tietokoneelle ei ole yleisesti tiedossa. Tästä syystä loimme 475 00:45:14,458 --> 00:45:19,947 tämänpäiväisen esityksemme. Se on elintärkeä tieto demokratialle, että 476 00:45:19,947 --> 00:45:26,788 käytössä on ohjelmisto ja että se ei ole erityisen turvallinen. Se oli 477 00:45:26,788 --> 00:45:33,530 meille iso juttu tuoda tämä tieto ihmisille. 478 00:45:33,530 --> 00:45:37,829 J: Yksi juttu on vielä se, että kaikki mitä tänään näimme, on täysin laillista, 479 00:45:37,829 --> 00:45:44,312 koska ainakaan Baijerissa meillä ei ole mitään sääntöjä tai lakeja sitä vastaan, 480 00:45:44,312 --> 00:45:50,098 että käytämme turvattomia järjestelmiä, ääntenlaskentaohjemistoja. Kuten näimme 481 00:45:50,098 --> 00:45:55,611 alussa, on vain karkeat ohjeistukset, jotka sanovat, että tietokoneita voidaan 482 00:45:55,611 --> 00:46:00,322 käyttää vain ääntenlaskentaan. Mutta me tarvitsemme tiukemmat ohjeistukset, koska 483 00:46:00,322 --> 00:46:06,794 se mitä näimme tänään, ei voi jatkua. Muissa osavaltioissa Saksassa on 484 00:46:06,794 --> 00:46:12,304 joitakin, sanotaan, ohjeistuksia tai jopa sertifiointiprosesseja 485 00:46:12,304 --> 00:46:18,347 tälläiselle digitaaliselle ohjelmistolle. Useimmissa tuntemissani osavaltioissa ei 486 00:46:18,347 --> 00:46:23,780 ole mitään sääntöjä. Tämän ei pidä jatkua seuraavia vuosia näin. 487 00:46:23,780 --> 00:46:29,963 T: Lisäksi, lopulta, ennen kuin mikään ääntenlaskentaohjelmisto voi 488 00:46:29,963 --> 00:46:36,671 mennä tuotantoon, riippumattomat testit pitäisivät olla saatavilla kaikille, 489 00:46:36,671 --> 00:46:41,965 jotta voidaan todistaa ohjelmiston olevan turvallinen ja että se tekee 490 00:46:41,965 --> 00:46:46,530 sitä meille mitä on luvattu. Koska se vaikuttaa suoraan demokratiaamme. Ja jos 491 00:46:46,530 --> 00:46:52,002 ohjelmistoa on manipuloitu, se manipuloi äänestystämme, vaalejamme ja meidän 492 00:46:52,002 --> 00:46:56,333 demokratiaamme. Lopuksi jätämme teille mietittäväksi kaksi kysymystä: 493 00:46:56,333 --> 00:47:01,158 T: Paljonko digitaalista tukea vaaditaan? J: Ja paljonko on siedettävä? 494 00:47:01,158 --> 00:47:18,528 Hiljaisuus 495 00:47:18,528 --> 00:47:25,709 Herald: Paljon kiitoksia kiinnostavasta esityksestänne, Johannes ja Tobias. 496 00:47:25,709 --> 00:47:30,136 Ja paljon kiitoksia työstänne aiheen parissa. Toivottavasti teillä on aikaa 497 00:47:30,136 --> 00:47:36,095 kysymyksille. Itse asiassa, meillä on aika monia kysymyksiä. 498 00:47:36,095 --> 00:47:39,244 J: Toki. H: Hyvä homma. Ensimmäinen nettikysymys: 499 00:47:39,244 --> 00:47:45,468 "Onko epäilystä, että näitä haavoittuvaisuuksia olisi 500 00:47:45,468 --> 00:47:49,404 käytetty aktiivisesti?" J: No, sitä on vaikea sanoa. Ainakaan 501 00:47:49,404 --> 00:47:57,617 siinä kylässä, josta tulen, en havainnut mitään erikoisia tapahtumia. 502 00:47:57,617 --> 00:48:04,994 Minulla ei kuitenkaan ole kokonaiskuvaa Baijerista, joten se on aika hankala 503 00:48:04,994 --> 00:48:09,707 sanoa. Luulen, että on mahdoton sanoa, oliko minkäänlaista manipulaatiota. 504 00:48:09,707 --> 00:48:15,395 Valitettavasti emme voi sanoa niin. 505 00:48:15,395 --> 00:48:20,292 T: Lisäksi, me olimme vain yhdessä paikassa, joten ei meillä ole 506 00:48:20,292 --> 00:48:25,328 kokonaiskuvaa yhteensopimattomista numeroista tai muista tapahtumista, 507 00:48:25,328 --> 00:48:30,702 mutta me emme nähneet, koska olimme vain yhdessä 508 00:48:30,702 --> 00:48:35,589 paikassa, yhdellä äänestyspisteellä. 509 00:48:35,589 --> 00:48:41,470 H: OK, kiitos vastauksista. "Uskotteko, että se olisi mahdollista, että 510 00:48:41,470 --> 00:48:46,300 digitaalinen äänestyslipuke voisi olla yhtä turvallinen kuin 511 00:48:46,300 --> 00:48:51,560 paperinen?" J: No, minun mielestäni se ei ole 512 00:48:51,560 --> 00:48:56,560 mahdollista jos haluat saman avoimuuden, joka meillä on 513 00:48:56,560 --> 00:49:02,010 paperipohjaisissa äänestysjärjestelmissä. Koska kun meillä on paperiäänestys, me 514 00:49:02,010 --> 00:49:07,470 voimme mennä äänestyshuoneeseen ja nähdä mitä siellä tapahtuu. Me voimme nähdä 515 00:49:07,470 --> 00:49:12,690 lipukkeet, jotka jätetään. Lipukkeet, jotka otetaan uurnasta. Laskennan, 516 00:49:12,690 --> 00:49:17,990 yhteenlaskennan. Minä voin yrittää selvittää mitä siellä tapahtuu. Voin 517 00:49:17,990 --> 00:49:24,220 katsoa sitä, ymmärtää mitä ihmiset tekevät siellä. Mutta sillä hetkellä 518 00:49:24,220 --> 00:49:29,840 kun meillä on vain digitaalinen äänestys, en voi selvitttää sitä tekeekö tietokone 519 00:49:29,840 --> 00:49:34,190 mitä sen pitää, onko siellä manipulointia. Joten avoimuuden 520 00:49:34,190 --> 00:49:40,830 suhteen en usko, että on mahdollista tehdä sama, samalla tavalla kuin 521 00:49:40,830 --> 00:49:47,910 paperilipukkeiden kanssa, esimerkiksi. T: Minun pitää lisätä tähän, että jos 522 00:49:47,910 --> 00:49:53,750 siellä olisi mahdollisuus saada jäljitettävyys ja näkyvyys, jolla 523 00:49:53,750 --> 00:50:00,240 saat aina nähtäväksesi miten tulokset syntyvät kustakin paikasta, jos ne 524 00:50:00,240 --> 00:50:07,260 olisi allekirjoitettu avoimesti, se voisi olla mahdollista joku päivä. Mutta ei 525 00:50:07,260 --> 00:50:16,299 tälläisellä ohjelmistolla jonka näimme. H: OK, kiitos. "Tiedättekö sattumalta 526 00:50:16,299 --> 00:50:21,552 mitkä osavaltiot Saksassa käyttävät OK.VOTE:a?" 527 00:50:21,552 --> 00:50:29,257 T: Emme osaa sanoa, mitkä osavaltiot käyttävät sitä aktiivisesti, koska me 528 00:50:29,257 --> 00:50:34,249 olimme mukana vain Münchenin ja Baijerin vaaleissa. Mutta voimme kertoa, että 529 00:50:34,249 --> 00:50:40,130 lähdekoodissa on viitteitä, että se olisi käytössä myös esimerkiksi 530 00:50:40,130 --> 00:50:47,481 Hampurissa, Bremenissä, Hessenissä ja Rheinland-Pfalzissa. Mutta emme tiedä 531 00:50:47,481 --> 00:50:54,180 onko se käytössä siellä, suunnitellaanko sen käyttöönottoa vai onko sitä käytetty 532 00:50:54,180 --> 00:50:59,010 aikaisemmissa vaaleissa ja sittemmin lopetettu käyttämästä. Me emme oikein 533 00:50:59,010 --> 00:51:03,330 tiedä tästä tarkalleen. H: OK, ehkä me voimme pitäytyä hetken 534 00:51:03,330 --> 00:51:11,190 vaalityöläisen tehtävässä. "Manuaalinen datan syöttäminen 535 00:51:11,190 --> 00:51:16,610 järjestelmään... Onko siihen prosessi? Onko teillä ajatusta riskeistä, joita 536 00:51:16,610 --> 00:51:21,069 tässä on?" J: Kyllä. Pohjimmiltaan siinä on 537 00:51:21,069 --> 00:51:26,401 ainakin kaksi tai kolme ihmistä istumassa jokaisella koneella ja sitten he 538 00:51:26,401 --> 00:51:30,930 syöttävät lipukkeet. Ihmiset tarkastavat toistensa tekemiset, että jokainen 539 00:51:30,930 --> 00:51:36,180 lipuke syötetään oikein. Yhdellä ihmisellä on lipuke edessään ja 540 00:51:36,180 --> 00:51:42,290 toinen lukee äänet, jotka ensimmäinen syöttää sisään. 541 00:51:42,290 --> 00:51:47,645 Ja sitten he tekevät ristiintarkastuksen, jotta vaalitulosten sisäänsyöttämisessä 542 00:51:47,645 --> 00:51:54,250 koneelle ei ole tullut virheitä. H: OK. Kiitos kun selvensitte asiaa. 543 00:51:54,250 --> 00:52:00,300 Joku kysyy: "Kuinka järjestelmä on kytketty Internetiin tai johonkin 544 00:52:00,300 --> 00:52:05,870 muuhun verkkoon? Onko oikein ymmärretty, että 545 00:52:05,870 --> 00:52:09,740 tulokset kirjoitetaan fyysiselle, tallennusmedialle, jolla tulokset 546 00:52:09,740 --> 00:52:15,560 siirretään? Fyysisesti tunnusteltavalle... Miksi välittää siitä mitä Windowsia 547 00:52:15,560 --> 00:52:20,305 tai muuta niissä koneissa ajetaan? Onko tämä oikea 548 00:52:20,305 --> 00:52:24,941 ymmärrys?" J: No, ongelma tässä on se, että 549 00:52:24,941 --> 00:52:30,011 se riippuu paikallishallinnosta, että miten he järjestelmä laitetaan pystyyn. 550 00:52:30,011 --> 00:52:36,242 Luin myös tästä keskustelusta, että joku kirjoitti heidän äänestys- 551 00:52:36,242 --> 00:52:44,530 ohjelmistollaan olleen erittäin rajattu verkkoyhteys. Se tietokone ei 552 00:52:44,530 --> 00:52:49,960 ollut yhteydessä Internetiin. Se riippuu pitkälti hallinnosta ja siitä, mitä 553 00:52:49,960 --> 00:52:54,666 verkkoa siellä käytetään. Joten on täysin mahdollista, että 554 00:52:54,666 --> 00:52:59,902 tietokoneilla on Internet-yhteys, koska ei ole olemassa ohjeistusta 555 00:52:59,902 --> 00:53:06,480 siitä, miten tietokoneet voi asentaa. Joten, en voi täysin sulkea pois sitä, 556 00:53:06,480 --> 00:53:11,370 että joku esimerkiksi ottaa langattoman verkkoyhteyden 557 00:53:11,370 --> 00:53:16,834 turvaamattomaan tukiasemaan ja on sitten verkossa. On hankalaa sanoa tästä, 558 00:53:16,834 --> 00:53:22,640 mutta en voi sulkea pois mahdollisuutta. T: Laajentaakseni vastausta, me jopa 559 00:53:22,640 --> 00:53:27,490 yritimme selvittää, onko ohjelmistossa suojausta, joka tarkastaisi onko 560 00:53:27,490 --> 00:53:31,189 Internet-yhteys olemassa ja kieltäisi äänestysjärjestelmän käytön. Mutta 561 00:53:31,189 --> 00:53:36,480 sellaista ei ollut, tai ainakaan emme löytäneet sitä. Joten vaikka hallintoa 562 00:53:36,480 --> 00:53:44,020 ei olisi ohjeistettu, näiden PC:iden ei pitäisi olla yhteydessä verkkoon. Ei 563 00:53:44,020 --> 00:53:47,914 ole turvamekanismia, joka tarkastaisi onko näin ja pysäyttäisi sen. Tai edes 564 00:53:47,914 --> 00:53:51,860 varoittaisi siitä, että kone on verkossa ja pitäisi kytkeytyä irti Internetistä 565 00:53:51,860 --> 00:53:59,700 ennen kuin laskenta alkaa. M: Mielenkiintoista. OK. Meillä on 566 00:53:59,700 --> 00:54:03,780 viesti IRC:stä henkilöltä joka on työskennellyt juuri tämän ohjelmiston 567 00:54:03,780 --> 00:54:09,540 parissa demomoodissa, tietenkin. Ja kysymys, joka hänellä on, kuuluu: 568 00:54:09,540 --> 00:54:17,890 "Huomasitteko mahdollisuutta syöttää negatiivisia ääniä ehdokkaalle? 569 00:54:17,890 --> 00:54:25,760 Esimerkiksi kaksi miinusääntä?" J: No, sitä on vaikea sanoa. Minä 570 00:54:25,760 --> 00:54:31,200 ajattelin tätä, että se onko se mahdollista. Ehkä manipuloimalla 571 00:54:31,200 --> 00:54:37,360 tietokantaa suoraan. En ole täysin varma. En ole varma, kokeilinko 572 00:54:37,360 --> 00:54:43,600 tätä. Mutta kuitenkin kun saan pääsyn tietokantaan, 573 00:54:43,600 --> 00:54:49,920 se on täysin mahdollista manipuloida mitä vain. Joten, me voisimme kokeilla 574 00:54:49,920 --> 00:54:57,520 tätä uudelleen. En kuitenkaan usko, että se juuri muuttaa lopputulostamme. Se on 575 00:54:57,520 --> 00:55:03,040 mielenkiintoinen kysymys, johon en voi vastata juuri nyt. Mutta, Tobi, en ole 576 00:55:03,040 --> 00:55:10,080 varma, kokeilitko sinä tälläistä? T: Kokeilimme muuttaa jo annettuja 577 00:55:10,080 --> 00:55:17,040 ääniä, mutta en usko, että tuo oli mahdollista. Mutta, kuten näytit 578 00:55:17,040 --> 00:55:22,640 siirtäessäsi datan keskuskoneelle, äänet, jotka siellä olivat jo, 579 00:55:22,640 --> 00:55:28,080 mahdollisesti hyökkääjän toimesta, jättäisivät huomioimatta uudet äänet. 580 00:55:28,080 --> 00:55:34,238 Tämä varmastikin korvaisi datan ja nuo äänet, mutta web-käyttöliittymässä 581 00:55:34,238 --> 00:55:38,988 en usko tuon olevan mahdollista. Mutta me löysimme tarpeeksi haavoittuvaisuuksia 582 00:55:38,988 --> 00:55:43,512 tietokantaan pääsyssä, jotta voisit yrittää halutessasi sitä kautta. 583 00:55:43,512 --> 00:55:50,524 H: OK, kiitos selityksestänne. Ihan puhtaasti mielenkiiinnosta, ihmiset 584 00:55:50,524 --> 00:55:55,984 kysyvät: "Kuinka pääsitte käsiksi ohjelmistoon analysoidaksenne sitä?" 585 00:55:55,984 --> 00:56:00,514 J: No, tämä on hyvä kysymys, koska siihen liittyy hyvä tarina. 586 00:56:00,514 --> 00:56:06,304 Olin vaalityöntekijä ja autoin pistämään järjestelmää pystyyn. 587 00:56:06,304 --> 00:56:12,470 Annoin IT-tukea iltaisin. Ja jossain vaiheessa yritimme yhdistää tuloksiamme. 588 00:56:12,470 --> 00:56:17,297 Me otimme tulokset ulos yhdeltä koneelta ja siirsimme ne toiselle koneelle. 589 00:56:17,297 --> 00:56:22,377 Mutta sisäänluku keskeytyi, koska siellä ohjelmistossa oli joku 590 00:56:22,377 --> 00:56:27,616 keinotekoinen rajoitus. Tiedostojen ollessa yli 10 megatavua, niitä ei 591 00:56:27,616 --> 00:56:33,667 lukea enää sisään. Ja tämä tapahtuu aika pian, muutamien satojen äänten 592 00:56:33,667 --> 00:56:38,479 jälkeen. Muutamien satojen lipukkeiden jälkeen sisäänluku ei enää toimi. 593 00:56:38,479 --> 00:56:42,106 Katsoin tiedostoa ja se oli pelkkä JSON-tiedosto, paljon tyhjämerkkejä. 594 00:56:42,106 --> 00:56:46,750 Kopioin kaiken koneelleni korjatakseni asian. Myöhemmin 595 00:56:46,750 --> 00:56:51,251 ohjelmistovalmistaja julkaisi korjauksen. Siinä vaiheessa minulla 596 00:56:51,251 --> 00:56:56,466 oli ohjelmisto koneellani, koska halusin korjata nämä vaalit. 597 00:56:56,466 --> 00:57:00,328 Oli myöhäinen ilta ja olin palannut kotiin, huomanut, että minulla oli 598 00:57:00,328 --> 00:57:06,867 yhä se ohjelmisto koneellani. Katsoin sitä. Joten se oli ihan sattumaa. 599 00:57:06,867 --> 00:57:11,943 Yritin korjata jotain, otin ohjelmiston koneelleni ja sitten se oli valmiina 600 00:57:11,943 --> 00:57:18,028 analysoitavaksi, jopa vähän dataakin. Tiesin miten se toimii 601 00:57:18,028 --> 00:57:23,840 käytännössä. Ja, kyllä, jos joku haluaisi pääsyn siihen ohjelmistoon, 602 00:57:23,840 --> 00:57:28,945 se olisi aika helppoa, koska he voisivat vain palauttaa poistetun datan joltain 603 00:57:28,945 --> 00:57:33,268 koulussa olevalta koneelta. Ehkä joku ei edes poista sitä 604 00:57:33,268 --> 00:57:38,382 äänestysohjelmistoa koulujensa koneilta, tai ehkä joku voisi vain varastaa 605 00:57:38,382 --> 00:57:43,292 yhden niistä USB-muisteista, joita oli käytetty asennuksiin. En edes 606 00:57:43,292 --> 00:57:53,591 usko, että sitä huomattaisiin. H: Kiinnostavaa, todellakin. Mainitsitte 607 00:57:53,591 --> 00:57:58,920 esityksessänne, että ohjelmisto oli BSI:n sertifioima. Että ne väittävät 608 00:57:58,920 --> 00:58:02,673 Open Web Application Security Projectin sertifioineen sen. Mutta kuinka näin 609 00:58:02,673 --> 00:58:07,901 rikkinäinen järjestelmä voi olla näiden tahojen sertifioima alun perin? Mikä on 610 00:58:07,901 --> 00:58:12,119 mennyt pieleen sertifiointiprosessissa? Tämä siis tapahtui. Tarkoitan, että miksi 611 00:58:12,119 --> 00:58:19,219 ei käyttää sertifioitua... Miksi me sertifioimme mitään alun perinkään, jos 612 00:58:19,219 --> 00:58:24,377 se on sertifioitu näin rikkinäisenä? T: Luulen, että ensimmäiseksi - kuten 613 00:58:24,377 --> 00:58:28,158 olemme maininneet esityksessämme - ei ole olemassa laillisia vaatimuksia. 614 00:58:28,158 --> 00:58:32,700 Et tarvitse sertifiointia sille, että ohjelmistoa voi käyttää vaaleissa, 615 00:58:32,700 --> 00:58:38,233 Saksassa tai useimmissa paikoissa Saksassa. Ja lisäksi, tämä 616 00:58:38,233 --> 00:58:46,323 kuvakaappaus, jota näytimme koskien OWASP:ia ja BSI:tä, oli vain AKDB:n 617 00:58:46,323 --> 00:58:52,179 markkinointimateriaalia. En usko, että siinä oli oikeaa sertifiointia mukana. 618 00:58:52,179 --> 00:58:57,930 Me emme tiedä, onko BSI ikinä nähnyt tätä ohjelmistoa vai ovatko he vain laittaneet 619 00:58:57,930 --> 00:59:02,728 sinne, sanoneet BSI:n sertifioineen sen tai BSI:n standardien olleen mielessä. 620 00:59:02,728 --> 00:59:07,234 Heillä on jo "IT Grundschutz". Ehkä he ovat yrittäneet implementoida sitä 621 00:59:07,234 --> 00:59:15,093 tämän järjestelmäarkkitehtuurin jälkeen, mutta BSI ei ole tarkastanut sitä. En 622 00:59:15,093 --> 00:59:18,818 usko, että ohjelmistolla on oikeaa sertifiointia. 623 00:59:18,818 --> 00:59:23,035 J: Lisään vain muutaman yksityiskohdan tähän. Se ei ole oikeasti sertifiointi. 624 00:59:23,035 --> 00:59:28,555 He vain sanovat, että seuraavat BSI:n ja OWASP:in ohjeistuksia. Luulen, että se 625 00:59:28,555 --> 00:59:32,653 oli myös näin sanoitettu heidän sivuillaan. Ei ole oikeaa sertifiointia 626 00:59:32,653 --> 00:59:39,494 tämän takana, toistaiseksi. H: Kiitos vastauksestanne. "Tiedättekö 627 00:59:39,494 --> 00:59:46,197 sattumalta, kuinka kunnat julkistavat vaalitulokset?" 628 00:59:46,197 --> 00:59:53,581 J: En tiedä yksityiskohtaisesti miten se tapahtuu. Kun me luovutamme tuloksemme, 629 00:59:53,581 --> 00:59:59,802 ne siirretään toiseen ohjelmistoon. Ja sitä pidemmälle en ole 630 00:59:59,802 --> 01:00:05,692 nähnyt. Ne päätyvät tietojärjestelmään ja ne siirretään 631 01:00:05,692 --> 01:00:10,348 sähköisesti. Siinä luodaan aluksi alustava tiedosto ja lopulta 632 01:00:10,348 --> 01:00:15,767 siitä luodaan lopulliset tulokset. En kuitenkaan tiedä, miten se 633 01:00:15,767 --> 01:00:20,243 toimii, mutta äänestystulokset, jotka luodaan OK.VOTE:lla menevät varmasti 634 01:00:20,243 --> 01:00:28,562 lopulliseen tulokseen. Ehkä välissä on joku paperiin perustuva 635 01:00:28,562 --> 01:00:33,330 toimintatapa. En todella tiedä, jos he käyttävät dataa 636 01:00:33,330 --> 01:00:38,126 koneella vai dataa paperilla. Mutta se ei loppupeleissä 637 01:00:38,126 --> 01:00:46,112 muuta paljoa. H: OK, loppumetreillä ollaan. 638 01:00:46,112 --> 01:00:50,830 Viimeinen kysymys on: "Kokemuksienne perusteella, kuinka käytännöllistä tai 639 01:00:50,830 --> 01:00:55,964 kallista on laskea äänet uudelleen käsin, ja näittekö tälläistä tapahtuvan?" 640 01:00:55,964 --> 01:01:01,039 T: Luulen, että tämä vaihtelee äänestyksestä toiseen ja kaupungista 641 01:01:01,039 --> 01:01:07,167 toiseen. Jos kyseessä on pieni kylä, äänet voisi laskea helposti 642 01:01:07,167 --> 01:01:13,473 uudelleen. Mutta jos kyseessä on iso kaupunki, kuten esimerkiksi München 643 01:01:13,473 --> 01:01:20,911 miljoonine äänineen, ja ne pitäisi laskea ne uudelleen, 644 01:01:20,911 --> 01:01:26,076 se viivästyttäisi ääntenlaskua tai tuloksia aika paljon. Ja sillä voisi 645 01:01:26,076 --> 01:01:31,071 olla huonoja vaikutuksia, jos sattuisi käymään, että ohjelmistossa on tapahtunut 646 01:01:31,071 --> 01:01:36,890 manipulointia ja kaikki äänet jouduttaisiin laskemaan käsin uudelleen. 647 01:01:36,890 --> 01:01:42,242 J: Käsin laskeminen olisi todellakin erittäin kova työ, koska niissä 648 01:01:42,242 --> 01:01:48,703 lipukkeissa on jopa 70 ääntä kussakin. Niiden yhteenlaskeminen on virhealtista 649 01:01:48,703 --> 01:01:54,660 jos se tehdään käsin. Se on vaikeaa. Ja minun tietääkseni, sitä ei ole 650 01:01:54,660 --> 01:02:00,854 tehty yleisesti vaalien jälkeen. Yritin etsiä 651 01:02:00,854 --> 01:02:07,384 Internetistä jotain tästä. Löysin vain PDF-tiedoston, jossa sanottiin, 652 01:02:07,384 --> 01:02:15,467 ettei kaikkien lipukkeiden ja tuloksen uudelleenlaskeminen ole tehtävissä. 653 01:02:15,467 --> 01:02:21,781 Joten tehdään vain ylätason tarkastus: onko protokolla suoritettu loppuun? Entä 654 01:02:21,781 --> 01:02:26,894 erikoisäänet, ne jotka eivät olleet ihan selkeitä? Ei niitä 655 01:02:26,894 --> 01:02:31,733 kaikkia lipukkeita lasketa uudelleen, sen perusteella mitä ymmärrän. 656 01:02:31,733 --> 01:02:37,880 H: OK. Kiitos todella paljon, Tobias ja Johannes vastauksistanne. 657 01:02:37,880 --> 01:02:41,683 Kiitos uudelleen esityksestänne. J: Kiitos. 658 01:02:41,683 --> 01:02:42,403 H: Kiitos. 659 01:02:42,403 --> 01:03:10,210 rC3-tunnusmusiikkia 660 01:03:10,210 --> 01:03:18,970 Subtitles created by c3subtitles.de in the year 2020. Join, and help us! 661 01:03:18,970 --> 01:03:22,441 Translated by Markus Aurala (ITKST56 course assignment at JYU.FI)