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)