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