WEBVTT 00:00:00.000 --> 00:00:03.060 Translated by Markus Aurala (ITKST56 course assignment at JYU.FI) 00:00:03.060 --> 00:00:12.256 rC3-tunnusmusiikkia 00:00:12.256 --> 00:00:18.400 Herald: Seuraava aiheemme on "Saksan vaalien hakkerointi - turvaton sähköinen 00:00:18.400 --> 00:00:23.600 ääntenlaskenta, kuinka se palasi ja miksi et edes tiedä 00:00:23.600 --> 00:00:32.330 siitä". Teille saksalaisille täällä, huomasitteko, että äänestäminen muuttui 00:00:32.330 --> 00:00:37.647 sähköisemmäksi juuri? Itse asun Saksassa ja 00:00:37.647 --> 00:00:43.200 en tätä huomannut. Molemmat puhujamme ilmoittautuivat vapaaehtoisiksi vaali- 00:00:43.200 --> 00:00:50.080 työntekijöiksi Saksassa ja tutkivat vaalien tietoturvaa. He lupasivat 00:00:50.080 --> 00:00:56.630 kertoa meille kuinka siinä kävi ja kuinka vaaleista voidaan tehdä turvalliset. 00:00:56.630 --> 00:01:01.680 Puhujamme ovat Tobias, tietoturvatutkija, joka keskittyy haavoittuvaisuuksien 00:01:01.680 --> 00:01:07.120 etsimiseen, autojen tietoturvaan ja lipunryöstöhaasteisiin. Sekä Johannes, 00:01:07.120 --> 00:01:11.960 joka on postdoc-tietoturvatutkija. Kummatkin ovat työskennelleet yhdessä 00:01:11.960 --> 00:01:18.528 Fraunhofer AISEC -instituutissa. Nauttikaa esityksestä. 00:01:18.528 --> 00:01:24.722 Hiljaisuus 00:01:24.722 --> 00:01:29.450 Johannes: Hei ja tervetuloa esitykseemme "Saksan vaalien hakkerointi - 00:01:29.450 --> 00:01:33.840 turvaton sähköinen ääntenlaskenta, kuinka se palasi ja miksi et edes tiedä siitä." 00:01:33.840 --> 00:01:39.840 Minun nimeni on Johannes Obermaier. Tobias: Ja minä olen Tobias Madl. Olemme 00:01:39.840 --> 00:01:44.720 hyvin sisällä Baijerin vaaleissa, koska olemme vaalityöntekijöitä ja tarjoamme 00:01:44.720 --> 00:01:49.200 tukeamme täällä Saksassa. J: Olemme haavoittuvuuksia etsiviä 00:01:49.200 --> 00:01:52.778 tietoturvatutkijoita. T: Ihan ensimmäiseksi, haluamme puhua 00:01:52.778 --> 00:01:59.554 esityksemme sisällöstä. Tietomme ja ohjelmistomme ovat peräisin 00:01:59.554 --> 00:02:06.048 Baijerin kunnallisvaaleista, jotka käytiin alkuvuonna 2020. Kyseessä oli 00:02:06.048 --> 00:02:12.237 tietokonepohjainen äänestysteknologia, joten olimme hyvin huolissamme kun me 00:02:12.237 --> 00:02:16.620 aloimme kokeilemaan sitä. Ja lopulta päädyimme esittämään kysymyksen "ovatko 00:02:16.620 --> 00:02:24.025 vaalit turvatut?" Seuraavaksi esitän tämänpäiväisen puheemme rungon. 00:02:24.025 --> 00:02:28.862 Ensiksi, katsomme sähköistä ääntenlaskujärjestelmää. Seuraavaksi, 00:02:28.862 --> 00:02:34.425 tunnistamme käsitteellisiä ja käytännön ongelmia tähän teknologiaan liittyen. 00:02:34.425 --> 00:02:40.626 Sen jälkeen tutkimme ohjelmistoa ja siitä löydettyjä haavoittuvaisuuksia. 00:02:40.626 --> 00:02:46.727 Esityksen lopuksi tehdään yhteenveto. 00:02:46.727 --> 00:02:52.060 J: Ymmärtääkseemme miksi tarvitsemme sähköistä ääntenlaskentaa, katsotaan 00:02:52.060 --> 00:02:57.766 äänestyslippua. Tämä äänestyslippu on paperimuodossaan noin metrin leveä ja 00:02:57.766 --> 00:03:03.466 50 senttimetriä korkea. Joten se on aika iso lipuke, paljon ehdokkaita. 00:03:03.466 --> 00:03:11.091 Vedetään faktat yhteen. On yhteensä 599 ehdokasta, jotka jakaantuvat 00:03:11.091 --> 00:03:17.287 yhdeksään puolueeseen. Äänestäjä saa antaa maksimissaan 70 ääntä näissä 00:03:17.287 --> 00:03:23.150 vaaleissa. Kuulostaa yksinkertaiselta, mutta muuttuu monimutkaisemmaksi, koska 00:03:23.150 --> 00:03:28.616 äänestäjä voi antaa maksimissaan 3 ääntä per ehdokas ja jakaa 70 ääntään eri 00:03:28.616 --> 00:03:35.572 puolueiden ehdokkaille. Vaikka äänestäjä päättäisikin 00:03:35.572 --> 00:03:40.771 äänestää yhtä ainoaa puoluetta, hän voi yliviivata ehdokkaan, josta 00:03:40.771 --> 00:03:46.142 ei pidä. Ja näin nuo ehdokkaat eivät saa ääniä lipukkeestasi. Tästä seuraa, että 00:03:46.142 --> 00:03:51.984 äänestysjärjestelmä antaa paljon valtaa kansalaisille ja äänestäminen on hauskaa. 00:03:51.984 --> 00:03:57.902 Äänten laskeminen näistä lipukkeista on hankalaa, koska kaikkien lipukkeiden 00:03:57.902 --> 00:04:03.986 laskeminen oikein edellyttää paljon tietoa erikoissäännöistä. Tästä syystä 00:04:03.986 --> 00:04:09.320 on kehitetty ohjelmisto OK.VOTE. OK.VOTE on tyypillinen 00:04:09.320 --> 00:04:15.154 vaaliohjelmisto, jota käytetään myös äänestyspaikoilla ääntenlaskentaan. 00:04:15.154 --> 00:04:20.478 OK.VOTE:lla on aika suuri markkinaosuus. He sanovat, että se olisi 75% 00:04:20.478 --> 00:04:26.112 Saksassa. Ohjelmistoa käytetään useissa osavaltioissa. OK.VOTE:ssa on useita 00:04:26.112 --> 00:04:32.114 moduuleja vaalien järjestämiseen, mutta tässä esityksessä 00:04:32.114 --> 00:04:40.082 tarkastelemme ainoastaan OK.VOTE:n ääntenlaskentamoduulia, johon 00:04:40.082 --> 00:04:47.328 vaalityöntekijät syöttävät lipukkeet manuaalisesti 00:04:47.328 --> 00:04:52.928 äänien tallentamiseksi tieto- järjestelmään. OK.VOTE:n tehtävä on 00:04:52.928 --> 00:04:58.734 prosessoida jokainen lipuke äänten laskemiseksi, tarkistaa 00:04:58.734 --> 00:05:03.708 oikeellisuus, sitten tallettaa lipukkeen tiedot tietokantaan, lopuksi se tekee 00:05:03.708 --> 00:05:10.065 taikojaan ja laskee lopputuloksen. Tämä kuulostaa aika samalta mitä äänestyskone 00:05:10.065 --> 00:05:17.592 tekee. Mutta hetkinen... Äänestyskoneita, minun Saksassani? 00:05:17.592 --> 00:05:22.585 T: Hetkonen, sehän on laitonta. J: Onko se laitonta? Katsotaan, 00:05:22.585 --> 00:05:29.618 mitä lainsäädäntö siitä sanoo. Kyllä, vuonna 2009 Saksan liittotasavallan 00:05:29.618 --> 00:05:35.258 perustuslakioikeus teki merkittävän päätöksen ja sanoi, että äänestys- 00:05:35.258 --> 00:05:40.474 koneiden käyttö liittopäivävaaleissa vuonna 2005 oli perustuslain vastaista. 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ä 00:05:48.755 --> 00:05:54.393 kunnallisvaaleja koskevia löydöksiämme. Mutta hetkinen, me 00:05:54.393 --> 00:05:58.564 puhumme liittopäivävaaleista. Mutta nämähän ovat kunnallisvaalit 00:05:58.564 --> 00:06:03.430 ja meillä on eri säännöt kunnallis- vaaleille. Esimerkiksi on olemassa 00:06:03.430 --> 00:06:10.374 GLKrWO, Gemeinde- und Landkreiswahlordnung Bayern, 00:06:10.374 --> 00:06:16.605 joka kääntyy Baijerin kunnallisvaali- säännöiksi. Ja nuo säännöt sanovat, 00:06:16.605 --> 00:06:23.009 että emme saa käyttää äänestämiseen tietokonetta, mutta tietokoneita 00:06:23.009 --> 00:06:29.417 voidaan käyttää ääntenlaskuun. Tässä tapauksessa, olettaisin, että meillä on 00:06:29.417 --> 00:06:35.686 jonkinlaisia tietoturvavaatimuksia noissa säännöissä. Mutta yritin 00:06:35.686 --> 00:06:40.713 löytää niitä. Ja olin todella yllättynyt. Niitä on tarkalleen nolla kappaletta. 00:06:40.713 --> 00:06:45.370 T: Eli jos ei ole laillisia vaatimuksia, onko edes mitään ohjelmistoa koskevia 00:06:45.370 --> 00:06:50.590 vaatimuksia tai sertifiointeja, joilla taataan OK.VOTE:n turvallisuus? 00:06:50.590 --> 00:06:55.813 J: Kyllä, niitä on. Tutkin web-sivustoa ja näin siellä tämän kivan pienen 00:06:55.813 --> 00:07:03.127 kappaleen "Turvalliset vaalit". Siinä sanotaan OK.VOTE:n kehityksen aikana 00:07:03.127 --> 00:07:10.540 heidän laittaneet korkeimman painoarvon turvallisuusasioihin. He seuraavaat BSI:n 00:07:10.540 --> 00:07:16.193 ja OWASP:in tietoturvasuosituksia, ja heillä on sertifioitu palvelinkeskus 00:07:16.193 --> 00:07:20.540 erittäin korkeilla turvastandardeilla. T: Ja miltä tämä näyttää sitten 00:07:20.540 --> 00:07:23.507 käytännössä? J: Voi, en haluaisi näyttää sinulle tätä 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 00:07:29.597 --> 00:07:33.909 vaalihuoneeseen. Tämä ei ole kuva- kirjastosta. Otin tämän kuvan itse ja se 00:07:33.909 --> 00:07:40.187 on todellisuus. Siis, kävelin näiden tyyppien luo ja kysyin, että "pitäisikö 00:07:40.187 --> 00:07:44.069 meidän käyttää näitä ääntenlaskuun?" ja he sanoivat "kyllä, sitä varten 00:07:44.069 --> 00:07:50.037 ne ovat täällä". Ja minä rukoilin Jumalaa, että olisi joku syy, ettei se 00:07:50.037 --> 00:07:55.102 onnistuisi. Ja Windows XP ei pettänyt minua, koska kun käynnistin ohjelmistoa, 00:07:55.102 --> 00:08:02.812 se kaatui, koska ne koneet olivat 32-bittisiä ja OK.VOTE vaati 64-bittisen. 00:08:02.812 --> 00:08:09.354 Joo, se oli hienoa. Joten me emme sitten käyttäneet Windows XP -koneita. Etsimme 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. 00:08:14.331 --> 00:08:20.749 Se oli OK. Kuitenkin, siinä oli vanhentunut virusskanneri. No, parempi 00:08:20.749 --> 00:08:26.916 kuin ei mitään. Eli käytimme siis sitä konetta. Mutta pidetään mielessä mitä 00:08:26.916 --> 00:08:34.486 meille luvattiin: turvallisia vaaleja. Epäilimme sitä todellakin. 00:08:34.486 --> 00:08:39.503 Katsotaan IT-ympäristöä ja miten siihen tilanteeseen päädyttiin. Ensimmäiseksi 00:08:39.503 --> 00:08:46.211 tämä ei ollut ihan täysin OK.VOTE:n vika, koska se oli 00:08:46.211 --> 00:08:53.682 paikallishallinnon vastuulla hankkia koneet ääntenlaskuun ja AKDB, OK.VOTE:n 00:08:53.682 --> 00:08:59.771 toimittaja, sanoi, että he suosittelevat käyttämään turvattuja hallinnon koneita. 00:08:59.771 --> 00:09:05.515 OK tähän asti, mutta meillä ei vain ollut tarpeeksi turvattuja hallinnon koneita 00:09:05.515 --> 00:09:10.845 tähän tarkoitukseen. Esimerkiksi, kotikaupungissani tarvitsimme noin 8 00:09:10.845 --> 00:09:16.571 tietokonetta laskemaan vaalitulosta ja meillä ei ollut tarpeeksi 00:09:16.571 --> 00:09:23.211 kaupungintalolla. Ja lisäksi vaalihuone oli koululla ja siellä 00:09:23.211 --> 00:09:27.923 oli valmiina koulu-PC:itä. Joten käytimme sitten koulu-PC:itä. 00:09:27.923 --> 00:09:33.520 Ja ne olivat peruskoulun koneita. En ole todellakaan varma, tietävätkö 00:09:33.520 --> 00:09:38.466 kaikki oppilaat mitä linkkejä saa painaa ja mitä mitä ei pitäisi 00:09:38.466 --> 00:09:43.991 painaa. Joten nämä koneet saattaisivat olla turvattomia. Niissä voisi olla 00:09:43.991 --> 00:09:49.038 haittaohjelmia. Ja olisi mahdollista, että joku olisi manipuloinut niitä 00:09:49.038 --> 00:09:55.854 etukäteen. Emme voi varmuudella sanoa. En haluaisi kuitenkaan syyttää 00:09:55.854 --> 00:10:00.058 hallintoa, koska he olivat tehneet hyvää työtä vaalien järjestämisessä. 00:10:00.058 --> 00:10:05.967 Heillä oli paljon tehtävää ja he tekivät sen hyvin. Kaikki järjestyi 00:10:05.967 --> 00:10:12.283 lopulta. He eivät ole tietoturva- ammattilaisia ja emme voi sitä vaatia 00:10:12.283 --> 00:10:18.532 heiltä, että he tietäisivät, miten pystyttää järjestelmät ja mitä 00:10:18.532 --> 00:10:24.045 riskejä liittyy turvaamattomiin tietokoneisiin vaaleissa. 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 00:10:29.890 --> 00:10:36.069 koneita, koska - kuten olemme nähneet - lailliset vaatimukset eivät sano toisin. 00:10:36.069 --> 00:10:40.108 Nyt, katsotaan miten saimme digitaalisen tuloksen aikaan. 00:10:40.108 --> 00:10:47.214 T: Juuri niin. Menimme äänestys- paikoillemme ja saimme jokainen 00:10:47.214 --> 00:10:52.811 PC:n ja nipun äänestyslipukkeita laskettavaksi ja tulosten syöttämiseksi. 00:10:52.811 --> 00:10:59.468 Johannes oli Tiimissä 2, minä Tiimissä 1. Syötimme lipukkeita koneisiimme. 00:10:59.468 --> 00:11:06.232 Ne digitoitiin. Tiimi 1 oli vihreä ja Tiimi 2 oli sininen. 00:11:06.232 --> 00:11:11.103 J: Kun lopetin lipukkeiden syöttämisen, laitoin sisään USB-muistin ja 00:11:11.103 --> 00:11:16.735 annoin sen Tiimi 1:lle. T: Juuri niin. Latasin koneelleni äänet, 00:11:16.735 --> 00:11:22.094 koska siinä vaiheessa minulla oli keskuskone. OK.VOTE:n ohjelmisto 00:11:22.094 --> 00:11:28.578 finalisoi nämä vaalit ja siirsi tulokset sen jälkeen 00:11:28.578 --> 00:11:34.055 jälleen USB-muistille. Ja sitten se kuljetettiin eteenpäin prosessoitavaksi. 00:11:34.055 --> 00:11:39.160 J: Mikä ongelma tässä kaikessa oli? Ensinnäkin, siinä oli paljon 00:11:39.160 --> 00:11:43.301 läpinäkymättömyyttä. Esimerkiksi, ohjelmisto, jota käytimme äänten 00:11:43.301 --> 00:11:49.171 laskemiseen, OK.VOTE, ei ole avointa lähdekoodia. Se on suljettu järjestelmä, 00:11:49.171 --> 00:11:55.572 eikä kukaan pysty sitä analysoimaan. Ja koska se on suljettu järjestelmä, on 00:11:55.572 --> 00:12:00.433 myös hyvin hankala ymmärtää miten se toimii ja varmistaa, että se todella 00:12:00.433 --> 00:12:05.192 laskee oikein. Meillä oli satoja äänestyslipukkeita siellä ja 00:12:05.192 --> 00:12:10.217 on todella vaikeaa sanoa, ovatko ne kaikki oli laskettu oikein. Ja 00:12:10.217 --> 00:12:16.887 me olemme nähneet tämän ennenkin. Ei voi varmistaa laskennan olleen turvattu. 00:12:16.887 --> 00:12:22.264 Meillä olisi voinut olla peukaloitu järjestelmä. Emme voi sulkea pois, että 00:12:22.264 --> 00:12:29.346 joku olisi manipuloinut sitä etukäteen. Jos sitä olisi manipuloitu, sitä olisi 00:12:29.346 --> 00:12:34.988 rivivaalityöntekijän vaikea havaita. Joten se tarkoittaa, että 00:12:34.988 --> 00:12:40.947 koko vaaliprosessi on läpinäkymätön ja siitä tulee vaikeasti ymmärrettävä 00:12:40.947 --> 00:12:46.460 henkilölle, joka vain haluaa seurata vaaleja. Se on täysin vastaan 00:12:46.460 --> 00:12:52.953 julkisen ääntenlaskun ideaa. T: Puhutaan nyt siitä vaiheesta, 00:12:52.953 --> 00:12:58.323 joka tapahtuu sen jälkeen kun lopetamme laskemisen tiimeissämme. 00:12:58.323 --> 00:13:02.038 J: Mitä sitä teit kun sait ulos lopullisen ääntenlaskennan tuloksen? 00:13:02.038 --> 00:13:04.581 Kuinka se toimitettiin keskushallintoon? 00:13:04.581 --> 00:13:10.666 T: Jep, istuin autooni ja otin USB-muistit taskuuni ja ajoin 00:13:10.666 --> 00:13:17.868 keskus-PC:lle. Kuten varmaan tiedät, vaalipäivä on erittäin kiireinen ja 00:13:17.868 --> 00:13:24.386 jotkut tiimit ovat hitaampia laskemaan. Jotkut tiimi ovat nopeampia. Keskustiimi 00:13:24.386 --> 00:13:29.052 ei tiedä milloin USB-muistit saapuvat. Meneekö siinä kaksi, kolme tuntia vai 00:13:29.052 --> 00:13:33.191 puolikas, he eivät tiedä. Joten voisin mennä ja syödä jotain matkallani. 00:13:33.191 --> 00:13:39.311 Tai voisin manipuloida äänestystuloksia. Tarkoitan, jakaa ääniä. Ja kun lopulta 00:13:39.311 --> 00:13:44.307 joku päivä saavun keskus-PC:lle, annan vain USB-muistin, he asentavat sen 00:13:44.307 --> 00:13:48.340 ja ottavat datan joka sieltä löytyy. Siinä kaikki. Jälkeen päin 00:13:48.340 --> 00:13:52.574 he vain lataavat lopulliset tulokset sivulle. 00:13:52.574 --> 00:13:59.035 J: Nyt ehkä mietitte, miten hän voisi manipuloida vaalituloksia? 00:13:59.035 --> 00:14:04.844 Koska niiden autenttisuutta ei ole suojattu. Kuljettavan tiedoston 00:14:04.844 --> 00:14:10.388 koskemattomuus on suojattu. On CRC32 ja SHA-tiiviste, mutta ei krypto- 00:14:10.388 --> 00:14:16.464 grafista allekirjoitusta. Jos hän muuttaisi dataa, hän voisi generoida 00:14:16.464 --> 00:14:22.089 uudet koskemattomuustiedot ja data hyväksyttäisiin. Pääongelma tässä on 00:14:22.089 --> 00:14:28.508 myös se, että tämä on harvoja hetkiä kun vain yhdellä ihmisellä on valvomaton 00:14:28.508 --> 00:14:34.268 pääsy kuljettavana olevaan äänestysdataan. Ja se tekee 00:14:34.268 --> 00:14:39.255 manipuloinnista mahdollista ja helposti tehtävissä olevaa. Ja se ei saisi olla 00:14:39.255 --> 00:14:48.145 näin, erityisesti sähköistetyissä vaaleissa. Katsotaanpa 00:14:48.145 --> 00:14:52.487 itse äänteenlaskuohjelmistoa, koska teimme siellä vielä enemmän 00:14:52.487 --> 00:14:55.962 mielenkiintoisia löydöksiä. T: Juuri näin. Aloitetaan järjestelmä- 00:14:55.962 --> 00:15:01.951 arkkitehtuurista. Ensimmäiseksi, tämä on paikallinen tai hajautettu versio 00:15:01.951 --> 00:15:08.008 järjestelmästä. Joten kaikki tämä tapahtuu paikallisilla koneilla, niillä 00:15:08.008 --> 00:15:13.154 joihin tutustuimme luokkahuoneissa. Ja näillä koneilla on asennettuna Apache 00:15:13.154 --> 00:15:18.011 Tomcat -web-palvelin, joka on yhdistetty MariaDB-tietokantaan. Käyttäjä käyttää 00:15:18.011 --> 00:15:25.414 äänestysjärjestelmä siirrettävällä Firefoxilla. AKDB sanoi aiemmin, että he 00:15:25.414 --> 00:15:33.166 suhtautuivat erittäin vakavasti tieto- turvaan. Mietitään mitä hyökkääjiä heillä 00:15:33.166 --> 00:15:38.349 oli mielessään suunnitellessaan järjestelmää ja keneltä pitäisi 00:15:38.349 --> 00:15:44.342 puolustautua. Hyökkääkö järjestelmää, ääntenlaskuohjelmistoa, vastaan käyttäjä, 00:15:44.342 --> 00:15:51.336 joka on normaalisti vain vapaa-ajallaan vaaleissa avustava vaalityöntekijä, 00:15:51.336 --> 00:15:57.549 vai oliko heillä mielessä verkkohyökkääjät, jotka tulevat 00:15:57.549 --> 00:16:03.077 ihan jostain muualta ja yrittävät manipuloida verkkoa ulkoapäin? 00:16:03.077 --> 00:16:09.895 Ensiksi, tarkastelimme käyttäjää yhtenä mahdollisista hyökkääjistä. Ja jopa tässä 00:16:09.895 --> 00:16:15.412 ympäristössä me löysimme todella rikkinäistä tavaraa. Ensimmäiseksi, 00:16:15.412 --> 00:16:20.525 rikkinäinen pääsynhallinta. Mutta ei siinä kaikki. Tässä kirjautumissivu, 00:16:20.525 --> 00:16:26.630 jolla kirjauduimme äänestysjärjestelmään, ja jossa klikkasimme hallintasivua missä 00:16:26.630 --> 00:16:31.467 voimme vaihtaa salasanan tai editoida profiiliamme. Vasemmalla on nappuloita ja 00:16:31.467 --> 00:16:36.585 kuten näette, olemme kirjautuneet sisään "user42":na. Ei ole muuta tehtävää kuin 00:16:36.585 --> 00:16:42.976 valita mitä laskentaa haluamme tehdä: yleistä alueellista äänestystä vai 00:16:42.976 --> 00:16:48.223 kunnallista laskentaa. Ja siinä kaikki mitä voimme tehdä sivulla. Vaihdetaan 00:16:48.223 --> 00:16:53.726 järjestelmänvalvojaksi. Tässä meillä on järjestelmänvalvojan tili, kuten näette 00:16:53.726 --> 00:17:00.193 ylävasemmalta. Siellä voimme tehdä paljon enemmän kuin normaali käyttäjä. Olemme 00:17:00.193 --> 00:17:04.483 taas hallintasivulla, mutta nyt meillä on käyttäjienhallinta, jossa voimme lisätä 00:17:04.483 --> 00:17:12.495 tai poistaa käyttäjiä. Me voimme avata uudelleen tai sulkea äänestystapoja. Me 00:17:12.495 --> 00:17:18.471 voimme tuoda/viedä tietoa. Mikä ei ole käytössä ruutukaappauksissa on 00:17:18.471 --> 00:17:25.003 äänestystulosten poisto jne. Me valitsimme kaksi erittäin kiinnostavaa 00:17:25.003 --> 00:17:31.602 URL-osoitetta teille. Ensimmäiseksi, "Bezirk wieder eröffnen" joka kääntyy 00:17:31.602 --> 00:17:36.360 "avaa uudelleen vaalit". Sen jälkeen kun vaalit on suljettu, 00:17:36.360 --> 00:17:41.296 ääniä ei voi enää syöttää järjestelmään. Ja toinen 00:17:41.296 --> 00:17:46.709 linkki on "Löschen", joka kääntyy "tuhoa". Se puolestaan tuhoaa 00:17:46.709 --> 00:17:53.156 kaiken datan koneelta, jolloin siellä ei ole enää yksityistä tai turvattua dataa. 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. 00:17:59.470 --> 00:18:04.428 Näemme "avaa uudelleen" -valinnan. Oikealla näemme datan poiston. Hetkinen, 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 00:18:12.609 --> 00:18:18.184 tarkastaneet oliko tämä sallittua käyttäjälle. Pakko sanoa ettei tämä 00:18:18.184 --> 00:18:22.008 ollut vain näkymä, vaan ne toimivat. Täysin toimivat prosessit, joilla 00:18:22.008 --> 00:18:25.533 poistat dataa tai avaat vaalit uudelleen. 00:18:25.533 --> 00:18:29.296 Hälytysääni J: Mikä ongelma tässä on? 00:18:29.296 --> 00:18:33.754 T: Jep, kuten varmaan jo arvasit, vaalien avaaminen uudelleen voi 00:18:33.754 --> 00:18:38.529 tehdä siitä todennäköisempää, että mukaan ujutetaan ääniä omalle suosikille. 00:18:38.529 --> 00:18:44.795 Ja lisäksi, jos haluan sekoittaa vaaleja, voin vain poistaa kaiken 00:18:44.795 --> 00:18:50.043 äänestysdatan. Joutuisimme aloittamaan alusta. Olisimme täysin myöhässä tai 00:18:50.043 --> 00:18:53.422 kiistämään äänestyksen. J: Mutta kuinka tämä on edes mahdollista? 00:18:53.422 --> 00:18:59.710 T: Jep, me opimme, että tässä on heidän sovelluksensa pääsyoikeuksien tarkastus. 00:18:59.710 --> 00:19:05.694 Tässä funktiossa "getZugriffRollen", joka kääntyy "hae pääsyroolit". 00:19:05.694 --> 00:19:10.859 Normaalisti siellä olisi koodia joka tarkastaa onko tällä roolilla pääsy 00:19:10.859 --> 00:19:15.304 tähän osaa sivustoa. Mutta se vain palauttaa "null", ei sitä ole toteutettu. 00:19:15.304 --> 00:19:21.863 Ja se on kiva homma implementoida pääsynhallinta. Kuitenkin, me voimme 00:19:21.863 --> 00:19:27.422 ehdottaa mekanismeja, joilla tämä olisi voitu estää. Ensimmäiseksi, et voi 00:19:27.422 --> 00:19:33.174 luottaa piilotettuun tietoon. Jos jätät näyttämättä mistä voi klikata 00:19:33.174 --> 00:19:38.835 URLia tai sivua, se ei ole oikeasti salaisuus, koska ehkä löydät jotain 00:19:38.835 --> 00:19:43.488 vuodettua lähdekoodia, varmistat ajamisen järjestelmänvalvojana, tai 00:19:43.488 --> 00:19:48.774 naputtelet URL:n vahingossa väärin ja pääset piilotettuun tietoon. Tai sitten 00:19:48.774 --> 00:19:54.505 käytät skanneria löytääksesi piilodatan. Datan piilottaminen ei ole turvallista. 00:19:54.505 --> 00:19:59.009 Ja toisaalta, sinun pitäisi implementoida pääsyoikeuksien hallinta, jotta 00:19:59.009 --> 00:20:03.394 se olisi olemassa ja testata edes kerran, että se toimii. Lopulta 00:20:03.394 --> 00:20:07.678 voimme todeta, että piilotettu data ei ole suojattua dataa. 00:20:07.678 --> 00:20:11.802 T: Katsotaaanpa toisentyyppistä hyökkäystä, XSS-hyökkäystä. 00:20:11.802 --> 00:20:17.009 XSS-hyökkäys on eräänlaista häirintää kahden web-sivun välillä. 00:20:17.009 --> 00:20:21.862 Esimerkiksi, yksi sivusto yrittää tehdä jotain toisen puolesta. Tavoite on usein 00:20:21.862 --> 00:20:27.052 huijata käyttäjää tai käynnistää manipulaatio. Ensimmäiseksi, olemme aika 00:20:27.052 --> 00:20:33.217 varmoja, että he ovat miettineet XSS- hyökkäyksiä, koska tehdessämme testausta, 00:20:33.217 --> 00:20:39.979 me näimme lisättyjä HTTP-otsakkeita, jotka torjuvat suuren kirjon erilaisia 00:20:39.979 --> 00:20:45.140 XSS-hyökkäysvektoreita. Esimerkiksi, tässä on "X-Frame-Options: Same Origin". 00:20:45.140 --> 00:20:52.179 Se tarkoittaa, että muut sivut eivät voi sisällyttää ääntenlaskentaohjelmistoa 00:20:52.179 --> 00:20:56.608 omiin kehyksiinsä jne. Myöskin XSS-hyökkäyksen suojaus on asetettu: 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 00:21:03.739 --> 00:21:10.328 useita hyökkäysvektoreita. Mutta entäs CSRF-hyökkäykset? Kun me ensin testasimme 00:21:10.328 --> 00:21:16.157 tätä, meille selvisi, että ääntenlasku- järjestelmää ei oltu täysin suojattu. 00:21:16.157 --> 00:21:21.490 Mitä CSRF-hyökkäys tarkoittaa? Vaiheessa 1 vaalityöntekijä käyttää integroitua 00:21:21.490 --> 00:21:26.566 Firefox-selainta vihamielisellä web-sivustolla. Eli käyttäjä 00:21:26.566 --> 00:21:31.965 keksii mennä web-sivustolle. Esimerkiksi joku lähettää hänelle linkin ja se sai 00:21:31.965 --> 00:21:37.805 hänet klikkaamaan sitä, esimerkiksi suloisten eläinkuvien toivossa tai 00:21:37.805 --> 00:21:43.088 jotain sellaista. Ja sitten käyttäjä vierailee sivustolla. Ja tämä sivusto 00:21:43.088 --> 00:21:47.972 sisältää lomakkeen kenttiä, jotka muistuttavat ääntenlaskentaohjelmiston 00:21:47.972 --> 00:21:53.890 kentistä. Ja vihamielinen web-sivusto saa selaimen lähettämään niiden datan 00:21:53.890 --> 00:21:59.576 ääntenlaskentaohjelmistoon sen alkuperäisen web-sivuston sijasta. 00:21:59.576 --> 00:22:04.489 Ja heti kun se saavuttaa Tomcat- web-palvelimen, se hämääntyy, 00:22:04.489 --> 00:22:11.266 koska web-palvelin ei CSRF-hyökkäyksessä erota käyttäjän syötettä vihamielisen 00:22:11.266 --> 00:22:15.432 sivuston syötteestä. Ja sitten Apache Tomcat -palvelin 00:22:15.432 --> 00:22:20.482 vain pitää sitä käyttäjän syötteenä ja käsittelee sen. Ja tätä 00:22:20.482 --> 00:22:25.550 kutsutaan CSRF-hyökkäykseksi. Näimme siis, että joskus siellä 00:22:25.550 --> 00:22:31.360 on suojaus tietyntyyppisiä hyökkäyksiä vastaan. Mutta monet sivut eivät ole 00:22:31.360 --> 00:22:37.647 suojattuja. Se on hyvin huolestuttavaa. Haavoittuvaisuus vuodelta 2001. Se on 00:22:37.647 --> 00:22:43.873 melkein 20 vuotta vanha ja löytyy yhä tästä ohjelmistossa. Tämä on hyvin 00:22:43.873 --> 00:22:49.950 huolestuttavaa. Nyt, vedetään yhteen mitä sillä voi tehdä. Ensimmäiseksi, 00:22:49.950 --> 00:22:55.508 tämä ongelma aiheutuu siitä, että sieltä puuttuu nk. CSRF-tunniste tai mikä vain 00:22:55.508 --> 00:23:00.456 hyvä vastatoimenpide CSRF-hyökkäyksille. Ja toisekseen, vain minimaalinen 00:23:00.456 --> 00:23:05.161 käyttäjän vuorovaikutus tarvitaan. Käyttäjä ei aina edes näe, että 00:23:05.161 --> 00:23:11.233 hän on parhaillaan osallisena CSRF-hyökkäyksessä. 00:23:11.233 --> 00:23:15.695 Se on melkein käyttäjän huomaamattomissa. Ja se on erittäin yksinkertaista huijata 00:23:15.695 --> 00:23:22.824 käyttäjää klikkaamaan linkkiä. Vaikutus on tuhoisa, koska me voimme manipuloida 00:23:22.824 --> 00:23:29.414 asetuksia ääntenlaskentaohjelmistossa. Ja me voimme lisätä feikkilipukkeita. 00:23:29.414 --> 00:23:33.604 Hälytysääni T: Mikä tämän lopputulos on? 00:23:33.604 --> 00:23:37.899 Mitä me voimme tehdä tällä? J: No, me voimme manipuloida koko 00:23:37.899 --> 00:23:42.534 vaalit tällä. Katsotaan demo siitä, kuinka me sen teemme. 00:23:42.534 --> 00:23:45.009 T: Siistiä. J: Olemme jo kirjautuneet sisään 00:23:45.009 --> 00:23:54.763 ääntenlaskentajärjestelmään. Tunnuksemme on "admin321934". Lasketaanpa ääniä. 00:23:54.763 --> 00:23:59.625 Näemme tässä kaikki lipukkeet, jotka voimme syöttää järjestelmään. Nämä ovat 00:23:59.625 --> 00:24:07.226 yhä tyhjiä, koska emme ole syöttäneet lipukkeita vielä. Aloitetaan. Yksin- 00:24:07.226 --> 00:24:12.337 kertaisuuden takia, meillä on vain kaksi puoluetta. Vasemmalla Hyvä Puolue, joka 00:24:12.337 --> 00:24:16.812 haluaa parasta ihmisille. Oikealla meillä on Paha Puolue, joka 00:24:16.812 --> 00:24:22.339 haluaa valtaa ja on valmis turvautumaan jopa vaalivilppiin. Aloitetaan 00:24:22.339 --> 00:24:27.957 ja syötetään ensimmäinen paperilipuke. Äänestäjä on äänestänyt Hyvää Puoluetta, 00:24:27.957 --> 00:24:37.867 joten syötämme tämän ohjelmistoon. Nyt me tallennamme lipukkeen ja jatkamme 00:24:37.867 --> 00:24:44.743 eteenpäin. Se on ääni Hyvälle Puolueelle. Syötetään se ja mennään kolmanteen 00:24:44.743 --> 00:24:52.906 lipukkeeseen. Ja taas, se on Hyvälle Puolueelle. Tallennetaan kolmas lipuke. 00:24:52.906 --> 00:24:59.870 Mennään lipukkeiden yleiskatsaukseen ja katsotaan mitä on tapahtunut. Näette, 00:24:59.870 --> 00:25:05.244 että olemme syöttäneet onnistuneesti 3 lipuketta. Seuraavaksi, katsotaan 00:25:05.244 --> 00:25:11.353 alustavia vaalituloksia. Ja kuten näemme, meillä on yhteensä 3 lipuketta, 00:25:11.353 --> 00:25:15.983 jotka olemme syöttäneet järjestelmään. Se on oikein. 3 lipuketta sisälsivät 00:25:15.983 --> 00:25:21.764 ääniä Hyvälle Puolueelle. Se on myös oikein. Ja nolla ääntä on annettu 00:25:21.764 --> 00:25:28.235 Huonolle Puolueelle. Kaikki hyvin vielä. Seuraavaksi, näytän mitä tapahtuu jos 00:25:28.235 --> 00:25:32.616 avaan vihamielisen verkkosivun. Sivusto tekee CSRF-hyökkäyksen ja manipuloi 00:25:32.616 --> 00:25:38.984 vaalituloksia. Oletetaan, että pidämme taukoa ja vierailemme Twitterissä. 00:25:49.004 --> 00:25:54.058 OK, täällä ollaan. Täällä on kiva kissakuva ja täällä on linkki, josta 00:25:54.058 --> 00:26:02.388 löytyy lisää niitä. Leikitään, että meidät huijataan klikkaamaan linkkiä. 00:26:02.388 --> 00:26:08.001 Voi, katsokaa noita suloisia eläinkuvia. Katsokaa tuota nälkäistä kania, apinaa, 00:26:08.001 --> 00:26:14.318 pientä siiliä ja kahta suloista vuohta jne. Kun lopetamme selaamisen, 00:26:14.318 --> 00:26:23.343 suljemme välilehdet ja palaamme äänten- laskentaohjelmistoon. Mitä huomaamme nyt 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 00:26:29.460 --> 00:26:34.599 vierailemaan vihamielisellä sivustolla. Se suoritti CSRF-hyökkäyksen sovellukseen 00:26:34.599 --> 00:26:42.758 ja manipuloi sitä. Katsotaan mitä muuta on muuttunut. Kaikki 3 lipuketta on 00:26:42.758 --> 00:26:48.426 yhä siellä, mutta nyt menemme katsomaan alustavia vaalituloksia. 00:26:48.426 --> 00:26:53.792 Mitä näemme siellä on, että lipukkeiden määrä järjestelmässä 00:26:53.792 --> 00:26:58.190 on noussut kahdeksaan. Meillä on nyt 5 ylimääräistä lipuketta, joita emme ole 00:26:58.190 --> 00:27:03.728 syöttäneet. Kuten näette, Hyvällä Puolueella on yhä 3 ääntä. Ne me 00:27:03.728 --> 00:27:09.531 syötimme. Mutta nyt Paha Puolue on ottanut johdon. Sillä on nyt 5 ääntä. 00:27:09.531 --> 00:27:15.648 Tämä hyökkäys on manipuloinut vaalituloksia. Tosi huono homma, 00:27:15.648 --> 00:27:21.111 koska me emme näe niitä feikkiääniä, jotka on lisätty. 00:27:21.111 --> 00:27:26.789 Olimme kuitenkin onnekkaita kun huomasimme sen, koska odotimme 00:27:26.789 --> 00:27:31.534 hyökkäystä. Mutta emme huomaisi asiaa jokaisessa tapauksessa. 00:27:33.233 --> 00:27:39.124 T: Mutta mitä tapahtuu, jos emme huomaa? J: No, tämä tapahtuu. Tässä esimerkissä 00:27:39.124 --> 00:27:44.213 me vain oletimme, että Tiimillä 1 oli 3 lipuketta, jotka se oli syöttänyt 00:27:44.213 --> 00:27:48.247 järjestelmään ja Tiimillä 2 oli 6 lipuketta, jotka se oli syöttänyt 00:27:48.247 --> 00:27:55.038 järjestelmään. Nyt Tiimi 1 vierailee vihamielisellä sivustolla ja 5 feikki- 00:27:55.038 --> 00:28:01.085 lipuketta lisätään vaalituloksiin. Tässä tapauksessa hyökkääjä oli fiksu 00:28:01.085 --> 00:28:06.498 ja injektoi lipukkeet paikkaan, johon Tiimi 2:n äänten odotetaan 00:28:06.498 --> 00:28:14.209 tulevan myöhemmin. Joten mitä tapahtuu: Tiimi 2 vie lipukkeensa Tiimi 1:lle ja 00:28:14.209 --> 00:28:20.736 se yrittää lukea ne sisään. Ja mitä nyt tapahtuu: koska siellä mihin Tiimin 2 00:28:20.736 --> 00:28:26.460 lipukkeiden olisi määrä päätyä, on jo lipukkeita, sisäänlukuprosessi 00:28:26.460 --> 00:28:32.353 ei toimi onnistuneesti. Vain joukko ääniä luetaan sisään. 00:28:32.353 --> 00:28:37.955 Joten enemmistö lipukkeista, 5 tai 6 lipuketta, 00:28:37.955 --> 00:28:42.483 ohitetaan, koska ne eivät mahdu tietokantaan, koska niiden paikat 00:28:42.483 --> 00:28:48.120 on jo viety feikkilipukkeiden toimesta. Yleensä me voisimme olettaa, että 00:28:48.120 --> 00:28:52.786 tämä generoisi virheviestin tai ainakin varoituksen, mutta näin ei käy. Tämä on 00:28:52.786 --> 00:28:59.567 ohjelmiston hiljainen epäonnistuminen. Ja mikä on vielä pahempaa, äänimäärät 00:28:59.567 --> 00:29:04.639 ovat jälleen oikein. Se tarkoittaa, että meillä on yhdeksän ääntä järjestelmässä 00:29:04.639 --> 00:29:09.926 ja ne vastaavat yhdeksää paperilipuketta. Näyttää siltä kuin kaikki lipukkeet olisi 00:29:09.926 --> 00:29:14.250 syötetty ja kaikki olisi kuten pitääkin. Siispä suljemme 00:29:14.250 --> 00:29:19.486 äänestyksen ja laskemme vaalituloksen. Ja se tapahtuu nyt. Kuten näette, 00:29:19.486 --> 00:29:25.624 on vain 4 ääntä Hyvälle Puolueelle, mutta 5 ääntä Pahalle Puolueelle. 00:29:25.624 --> 00:29:31.747 Joten Paha Puolue voitti vaalit manipuloimalla äänestysjärjestelmää, 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 00:29:38.272 --> 00:29:45.812 emme se ei vastaa ääntenlaskujärjestelmän odotuksia. Vaalitulos on vilpillinen. 00:29:45.812 --> 00:29:50.570 Mietimmekö verkkohaavoittuvaisuuksia? T: Joo, varmasti, mutta se on kolikon 00:29:50.570 --> 00:29:55.010 toinen puoli. Tarkastimme ensin vaali- työntekijöiden osion hyökkäyksiä vastaan, 00:29:55.010 --> 00:30:00.345 sitten tarkastimme verkkopuolen ja skannasimme ja analysoimme järjestelmää. 00:30:00.345 --> 00:30:07.530 Sitten me huomasimme: avoimia portteja kaikkialla. Kuten näette, he ovat 00:30:07.530 --> 00:30:13.729 jättäneet Apache Tomcatin ja MariaDB:n avoimeksi koko järjestelmän verkolle. 00:30:13.729 --> 00:30:19.010 Ja me mietimme tästä, että "no, testataan tuoreita haavoittuvaisuuksia, 00:30:19.010 --> 00:30:25.090 kuten 2020 löydettyä Ghostcatia". Ghostcat on hyökkäys, joka tehdään 00:30:25.090 --> 00:30:31.290 Apachen AJP-protokollaa vastaan. Tarkastellaan Apachen järjestelmää ja 00:30:31.290 --> 00:30:37.780 miten se on rakennettu. Apachessa on hakemisto, josta jaetaan staattisia 00:30:37.780 --> 00:30:43.270 resursseja, HTML- ja JSP-tiedostoja. Lisäksi se voi sisältää luokkatiedostoja 00:30:43.270 --> 00:30:48.979 tai servlettejä, joita käytetään JSP- tai HTML-tiedostojen yhteydessä. 00:30:48.979 --> 00:30:56.990 Annoimme ajpShooter-skriptille ohjel- miston osoitteen, portin ja tiedoston, 00:30:56.990 --> 00:31:01.980 jonka halusimme sen lukevan. Tässä se oli luokka "PrivateTest", koska 00:31:01.980 --> 00:31:07.250 se voisi vuotaa, ehkäpä. Me sanoimme, että haluamme vain sen luettavan. 00:31:07.250 --> 00:31:10.750 Siinä olisi mahdollisuus, että sen sisältämä koodi tulisi 00:31:10.750 --> 00:31:17.600 suoritettavaksi. Me teimme sen hyökkäyksen ja TA-DAA, tulos! Tässä on 00:31:17.600 --> 00:31:22.510 luokan "PrivateTest" tavukoodi. Tiputetaan tämä koodi kahvikuppiimme 00:31:22.510 --> 00:31:29.132 ja ehkä saamme ongittua sieltä luokan lähdekoodin. Ja, kyllä, saimme sen. 00:31:29.132 --> 00:31:36.700 Miksipä salausmekanismia ei testattaisi tekstijonolla? 00:31:36.700 --> 00:31:42.020 Mutta tämä ei ole tavallinen tekstijono, kuten ehkä huomaat. Tämä on oikea 00:31:42.020 --> 00:31:45.661 ylläpitäjän salasana tuotannossa olevaan MariaDB:een. Ja tämä on... 00:31:45.661 --> 00:31:51.775 Hälytysääni J: Mikä tässä on ongelma? T: Kuten ehkä 00:31:51.775 --> 00:31:56.850 selvästi näet tästä hyökkäyksestä, me voisimme vuotaa MariaDB:n kirjautumis- 00:31:56.850 --> 00:32:02.363 tiedot ja ehkä enemmänkin kirjautumis- tietoja ja salasanoja. Voisimme vuotaa 00:32:02.363 --> 00:32:08.392 koko lähdekoodin verkkoon ilman, että meillä on pääsyä PC:lle vaalihuoneessa. 00:32:08.392 --> 00:32:15.533 Ja tämä oli vain mahdollista, koska he jättivät avoimiksi verkkoon kaikki koneet 00:32:15.533 --> 00:32:22.285 ja sovellukset. Näin ei pitäisi koskaan olla. Joten lopputulos. 00:32:22.285 --> 00:32:26.902 Miten tämän voi estää? Ensiksikin, sinun ei pitäisi koskaan jättää tarpeettomia 00:32:26.902 --> 00:32:31.445 portteja avoimiksi. He eivät edes käytä AJP-välityspalvelinta sovelluksessaan, 00:32:31.445 --> 00:32:38.185 mutta jättivät sen auki koko maailmalle. Seuraavaksi, pidä ohjelmistosi ajan 00:32:38.185 --> 00:32:43.948 tasalla, jotta ohjelmistosi ei olisi haavoittuvainen jos jotain löytyy. 00:32:43.948 --> 00:32:49.771 Ja viimeisenä mutta ei vähäisimpänä: älä koskaan käytä tuotantosalasanoja 00:32:49.771 --> 00:32:55.430 yksikkötesteissäsi. Se ei ole paras idea. Lopuksi, yhteenvetona: vältä kaikin 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, 00:33:01.316 --> 00:33:04.671 joista et ehkä edes vielä tiedä. J: Nyt kun Tobi on näyttänyt 00:33:04.671 --> 00:33:09.759 mielenkiintoisia Apache-juttuja, minä testasin tietokannan tietoturvaa. 00:33:09.759 --> 00:33:14.918 Ensimmäisen analyysin aloitin samalla PC:llä, jossa ohjelmisto 00:33:14.918 --> 00:33:20.154 oli asennettuna. Kokeilin saada pääsyä tietokantaan, joka oli samalla koneella, 00:33:20.154 --> 00:33:25.040 localhostilla. Kokeilin käyttäjätunnusta "root" ja sitten minä huomasin, että 00:33:25.040 --> 00:33:29.723 minulta kysytään salasanaa pääsyä varten. Se oli kuitenkin 00:33:29.723 --> 00:33:35.338 triviaalia, koska kaikki mitä minun tarvitsi tietää, oli 00:33:35.338 --> 00:33:40.744 edellisessä tiedostossa. Onnistuin purkamaan salasanan salauksen 00:33:40.744 --> 00:33:46.397 helposti. Sillä hetkellä tajusin, että Tobi oli näyttänyt sitä 00:33:46.397 --> 00:33:51.313 aiemmin. Että hän oli löytänyt sen Ghostcat-haavoittuvuudella ja se oli 00:33:51.313 --> 00:33:58.846 MySQL-pääkäyttäjän salasana. Kun sain yhteyden MySQL:ään, yritin dumpata 00:33:58.846 --> 00:34:05.507 käyttäjätietokannan katsoakseni millä käyttäjillä oli pääsy tietokantaan. Ja 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 00:34:11.357 --> 00:34:16.576 salasana kun yhteys otetaan paikalliselta koneelta. Mutta odotapa hetki, täällä on 00:34:16.576 --> 00:34:23.840 myös kone "pci90309". Ja kuten huomaatte, sillä käyttäjällä ei ole MySQL-salasanaa 00:34:23.840 --> 00:34:29.687 asetettuna. Se tarkoittaa, että joku koneelta "pci90309" saa ottaa yhteyden 00:34:29.687 --> 00:34:37.518 käyttäjänä "root" ja siihen ei tarvita edes salanaa. Ja se on 00:34:37.518 --> 00:34:42.104 todella outoa. Hälytysääni 00:34:42.104 --> 00:34:50.530 T: Joten mitä tästä voi seurata? J: No, joku verkossa voi nyt 00:34:50.530 --> 00:34:56.310 vain tehdä massaäänestysmanipulointia. Se on aika triviaalia, koska voin vain 00:34:56.310 --> 00:35:01.250 nimetä koneeni sopivasti ja saan täyden pääsyn tietokantaan, johon kaikki 00:35:01.250 --> 00:35:05.750 äänestystulokset on säilötty. Järjestel- mänvalvojana voin käpistellä niitä. Voin 00:35:05.750 --> 00:35:09.943 muuttaa niitä kuten haluan. Tämä haavoittuvaisuus on niin hitsin outo ja 00:35:09.943 --> 00:35:16.850 itsestäänselvä, että se ei vaadi mitään vaivannäköä. Ja siksi me emme edes demoa 00:35:16.850 --> 00:35:22.770 sitä tässä. Se on typerryttävän yksin- kertaista tässä tapauksessa. Normaalisti 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 00:35:28.370 --> 00:35:33.620 ja voimme muuttaa mitä haluamme. Päätimme kuitenkin mennä vielä syvemmälle, koska 00:35:33.620 --> 00:35:42.290 näimme "pci90309":n avaavan ovia. Joten meillä on pääsy äänestystuloksiin. Ja me 00:35:42.290 --> 00:35:47.630 voimme muuttaa niitä, mutta meillä ei ole vielä pääsyä koko järjestelmään. 00:35:47.630 --> 00:35:52.186 Entäs se PC? Olisiko se mahdollista, että järjestelmänvalvojan pääsyllä 00:35:52.186 --> 00:35:59.840 tietokantapalvelimelle voisi ajaa etäältä koodia sillä koneella? Tätä koetta varten 00:35:59.840 --> 00:36:04.740 käytimme seuraavaa asetelmaa. Oikealla meillä on äänestysjärjestelmä avoimen 00:36:04.740 --> 00:36:10.620 MariaDB-tietokantapalvelimen kanssa. Vasemmalla on minun koneeni. Nimesin 00:36:10.620 --> 00:36:16.480 sen "pci90309":ksi, koska voin sen tehdä. Saan siltä avattua yhteyden 00:36:16.480 --> 00:36:23.927 MariaDB-palvelimelle. Käytän tunnusta "root" ilman salasanaa. Ja se 00:36:23.927 --> 00:36:30.119 hyväksytään heti. Kun minulla on nyt yhteys, voin antaa komentoja. 00:36:30.119 --> 00:36:36.440 Esimerkiksi, voin käskeä MariaDB:tä ottamaan käyttöön lisäosia. Tämä lisäosa 00:36:36.440 --> 00:36:42.390 on nimeltään "ha_connect". Se on yksi lisäosista, jotka sisältyvät MariaDB:een. 00:36:42.390 --> 00:36:49.980 Tämä on erittäin voimallinen MySQL- tallennusajuri. Ja nyt näytän mitä 00:36:49.980 --> 00:36:57.020 sillä voi tehdä. Seuraavaksi, luon tietokantataulun nimeltä "pwn". 00:36:57.020 --> 00:37:02.538 Käytän tätä tallennusajuria "ha_connect" ja käsken sitä luomaan tiedoston, jonka 00:37:02.538 --> 00:37:09.470 nimi on "pwn.dll" ja tallentamaan sen lisäosat sisältävään hakemistoon. 00:37:09.470 --> 00:37:14.270 Mikään ei estä meitä tekemästä näin. Se on yksi erikoistoiminnallisuuksista 00:37:14.270 --> 00:37:20.289 tässä tallennusajurissa. Voin sanoa tämän taulun vastaavan nyt tuota tiedostoa 00:37:20.289 --> 00:37:25.180 tiedostojärjestelmässä. Tämä tiedosto on kuitenkin vielä tyhjä, koska taulu on 00:37:25.180 --> 00:37:30.690 tyhjä. Mutta koska tämä on tietokanta, me voimme ajaa "INSERT INTO" -komentoja 00:37:30.690 --> 00:37:36.430 ja tallentaa siihen mitä dataa haluamme, esimerkiksi haitta-DLL:n. Voin vain 00:37:36.430 --> 00:37:41.270 lisätä sen tauluun käyttäen "INSERT INTO" -komentoa ja se kirjoitetaan 00:37:41.270 --> 00:37:49.470 suoraan haitta-DLL:äämme "pwn.dll":ään. Kun olen lopettanut kirjoittamisen, 00:37:49.470 --> 00:37:55.060 käsken MariaDB:n ottaa tuo lisäämäni lisäosa käyttöönsä. 00:37:55.060 --> 00:38:00.447 Lisäosan käyttöönotto tarkoittaa, että me suoritamme sen tallentamamme koodin 00:38:00.447 --> 00:38:05.184 DLL-tiedostossa. Se tarkoittaa, että voimme ajaa etäältä omaa koodiamme. 00:38:05.184 --> 00:38:09.960 Hälytysääni T: En edes aio kysyä mitä etäältä 00:38:09.960 --> 00:38:14.410 suoritettavalla koodilla voi tehdä. J: No, sillä voi tehdä mitä vain. Se 00:38:14.410 --> 00:38:19.870 tarkoittaa, että minulla ei ole esteitä. Täysi kontrolli ääntenlaskujärjestelmään. 00:38:19.870 --> 00:38:24.520 En puhu ainoastaan tiedosta tietokannassa. Puhun koko 00:38:24.520 --> 00:38:30.040 tietokoneesta, jota voin nyt kontrolloida ja manipuloida kuten haluan. Se on 00:38:30.040 --> 00:38:35.580 mahdollista vain käyttämällä äänestysohjelmistoa verkon yli 00:38:35.580 --> 00:38:41.080 käyttäen sen avoimia liittymiä. Ja nyt näytän teille miten helppoa on 00:38:41.080 --> 00:38:49.720 suorittaa mielivaltainen ohjelma siellä. T: Tämä on ääntenlaskujärjestelmä. 00:38:49.720 --> 00:39:01.575 Aloitetaan käynnistämällä ääntenlasku- ohjelmisto. Apache Tomcat -web-palvelin 00:39:01.575 --> 00:39:07.733 ja MariaDB-tietokantapalvelin käynnistyvät. Lopulta siirrettävä 00:39:07.733 --> 00:39:14.598 Firefox on käynnistynyt. Järjestelmä on toimintavalmis. Varovaisuutta, 00:39:14.598 --> 00:39:21.954 hyökkääjä aktivoituu. Hänen koneensa on pahamainen "pci90309". Se käynnistää 00:39:21.954 --> 00:39:28.738 välittömästi Python-hyökkäysskriptin "fun.py". Se ottaa yhteyden MariaDB- 00:39:28.738 --> 00:39:34.845 palvelimeen käyttäjänä "root" ilman sala- sanaa ja lataa haitta-DLL:n lisäosana. 00:39:34.845 --> 00:39:41.512 Kun lataus on ohi, haittakoodi ajetaan. Kuten voimme nähdä, 00:39:41.512 --> 00:39:47.506 laskin käynnistyy eli etäältä tapahtuva suorittaminen oli onnistunut. Äänten- 00:39:47.506 --> 00:39:52.869 laskentajärjestelmä on nyt hyökkääjän hallinnassa. 00:39:52.869 --> 00:40:00.893 J: Sen jälkeen kun löysimme tuhoisat ongelmat ääntenlaskentajärjestelmässä, 00:40:00.893 --> 00:40:06.156 kerroimme välittömästi toimittajalle. T: Ja he olivat erittäin ammattimaisia 00:40:06.156 --> 00:40:11.269 ja vastasivat nopeasti sähköposteihimme. Pidimme työskentelystä heidän kanssaan 00:40:11.269 --> 00:40:18.114 yhdessä ja kerroimme heille meidän tuloksistamme ja he olivat aina 00:40:18.114 --> 00:40:23.340 myönteisiä. He myös suosittelivat korjauksia. 00:40:23.340 --> 00:40:27.624 J: He kertoivat meille esimerkiksi, että ääntenlaskuohjelmaa pitäisi käyttää vain 00:40:27.624 --> 00:40:31.662 turvatussa ympäristössä, kuten hallintoon kuuluvassa verkossa. 00:40:31.662 --> 00:40:35.890 Me emme kuitenkaan usko, että se on hyvä ratkaisu. 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 00:40:39.563 --> 00:40:44.645 kaksi ongelmaa olemassa, vaikka ympäristö olisikin turvattu. Ensiksikin, 00:40:44.645 --> 00:40:50.325 hallinnon PC voi silti olla haitta- ohjelmien saastuttama tai se voi olla 00:40:50.325 --> 00:40:55.583 manipuloitu ennen kuin äänestys alkaa. Ja toisekseen, oli tämä 00:40:55.583 --> 00:40:59.988 bugi rikkinäisessä pääsynhallinnassa, muistattehan? Ja vaikka meillä olisi 00:40:59.988 --> 00:41:05.130 ollut turvattu ympäristö, tämä bugi olisi toiminut varmasti ja olisit 00:41:05.130 --> 00:41:09.303 voinut tuhota kaiken datan tai avata vaalit uudelleen tai jotain 00:41:09.303 --> 00:41:12.260 tälläistä. J: Olemme silti aika tyytyväisiä, 00:41:12.260 --> 00:41:17.833 että he ottivat meidät vakavasti. He ovat jopa ilmoittaneet päivityksistä. 00:41:17.833 --> 00:41:23.090 He kirjoittivat meille suunnittelevansa CSRF-todenteita sivuille, joilta löysimme 00:41:23.090 --> 00:41:28.302 CSRF-haavoittuvaisuuksia. Joten se jo on hyvä askel oikeaan 00:41:28.302 --> 00:41:35.020 suuntaan. Vedetään nyt yhteen mitä olemme tänään esittäneet. Ihan ensimmäiseksi, 00:41:35.020 --> 00:41:40.408 löysimme useita ongelmallisia puolia konseptista ja sen käytännön 00:41:40.408 --> 00:41:45.241 toteutuksesta. Ensimmäiseksi, koko äänestysjärjestelmä pyörii 00:41:45.241 --> 00:41:50.384 epäluotettavissa järjestelmissä. Niitä on voitu manipuloida etukäteen. 00:41:50.384 --> 00:41:56.055 Niissä voi olla haittaohjelmia tai ne eivät vain toimi oikein. 00:41:56.055 --> 00:42:00.638 Jo se on erittäin ongelmallista, koska meillä ei ole luottamusta 00:42:00.638 --> 00:42:05.946 näitä järjestelmiä kohtaan ja me käytämme niitä laskemaan 00:42:05.946 --> 00:42:11.702 ääniä, laskemaan koko vaalitulosta. Ja lisänä tähän, että vaikka 00:42:11.702 --> 00:42:19.430 käytetty ohjelmisto ja sitä ajava PC, olisivat turvatut, se ei tuo vielä 00:42:19.430 --> 00:42:25.326 riittävää läpinäkyvyyttä. Sitä on erittäin hankala ymmärtää mitä softa 00:42:25.326 --> 00:42:31.001 tarkalleen tekee ja miten. Joten en voi oikein ymmärtää miten se päätyy 00:42:31.001 --> 00:42:36.034 tulokseensa. Pitäkää tämä mielessä, että meillä on melkein 600 ehdokasta ja useita 00:42:36.034 --> 00:42:42.445 satoja lipukkeita, jotka pitää kaikki syöttää järjestelmään ja sitten 00:42:42.445 --> 00:42:47.504 jotain magiaa tapahtuu ja se sylkäisee ulos tuloksensa. Ja sitten meidän vain 00:42:47.504 --> 00:42:53.417 ottaa tulos. Koska se on mahdotonta tarkistaa, että laskettiinko jokainen 00:42:53.417 --> 00:42:57.822 ääni oikein ja tapahtuiko siellä jotain outoa tai tapahtuiko siellä mitään 00:42:57.822 --> 00:43:00.619 manipulaatiota. T: Ja tämä on myös mahdollista, koska me 00:43:00.619 --> 00:43:07.262 löysimme paljon haavoittuvaa softaa ja ei vain järjestelmän turvallisuus ollut 00:43:07.262 --> 00:43:12.208 kyseessä vaan oli myös täysin mahdollista manipuloida koko äänestystä useista 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 00:43:19.954 --> 00:43:24.900 suuressa vaarassa tällä teknologialla. J: Ja se on se syy miksi me haluamme 00:43:24.900 --> 00:43:31.125 teidät vaalityöntekijöiksi. Mitä enemmän silmiä vaaleissa on, sitä turvallisemmat 00:43:31.125 --> 00:43:35.539 niistä tulee. Ja jos olet kiinnostunut olemaan vaalityöntekijä, ota vain yhteys 00:43:35.539 --> 00:43:40.212 paikallishallintoosi. He ovat aina hyvin tyytyväisiä kun saavat 00:43:40.212 --> 00:43:45.222 vapaaehtoisia, jotka haluavat olla vaalityöntekijöitä. Perustuen omaan 00:43:45.222 --> 00:43:49.961 kokemukseeni usemmalta vuodelta, se on myös hauskaa. Saat olla 00:43:49.961 --> 00:43:54.727 yhteydessä moniin ihmisiin. Minä nautin siitä paljon ja voin vain 00:43:54.727 --> 00:44:00.790 suositella sitä. Tämä on hyvä tapa jokaiselle tukea demokratiaa 00:44:00.790 --> 00:44:05.273 omassa maassaan. T: Päättääksemme esityksemme, meille 00:44:05.273 --> 00:44:11.593 selvisi tämän teknologian tietoturvan olevan huono ja ei siinä vielä kaikki. 00:44:11.593 --> 00:44:16.986 J: Tämä oli vain jäävuoren huippu, koska katsoimme vain yhtä ainoaa 00:44:16.986 --> 00:44:21.965 ratkaisua, joka on saatavilla äänten- laskentaan. Ja tämä oli myös erikois- 00:44:21.965 --> 00:44:28.086 konfiguraatio. Mitä on vielä vaikeampaa nähdä, on se mitä tapahtuu kaiken sen 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- 00:44:34.597 --> 00:44:40.264 hallintoon, jossa data luetaan sisään ja ladataan eteenpäin, mihin se kaikki 00:44:40.264 --> 00:44:44.910 data menee? Missä se kaikilta äänestyspaikoilta kertyvä data 00:44:44.910 --> 00:44:49.603 lasketaan yhteen? Me emme tiedä sitä vielä miten tämä toimii. Meillä ei ole 00:44:49.603 --> 00:44:53.868 sitä ohjelmistoa tutkittavana. On siis paljon tehtävää 00:44:53.868 --> 00:44:59.355 jäljellä siinä miten voisimme tarkistaa koko järjestelmän. Me otimme siitä vain 00:44:59.355 --> 00:45:04.149 pienen palan ja se on vain tämä ääntenlaskujärjestelmä tässä. 00:45:04.149 --> 00:45:08.647 T: Olimme hyvin järkyttyneitä siitä tiedosta, että ääntenlaskennan 00:45:08.647 --> 00:45:14.458 siirtyminen tietokoneelle ei ole yleisesti tiedossa. Tästä syystä loimme 00:45:14.458 --> 00:45:19.947 tämänpäiväisen esityksemme. Se on elintärkeä tieto demokratialle, että 00:45:19.947 --> 00:45:26.788 käytössä on ohjelmisto ja että se ei ole erityisen turvallinen. Se oli 00:45:26.788 --> 00:45:33.530 meille iso juttu tuoda tämä tieto ihmisille. 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, 00:45:37.829 --> 00:45:44.312 koska ainakaan Baijerissa meillä ei ole mitään sääntöjä tai lakeja sitä vastaan, 00:45:44.312 --> 00:45:50.098 että käytämme turvattomia järjestelmiä, ääntenlaskentaohjemistoja. Kuten näimme 00:45:50.098 --> 00:45:55.611 alussa, on vain karkeat ohjeistukset, jotka sanovat, että tietokoneita voidaan 00:45:55.611 --> 00:46:00.322 käyttää vain ääntenlaskentaan. Mutta me tarvitsemme tiukemmat ohjeistukset, koska 00:46:00.322 --> 00:46:06.794 se mitä näimme tänään, ei voi jatkua. Muissa osavaltioissa Saksassa on 00:46:06.794 --> 00:46:12.304 joitakin, sanotaan, ohjeistuksia tai jopa sertifiointiprosesseja 00:46:12.304 --> 00:46:18.347 tälläiselle digitaaliselle ohjelmistolle. Useimmissa tuntemissani osavaltioissa ei 00:46:18.347 --> 00:46:23.780 ole mitään sääntöjä. Tämän ei pidä jatkua seuraavia vuosia näin. 00:46:23.780 --> 00:46:29.963 T: Lisäksi, lopulta, ennen kuin mikään ääntenlaskentaohjelmisto voi 00:46:29.963 --> 00:46:36.671 mennä tuotantoon, riippumattomat testit pitäisivät olla saatavilla kaikille, 00:46:36.671 --> 00:46:41.965 jotta voidaan todistaa ohjelmiston olevan turvallinen ja että se tekee 00:46:41.965 --> 00:46:46.530 sitä meille mitä on luvattu. Koska se vaikuttaa suoraan demokratiaamme. Ja jos 00:46:46.530 --> 00:46:52.002 ohjelmistoa on manipuloitu, se manipuloi äänestystämme, vaalejamme ja meidän 00:46:52.002 --> 00:46:56.333 demokratiaamme. Lopuksi jätämme teille mietittäväksi kaksi kysymystä: 00:46:56.333 --> 00:47:01.158 T: Paljonko digitaalista tukea vaaditaan? J: Ja paljonko on siedettävä? 00:47:01.158 --> 00:47:18.528 Hiljaisuus 00:47:18.528 --> 00:47:25.709 Herald: Paljon kiitoksia kiinnostavasta esityksestänne, Johannes ja Tobias. 00:47:25.709 --> 00:47:30.136 Ja paljon kiitoksia työstänne aiheen parissa. Toivottavasti teillä on aikaa 00:47:30.136 --> 00:47:36.095 kysymyksille. Itse asiassa, meillä on aika monia kysymyksiä. 00:47:36.095 --> 00:47:39.244 J: Toki. H: Hyvä homma. Ensimmäinen nettikysymys: 00:47:39.244 --> 00:47:45.468 "Onko epäilystä, että näitä haavoittuvaisuuksia olisi 00:47:45.468 --> 00:47:49.404 käytetty aktiivisesti?" J: No, sitä on vaikea sanoa. Ainakaan 00:47:49.404 --> 00:47:57.617 siinä kylässä, josta tulen, en havainnut mitään erikoisia tapahtumia. 00:47:57.617 --> 00:48:04.994 Minulla ei kuitenkaan ole kokonaiskuvaa Baijerista, joten se on aika hankala 00:48:04.994 --> 00:48:09.707 sanoa. Luulen, että on mahdoton sanoa, oliko minkäänlaista manipulaatiota. 00:48:09.707 --> 00:48:15.395 Valitettavasti emme voi sanoa niin. 00:48:15.395 --> 00:48:20.292 T: Lisäksi, me olimme vain yhdessä paikassa, joten ei meillä ole 00:48:20.292 --> 00:48:25.328 kokonaiskuvaa yhteensopimattomista numeroista tai muista tapahtumista, 00:48:25.328 --> 00:48:30.702 mutta me emme nähneet, koska olimme vain yhdessä 00:48:30.702 --> 00:48:35.589 paikassa, yhdellä äänestyspisteellä. 00:48:35.589 --> 00:48:41.470 H: OK, kiitos vastauksista. "Uskotteko, että se olisi mahdollista, että 00:48:41.470 --> 00:48:46.300 digitaalinen äänestyslipuke voisi olla yhtä turvallinen kuin 00:48:46.300 --> 00:48:51.560 paperinen?" J: No, minun mielestäni se ei ole 00:48:51.560 --> 00:48:56.560 mahdollista jos haluat saman avoimuuden, joka meillä on 00:48:56.560 --> 00:49:02.010 paperipohjaisissa äänestysjärjestelmissä. Koska kun meillä on paperiäänestys, me 00:49:02.010 --> 00:49:07.470 voimme mennä äänestyshuoneeseen ja nähdä mitä siellä tapahtuu. Me voimme nähdä 00:49:07.470 --> 00:49:12.690 lipukkeet, jotka jätetään. Lipukkeet, jotka otetaan uurnasta. Laskennan, 00:49:12.690 --> 00:49:17.990 yhteenlaskennan. Minä voin yrittää selvittää mitä siellä tapahtuu. Voin 00:49:17.990 --> 00:49:24.220 katsoa sitä, ymmärtää mitä ihmiset tekevät siellä. Mutta sillä hetkellä 00:49:24.220 --> 00:49:29.840 kun meillä on vain digitaalinen äänestys, en voi selvitttää sitä tekeekö tietokone 00:49:29.840 --> 00:49:34.190 mitä sen pitää, onko siellä manipulointia. Joten avoimuuden 00:49:34.190 --> 00:49:40.830 suhteen en usko, että on mahdollista tehdä sama, samalla tavalla kuin 00:49:40.830 --> 00:49:47.910 paperilipukkeiden kanssa, esimerkiksi. T: Minun pitää lisätä tähän, että jos 00:49:47.910 --> 00:49:53.750 siellä olisi mahdollisuus saada jäljitettävyys ja näkyvyys, jolla 00:49:53.750 --> 00:50:00.240 saat aina nähtäväksesi miten tulokset syntyvät kustakin paikasta, jos ne 00:50:00.240 --> 00:50:07.260 olisi allekirjoitettu avoimesti, se voisi olla mahdollista joku päivä. Mutta ei 00:50:07.260 --> 00:50:16.299 tälläisellä ohjelmistolla jonka näimme. H: OK, kiitos. "Tiedättekö sattumalta 00:50:16.299 --> 00:50:21.552 mitkä osavaltiot Saksassa käyttävät OK.VOTE:a?" 00:50:21.552 --> 00:50:29.257 T: Emme osaa sanoa, mitkä osavaltiot käyttävät sitä aktiivisesti, koska me 00:50:29.257 --> 00:50:34.249 olimme mukana vain Münchenin ja Baijerin vaaleissa. Mutta voimme kertoa, että 00:50:34.249 --> 00:50:40.130 lähdekoodissa on viitteitä, että se olisi käytössä myös esimerkiksi 00:50:40.130 --> 00:50:47.481 Hampurissa, Bremenissä, Hessenissä ja Rheinland-Pfalzissa. Mutta emme tiedä 00:50:47.481 --> 00:50:54.180 onko se käytössä siellä, suunnitellaanko sen käyttöönottoa vai onko sitä käytetty 00:50:54.180 --> 00:50:59.010 aikaisemmissa vaaleissa ja sittemmin lopetettu käyttämästä. Me emme oikein 00:50:59.010 --> 00:51:03.330 tiedä tästä tarkalleen. H: OK, ehkä me voimme pitäytyä hetken 00:51:03.330 --> 00:51:11.190 vaalityöläisen tehtävässä. "Manuaalinen datan syöttäminen 00:51:11.190 --> 00:51:16.610 järjestelmään... Onko siihen prosessi? Onko teillä ajatusta riskeistä, joita 00:51:16.610 --> 00:51:21.069 tässä on?" J: Kyllä. Pohjimmiltaan siinä on 00:51:21.069 --> 00:51:26.401 ainakin kaksi tai kolme ihmistä istumassa jokaisella koneella ja sitten he 00:51:26.401 --> 00:51:30.930 syöttävät lipukkeet. Ihmiset tarkastavat toistensa tekemiset, että jokainen 00:51:30.930 --> 00:51:36.180 lipuke syötetään oikein. Yhdellä ihmisellä on lipuke edessään ja 00:51:36.180 --> 00:51:42.290 toinen lukee äänet, jotka ensimmäinen syöttää sisään. 00:51:42.290 --> 00:51:47.645 Ja sitten he tekevät ristiintarkastuksen, jotta vaalitulosten sisäänsyöttämisessä 00:51:47.645 --> 00:51:54.250 koneelle ei ole tullut virheitä. H: OK. Kiitos kun selvensitte asiaa. 00:51:54.250 --> 00:52:00.300 Joku kysyy: "Kuinka järjestelmä on kytketty Internetiin tai johonkin 00:52:00.300 --> 00:52:05.870 muuhun verkkoon? Onko oikein ymmärretty, että 00:52:05.870 --> 00:52:09.740 tulokset kirjoitetaan fyysiselle, tallennusmedialle, jolla tulokset 00:52:09.740 --> 00:52:15.560 siirretään? Fyysisesti tunnusteltavalle... Miksi välittää siitä mitä Windowsia 00:52:15.560 --> 00:52:20.305 tai muuta niissä koneissa ajetaan? Onko tämä oikea 00:52:20.305 --> 00:52:24.941 ymmärrys?" J: No, ongelma tässä on se, että 00:52:24.941 --> 00:52:30.011 se riippuu paikallishallinnosta, että miten he järjestelmä laitetaan pystyyn. 00:52:30.011 --> 00:52:36.242 Luin myös tästä keskustelusta, että joku kirjoitti heidän äänestys- 00:52:36.242 --> 00:52:44.530 ohjelmistollaan olleen erittäin rajattu verkkoyhteys. Se tietokone ei 00:52:44.530 --> 00:52:49.960 ollut yhteydessä Internetiin. Se riippuu pitkälti hallinnosta ja siitä, mitä 00:52:49.960 --> 00:52:54.666 verkkoa siellä käytetään. Joten on täysin mahdollista, että 00:52:54.666 --> 00:52:59.902 tietokoneilla on Internet-yhteys, koska ei ole olemassa ohjeistusta 00:52:59.902 --> 00:53:06.480 siitä, miten tietokoneet voi asentaa. Joten, en voi täysin sulkea pois sitä, 00:53:06.480 --> 00:53:11.370 että joku esimerkiksi ottaa langattoman verkkoyhteyden 00:53:11.370 --> 00:53:16.834 turvaamattomaan tukiasemaan ja on sitten verkossa. On hankalaa sanoa tästä, 00:53:16.834 --> 00:53:22.640 mutta en voi sulkea pois mahdollisuutta. T: Laajentaakseni vastausta, me jopa 00:53:22.640 --> 00:53:27.490 yritimme selvittää, onko ohjelmistossa suojausta, joka tarkastaisi onko 00:53:27.490 --> 00:53:31.189 Internet-yhteys olemassa ja kieltäisi äänestysjärjestelmän käytön. Mutta 00:53:31.189 --> 00:53:36.480 sellaista ei ollut, tai ainakaan emme löytäneet sitä. Joten vaikka hallintoa 00:53:36.480 --> 00:53:44.020 ei olisi ohjeistettu, näiden PC:iden ei pitäisi olla yhteydessä verkkoon. Ei 00:53:44.020 --> 00:53:47.914 ole turvamekanismia, joka tarkastaisi onko näin ja pysäyttäisi sen. Tai edes 00:53:47.914 --> 00:53:51.860 varoittaisi siitä, että kone on verkossa ja pitäisi kytkeytyä irti Internetistä 00:53:51.860 --> 00:53:59.700 ennen kuin laskenta alkaa. M: Mielenkiintoista. OK. Meillä on 00:53:59.700 --> 00:54:03.780 viesti IRC:stä henkilöltä joka on työskennellyt juuri tämän ohjelmiston 00:54:03.780 --> 00:54:09.540 parissa demomoodissa, tietenkin. Ja kysymys, joka hänellä on, kuuluu: 00:54:09.540 --> 00:54:17.890 "Huomasitteko mahdollisuutta syöttää negatiivisia ääniä ehdokkaalle? 00:54:17.890 --> 00:54:25.760 Esimerkiksi kaksi miinusääntä?" J: No, sitä on vaikea sanoa. Minä 00:54:25.760 --> 00:54:31.200 ajattelin tätä, että se onko se mahdollista. Ehkä manipuloimalla 00:54:31.200 --> 00:54:37.360 tietokantaa suoraan. En ole täysin varma. En ole varma, kokeilinko 00:54:37.360 --> 00:54:43.600 tätä. Mutta kuitenkin kun saan pääsyn tietokantaan, 00:54:43.600 --> 00:54:49.920 se on täysin mahdollista manipuloida mitä vain. Joten, me voisimme kokeilla 00:54:49.920 --> 00:54:57.520 tätä uudelleen. En kuitenkaan usko, että se juuri muuttaa lopputulostamme. Se on 00:54:57.520 --> 00:55:03.040 mielenkiintoinen kysymys, johon en voi vastata juuri nyt. Mutta, Tobi, en ole 00:55:03.040 --> 00:55:10.080 varma, kokeilitko sinä tälläistä? T: Kokeilimme muuttaa jo annettuja 00:55:10.080 --> 00:55:17.040 ääniä, mutta en usko, että tuo oli mahdollista. Mutta, kuten näytit 00:55:17.040 --> 00:55:22.640 siirtäessäsi datan keskuskoneelle, äänet, jotka siellä olivat jo, 00:55:22.640 --> 00:55:28.080 mahdollisesti hyökkääjän toimesta, jättäisivät huomioimatta uudet äänet. 00:55:28.080 --> 00:55:34.238 Tämä varmastikin korvaisi datan ja nuo äänet, mutta web-käyttöliittymässä 00:55:34.238 --> 00:55:38.988 en usko tuon olevan mahdollista. Mutta me löysimme tarpeeksi haavoittuvaisuuksia 00:55:38.988 --> 00:55:43.512 tietokantaan pääsyssä, jotta voisit yrittää halutessasi sitä kautta. 00:55:43.512 --> 00:55:50.524 H: OK, kiitos selityksestänne. Ihan puhtaasti mielenkiiinnosta, ihmiset 00:55:50.524 --> 00:55:55.984 kysyvät: "Kuinka pääsitte käsiksi ohjelmistoon analysoidaksenne sitä?" 00:55:55.984 --> 00:56:00.514 J: No, tämä on hyvä kysymys, koska siihen liittyy hyvä tarina. 00:56:00.514 --> 00:56:06.304 Olin vaalityöntekijä ja autoin pistämään järjestelmää pystyyn. 00:56:06.304 --> 00:56:12.470 Annoin IT-tukea iltaisin. Ja jossain vaiheessa yritimme yhdistää tuloksiamme. 00:56:12.470 --> 00:56:17.297 Me otimme tulokset ulos yhdeltä koneelta ja siirsimme ne toiselle koneelle. 00:56:17.297 --> 00:56:22.377 Mutta sisäänluku keskeytyi, koska siellä ohjelmistossa oli joku 00:56:22.377 --> 00:56:27.616 keinotekoinen rajoitus. Tiedostojen ollessa yli 10 megatavua, niitä ei 00:56:27.616 --> 00:56:33.667 lukea enää sisään. Ja tämä tapahtuu aika pian, muutamien satojen äänten 00:56:33.667 --> 00:56:38.479 jälkeen. Muutamien satojen lipukkeiden jälkeen sisäänluku ei enää toimi. 00:56:38.479 --> 00:56:42.106 Katsoin tiedostoa ja se oli pelkkä JSON-tiedosto, paljon tyhjämerkkejä. 00:56:42.106 --> 00:56:46.750 Kopioin kaiken koneelleni korjatakseni asian. Myöhemmin 00:56:46.750 --> 00:56:51.251 ohjelmistovalmistaja julkaisi korjauksen. Siinä vaiheessa minulla 00:56:51.251 --> 00:56:56.466 oli ohjelmisto koneellani, koska halusin korjata nämä vaalit. 00:56:56.466 --> 00:57:00.328 Oli myöhäinen ilta ja olin palannut kotiin, huomanut, että minulla oli 00:57:00.328 --> 00:57:06.867 yhä se ohjelmisto koneellani. Katsoin sitä. Joten se oli ihan sattumaa. 00:57:06.867 --> 00:57:11.943 Yritin korjata jotain, otin ohjelmiston koneelleni ja sitten se oli valmiina 00:57:11.943 --> 00:57:18.028 analysoitavaksi, jopa vähän dataakin. Tiesin miten se toimii 00:57:18.028 --> 00:57:23.840 käytännössä. Ja, kyllä, jos joku haluaisi pääsyn siihen ohjelmistoon, 00:57:23.840 --> 00:57:28.945 se olisi aika helppoa, koska he voisivat vain palauttaa poistetun datan joltain 00:57:28.945 --> 00:57:33.268 koulussa olevalta koneelta. Ehkä joku ei edes poista sitä 00:57:33.268 --> 00:57:38.382 äänestysohjelmistoa koulujensa koneilta, tai ehkä joku voisi vain varastaa 00:57:38.382 --> 00:57:43.292 yhden niistä USB-muisteista, joita oli käytetty asennuksiin. En edes 00:57:43.292 --> 00:57:53.591 usko, että sitä huomattaisiin. H: Kiinnostavaa, todellakin. Mainitsitte 00:57:53.591 --> 00:57:58.920 esityksessänne, että ohjelmisto oli BSI:n sertifioima. Että ne väittävät 00:57:58.920 --> 00:58:02.673 Open Web Application Security Projectin sertifioineen sen. Mutta kuinka näin 00:58:02.673 --> 00:58:07.901 rikkinäinen järjestelmä voi olla näiden tahojen sertifioima alun perin? Mikä on 00:58:07.901 --> 00:58:12.119 mennyt pieleen sertifiointiprosessissa? Tämä siis tapahtui. Tarkoitan, että miksi 00:58:12.119 --> 00:58:19.219 ei käyttää sertifioitua... Miksi me sertifioimme mitään alun perinkään, jos 00:58:19.219 --> 00:58:24.377 se on sertifioitu näin rikkinäisenä? T: Luulen, että ensimmäiseksi - kuten 00:58:24.377 --> 00:58:28.158 olemme maininneet esityksessämme - ei ole olemassa laillisia vaatimuksia. 00:58:28.158 --> 00:58:32.700 Et tarvitse sertifiointia sille, että ohjelmistoa voi käyttää vaaleissa, 00:58:32.700 --> 00:58:38.233 Saksassa tai useimmissa paikoissa Saksassa. Ja lisäksi, tämä 00:58:38.233 --> 00:58:46.323 kuvakaappaus, jota näytimme koskien OWASP:ia ja BSI:tä, oli vain AKDB:n 00:58:46.323 --> 00:58:52.179 markkinointimateriaalia. En usko, että siinä oli oikeaa sertifiointia mukana. 00:58:52.179 --> 00:58:57.930 Me emme tiedä, onko BSI ikinä nähnyt tätä ohjelmistoa vai ovatko he vain laittaneet 00:58:57.930 --> 00:59:02.728 sinne, sanoneet BSI:n sertifioineen sen tai BSI:n standardien olleen mielessä. 00:59:02.728 --> 00:59:07.234 Heillä on jo "IT Grundschutz". Ehkä he ovat yrittäneet implementoida sitä 00:59:07.234 --> 00:59:15.093 tämän järjestelmäarkkitehtuurin jälkeen, mutta BSI ei ole tarkastanut sitä. En 00:59:15.093 --> 00:59:18.818 usko, että ohjelmistolla on oikeaa sertifiointia. 00:59:18.818 --> 00:59:23.035 J: Lisään vain muutaman yksityiskohdan tähän. Se ei ole oikeasti sertifiointi. 00:59:23.035 --> 00:59:28.555 He vain sanovat, että seuraavat BSI:n ja OWASP:in ohjeistuksia. Luulen, että se 00:59:28.555 --> 00:59:32.653 oli myös näin sanoitettu heidän sivuillaan. Ei ole oikeaa sertifiointia 00:59:32.653 --> 00:59:39.494 tämän takana, toistaiseksi. H: Kiitos vastauksestanne. "Tiedättekö 00:59:39.494 --> 00:59:46.197 sattumalta, kuinka kunnat julkistavat vaalitulokset?" 00:59:46.197 --> 00:59:53.581 J: En tiedä yksityiskohtaisesti miten se tapahtuu. Kun me luovutamme tuloksemme, 00:59:53.581 --> 00:59:59.802 ne siirretään toiseen ohjelmistoon. Ja sitä pidemmälle en ole 00:59:59.802 --> 01:00:05.692 nähnyt. Ne päätyvät tietojärjestelmään ja ne siirretään 01:00:05.692 --> 01:00:10.348 sähköisesti. Siinä luodaan aluksi alustava tiedosto ja lopulta 01:00:10.348 --> 01:00:15.767 siitä luodaan lopulliset tulokset. En kuitenkaan tiedä, miten se 01:00:15.767 --> 01:00:20.243 toimii, mutta äänestystulokset, jotka luodaan OK.VOTE:lla menevät varmasti 01:00:20.243 --> 01:00:28.562 lopulliseen tulokseen. Ehkä välissä on joku paperiin perustuva 01:00:28.562 --> 01:00:33.330 toimintatapa. En todella tiedä, jos he käyttävät dataa 01:00:33.330 --> 01:00:38.126 koneella vai dataa paperilla. Mutta se ei loppupeleissä 01:00:38.126 --> 01:00:46.112 muuta paljoa. H: OK, loppumetreillä ollaan. 01:00:46.112 --> 01:00:50.830 Viimeinen kysymys on: "Kokemuksienne perusteella, kuinka käytännöllistä tai 01:00:50.830 --> 01:00:55.964 kallista on laskea äänet uudelleen käsin, ja näittekö tälläistä tapahtuvan?" 01:00:55.964 --> 01:01:01.039 T: Luulen, että tämä vaihtelee äänestyksestä toiseen ja kaupungista 01:01:01.039 --> 01:01:07.167 toiseen. Jos kyseessä on pieni kylä, äänet voisi laskea helposti 01:01:07.167 --> 01:01:13.473 uudelleen. Mutta jos kyseessä on iso kaupunki, kuten esimerkiksi München 01:01:13.473 --> 01:01:20.911 miljoonine äänineen, ja ne pitäisi laskea ne uudelleen, 01:01:20.911 --> 01:01:26.076 se viivästyttäisi ääntenlaskua tai tuloksia aika paljon. Ja sillä voisi 01:01:26.076 --> 01:01:31.071 olla huonoja vaikutuksia, jos sattuisi käymään, että ohjelmistossa on tapahtunut 01:01:31.071 --> 01:01:36.890 manipulointia ja kaikki äänet jouduttaisiin laskemaan käsin uudelleen. 01:01:36.890 --> 01:01:42.242 J: Käsin laskeminen olisi todellakin erittäin kova työ, koska niissä 01:01:42.242 --> 01:01:48.703 lipukkeissa on jopa 70 ääntä kussakin. Niiden yhteenlaskeminen on virhealtista 01:01:48.703 --> 01:01:54.660 jos se tehdään käsin. Se on vaikeaa. Ja minun tietääkseni, sitä ei ole 01:01:54.660 --> 01:02:00.854 tehty yleisesti vaalien jälkeen. Yritin etsiä 01:02:00.854 --> 01:02:07.384 Internetistä jotain tästä. Löysin vain PDF-tiedoston, jossa sanottiin, 01:02:07.384 --> 01:02:15.467 ettei kaikkien lipukkeiden ja tuloksen uudelleenlaskeminen ole tehtävissä. 01:02:15.467 --> 01:02:21.781 Joten tehdään vain ylätason tarkastus: onko protokolla suoritettu loppuun? Entä 01:02:21.781 --> 01:02:26.894 erikoisäänet, ne jotka eivät olleet ihan selkeitä? Ei niitä 01:02:26.894 --> 01:02:31.733 kaikkia lipukkeita lasketa uudelleen, sen perusteella mitä ymmärrän. 01:02:31.733 --> 01:02:37.880 H: OK. Kiitos todella paljon, Tobias ja Johannes vastauksistanne. 01:02:37.880 --> 01:02:41.683 Kiitos uudelleen esityksestänne. J: Kiitos. 01:02:41.683 --> 01:02:42.403 H: Kiitos. 01:02:42.403 --> 01:03:10.210 rC3-tunnusmusiikkia 01:03:10.210 --> 01:03:18.970 Subtitles created by c3subtitles.de in the year 2020. Join, and help us! 01:03:18.970 --> 01:03:22.441 Translated by Markus Aurala (ITKST56 course assignment at JYU.FI)