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