Translated by Markus Aurala
(ITKST56 course assignment at JYU.FI)
rC3-tunnusmusiikkia
Herald: Seuraava aiheemme on "Saksan
vaalien hakkerointi - turvaton sähköinen
ääntenlaskenta, kuinka se
palasi ja miksi et edes tiedä
siitä". Teille saksalaisille täällä,
huomasitteko, että äänestäminen muuttui
sähköisemmäksi juuri?
Itse asun Saksassa ja
en tätä huomannut. Molemmat puhujamme
ilmoittautuivat vapaaehtoisiksi vaali-
työntekijöiksi Saksassa ja tutkivat
vaalien tietoturvaa. He lupasivat
kertoa meille kuinka siinä kävi ja kuinka
vaaleista voidaan tehdä turvalliset.
Puhujamme ovat Tobias, tietoturvatutkija,
joka keskittyy haavoittuvaisuuksien
etsimiseen, autojen tietoturvaan ja
lipunryöstöhaasteisiin. Sekä Johannes,
joka on postdoc-tietoturvatutkija.
Kummatkin ovat työskennelleet yhdessä
Fraunhofer AISEC -instituutissa.
Nauttikaa esityksestä.
Hiljaisuus
Johannes: Hei ja tervetuloa esitykseemme
"Saksan vaalien hakkerointi -
turvaton sähköinen ääntenlaskenta, kuinka
se palasi ja miksi et edes tiedä siitä."
Minun nimeni on Johannes Obermaier.
Tobias: Ja minä olen Tobias Madl. Olemme
hyvin sisällä Baijerin vaaleissa, koska
olemme vaalityöntekijöitä ja tarjoamme
tukeamme täällä Saksassa.
J: Olemme haavoittuvuuksia etsiviä
tietoturvatutkijoita.
T: Ihan ensimmäiseksi, haluamme puhua
esityksemme sisällöstä. Tietomme ja
ohjelmistomme ovat peräisin
Baijerin kunnallisvaaleista, jotka
käytiin alkuvuonna 2020. Kyseessä oli
tietokonepohjainen äänestysteknologia,
joten olimme hyvin huolissamme kun me
aloimme kokeilemaan sitä. Ja lopulta
päädyimme esittämään kysymyksen "ovatko
vaalit turvatut?" Seuraavaksi esitän
tämänpäiväisen puheemme rungon.
Ensiksi, katsomme sähköistä
ääntenlaskujärjestelmää. Seuraavaksi,
tunnistamme käsitteellisiä ja käytännön
ongelmia tähän teknologiaan liittyen.
Sen jälkeen tutkimme ohjelmistoa ja
siitä löydettyjä haavoittuvaisuuksia.
Esityksen lopuksi
tehdään yhteenveto.
J: Ymmärtääkseemme miksi tarvitsemme
sähköistä ääntenlaskentaa, katsotaan
äänestyslippua. Tämä äänestyslippu on
paperimuodossaan noin metrin leveä ja
50 senttimetriä korkea. Joten se on aika
iso lipuke, paljon ehdokkaita.
Vedetään faktat yhteen. On yhteensä
599 ehdokasta, jotka jakaantuvat
yhdeksään puolueeseen. Äänestäjä
saa antaa maksimissaan 70 ääntä näissä
vaaleissa. Kuulostaa yksinkertaiselta,
mutta muuttuu monimutkaisemmaksi, koska
äänestäjä voi antaa maksimissaan 3 ääntä
per ehdokas ja jakaa 70 ääntään eri
puolueiden ehdokkaille.
Vaikka äänestäjä päättäisikin
äänestää yhtä ainoaa puoluetta, hän voi
yliviivata ehdokkaan, josta
ei pidä. Ja näin nuo ehdokkaat eivät saa
ääniä lipukkeestasi. Tästä seuraa, että
äänestysjärjestelmä antaa paljon valtaa
kansalaisille ja äänestäminen on hauskaa.
Äänten laskeminen näistä lipukkeista
on hankalaa, koska kaikkien lipukkeiden
laskeminen oikein edellyttää paljon
tietoa erikoissäännöistä. Tästä syystä
on kehitetty ohjelmisto OK.VOTE.
OK.VOTE on tyypillinen
vaaliohjelmisto, jota käytetään myös
äänestyspaikoilla ääntenlaskentaan.
OK.VOTE:lla on aika suuri markkinaosuus.
He sanovat, että se olisi 75%
Saksassa. Ohjelmistoa käytetään useissa
osavaltioissa. OK.VOTE:ssa on useita
moduuleja vaalien järjestämiseen,
mutta tässä esityksessä
tarkastelemme ainoastaan OK.VOTE:n
ääntenlaskentamoduulia, johon
vaalityöntekijät syöttävät
lipukkeet manuaalisesti
äänien tallentamiseksi tieto-
järjestelmään. OK.VOTE:n tehtävä on
prosessoida jokainen lipuke
äänten laskemiseksi, tarkistaa
oikeellisuus, sitten tallettaa lipukkeen
tiedot tietokantaan, lopuksi se tekee
taikojaan ja laskee lopputuloksen. Tämä
kuulostaa aika samalta mitä äänestyskone
tekee. Mutta hetkinen...
Äänestyskoneita, minun Saksassani?
T: Hetkonen, sehän on laitonta.
J: Onko se laitonta? Katsotaan,
mitä lainsäädäntö siitä sanoo. Kyllä,
vuonna 2009 Saksan liittotasavallan
perustuslakioikeus teki merkittävän
päätöksen ja sanoi, että äänestys-
koneiden käyttö liittopäivävaaleissa
vuonna 2005 oli perustuslain vastaista.
Muun muassa siksi, että ne eivät olleet
riittävän avoimia. Tämä on aika lähellä
kunnallisvaaleja koskevia
löydöksiämme. Mutta hetkinen, me
puhumme liittopäivävaaleista. Mutta
nämähän ovat kunnallisvaalit
ja meillä on eri säännöt kunnallis-
vaaleille. Esimerkiksi on olemassa
GLKrWO, Gemeinde- und
Landkreiswahlordnung Bayern,
joka kääntyy Baijerin kunnallisvaali-
säännöiksi. Ja nuo säännöt sanovat,
että emme saa käyttää äänestämiseen
tietokonetta, mutta tietokoneita
voidaan käyttää ääntenlaskuun. Tässä
tapauksessa, olettaisin, että meillä on
jonkinlaisia tietoturvavaatimuksia
noissa säännöissä. Mutta yritin
löytää niitä. Ja olin todella yllättynyt.
Niitä on tarkalleen nolla kappaletta.
T: Eli jos ei ole laillisia vaatimuksia,
onko edes mitään ohjelmistoa koskevia
vaatimuksia tai sertifiointeja, joilla
taataan OK.VOTE:n turvallisuus?
J: Kyllä, niitä on. Tutkin web-sivustoa
ja näin siellä tämän kivan pienen
kappaleen "Turvalliset vaalit". Siinä
sanotaan OK.VOTE:n kehityksen aikana
heidän laittaneet korkeimman painoarvon
turvallisuusasioihin. He seuraavaat BSI:n
ja OWASP:in tietoturvasuosituksia, ja
heillä on sertifioitu palvelinkeskus
erittäin korkeilla turvastandardeilla.
T: Ja miltä tämä näyttää sitten
käytännössä?
J: Voi, en haluaisi näyttää sinulle tätä
tässä. Se on aika pelottavaa. Tämä
tässä oli se näky kun astuin sisään
vaalihuoneeseen. Tämä ei ole kuva-
kirjastosta. Otin tämän kuvan itse ja se
on todellisuus. Siis, kävelin näiden
tyyppien luo ja kysyin, että "pitäisikö
meidän käyttää näitä ääntenlaskuun?"
ja he sanoivat "kyllä, sitä varten
ne ovat täällä". Ja minä rukoilin
Jumalaa, että olisi joku syy, ettei se
onnistuisi. Ja Windows XP ei pettänyt
minua, koska kun käynnistin ohjelmistoa,
se kaatui, koska ne koneet olivat
32-bittisiä ja OK.VOTE vaati 64-bittisen.
Joo, se oli hienoa. Joten me emme sitten
käyttäneet Windows XP -koneita. Etsimme
sen sijaan muita koneita ja löysimme
tämän tässä. Se on Windows 10 -kone.
Se oli OK. Kuitenkin, siinä oli
vanhentunut virusskanneri. No, parempi
kuin ei mitään. Eli käytimme siis sitä
konetta. Mutta pidetään mielessä mitä
meille luvattiin: turvallisia vaaleja.
Epäilimme sitä todellakin.
Katsotaan IT-ympäristöä ja miten siihen
tilanteeseen päädyttiin. Ensimmäiseksi
tämä ei ollut ihan täysin
OK.VOTE:n vika, koska se oli
paikallishallinnon vastuulla hankkia
koneet ääntenlaskuun ja AKDB, OK.VOTE:n
toimittaja, sanoi, että he suosittelevat
käyttämään turvattuja hallinnon koneita.
OK tähän asti, mutta meillä ei vain ollut
tarpeeksi turvattuja hallinnon koneita
tähän tarkoitukseen. Esimerkiksi,
kotikaupungissani tarvitsimme noin 8
tietokonetta laskemaan vaalitulosta
ja meillä ei ollut tarpeeksi
kaupungintalolla. Ja lisäksi
vaalihuone oli koululla ja siellä
oli valmiina koulu-PC:itä. Joten
käytimme sitten koulu-PC:itä.
Ja ne olivat peruskoulun koneita. En
ole todellakaan varma, tietävätkö
kaikki oppilaat mitä linkkejä saa
painaa ja mitä mitä ei pitäisi
painaa. Joten nämä koneet saattaisivat
olla turvattomia. Niissä voisi olla
haittaohjelmia. Ja olisi mahdollista,
että joku olisi manipuloinut niitä
etukäteen. Emme voi varmuudella sanoa.
En haluaisi kuitenkaan syyttää
hallintoa, koska he olivat tehneet
hyvää työtä vaalien järjestämisessä.
Heillä oli paljon tehtävää ja he
tekivät sen hyvin. Kaikki järjestyi
lopulta. He eivät ole tietoturva-
ammattilaisia ja emme voi sitä vaatia
heiltä, että he tietäisivät, miten
pystyttää järjestelmät ja mitä
riskejä liittyy turvaamattomiin
tietokoneisiin vaaleissa.
Se ei vain ole heidän työtään. Me vain
päädyimme käyttämään epäluotettavia
koneita, koska - kuten olemme nähneet -
lailliset vaatimukset eivät sano toisin.
Nyt, katsotaan miten saimme
digitaalisen tuloksen aikaan.
T: Juuri niin. Menimme äänestys-
paikoillemme ja saimme jokainen
PC:n ja nipun äänestyslipukkeita
laskettavaksi ja tulosten syöttämiseksi.
Johannes oli Tiimissä 2, minä Tiimissä
1. Syötimme lipukkeita koneisiimme.
Ne digitoitiin. Tiimi 1 oli
vihreä ja Tiimi 2 oli sininen.
J: Kun lopetin lipukkeiden syöttämisen,
laitoin sisään USB-muistin ja
annoin sen Tiimi 1:lle.
T: Juuri niin. Latasin koneelleni äänet,
koska siinä vaiheessa minulla oli
keskuskone. OK.VOTE:n ohjelmisto
finalisoi nämä vaalit ja
siirsi tulokset sen jälkeen
jälleen USB-muistille. Ja sitten se
kuljetettiin eteenpäin prosessoitavaksi.
J: Mikä ongelma tässä kaikessa oli?
Ensinnäkin, siinä oli paljon
läpinäkymättömyyttä. Esimerkiksi,
ohjelmisto, jota käytimme äänten
laskemiseen, OK.VOTE, ei ole avointa
lähdekoodia. Se on suljettu järjestelmä,
eikä kukaan pysty sitä analysoimaan. Ja
koska se on suljettu järjestelmä, on
myös hyvin hankala ymmärtää miten
se toimii ja varmistaa, että se todella
laskee oikein. Meillä oli satoja
äänestyslipukkeita siellä ja
on todella vaikeaa sanoa, ovatko
ne kaikki oli laskettu oikein. Ja
me olemme nähneet tämän ennenkin. Ei voi
varmistaa laskennan olleen turvattu.
Meillä olisi voinut olla peukaloitu
järjestelmä. Emme voi sulkea pois, että
joku olisi manipuloinut sitä etukäteen.
Jos sitä olisi manipuloitu, sitä olisi
rivivaalityöntekijän vaikea
havaita. Joten se tarkoittaa, että
koko vaaliprosessi on läpinäkymätön
ja siitä tulee vaikeasti ymmärrettävä
henkilölle, joka vain haluaa seurata
vaaleja. Se on täysin vastaan
julkisen ääntenlaskun ideaa.
T: Puhutaan nyt siitä vaiheesta,
joka tapahtuu sen jälkeen kun
lopetamme laskemisen tiimeissämme.
J: Mitä sitä teit kun sait ulos
lopullisen ääntenlaskennan tuloksen?
Kuinka se toimitettiin
keskushallintoon?
T: Jep, istuin autooni ja otin
USB-muistit taskuuni ja ajoin
keskus-PC:lle. Kuten varmaan tiedät,
vaalipäivä on erittäin kiireinen ja
jotkut tiimit ovat hitaampia laskemaan.
Jotkut tiimi ovat nopeampia. Keskustiimi
ei tiedä milloin USB-muistit saapuvat.
Meneekö siinä kaksi, kolme tuntia vai
puolikas, he eivät tiedä. Joten voisin
mennä ja syödä jotain matkallani.
Tai voisin manipuloida äänestystuloksia.
Tarkoitan, jakaa ääniä. Ja kun lopulta
joku päivä saavun keskus-PC:lle, annan
vain USB-muistin, he asentavat sen
ja ottavat datan joka sieltä löytyy.
Siinä kaikki. Jälkeen päin
he vain lataavat lopulliset
tulokset sivulle.
J: Nyt ehkä mietitte, miten hän
voisi manipuloida vaalituloksia?
Koska niiden autenttisuutta ei ole
suojattu. Kuljettavan tiedoston
koskemattomuus on suojattu. On CRC32
ja SHA-tiiviste, mutta ei krypto-
grafista allekirjoitusta. Jos hän
muuttaisi dataa, hän voisi generoida
uudet koskemattomuustiedot ja data
hyväksyttäisiin. Pääongelma tässä on
myös se, että tämä on harvoja hetkiä kun
vain yhdellä ihmisellä on valvomaton
pääsy kuljettavana olevaan
äänestysdataan. Ja se tekee
manipuloinnista mahdollista ja helposti
tehtävissä olevaa. Ja se ei saisi olla
näin, erityisesti sähköistetyissä
vaaleissa. Katsotaanpa
itse äänteenlaskuohjelmistoa, koska
teimme siellä vielä enemmän
mielenkiintoisia löydöksiä.
T: Juuri näin. Aloitetaan järjestelmä-
arkkitehtuurista. Ensimmäiseksi, tämä on
paikallinen tai hajautettu versio
järjestelmästä. Joten kaikki tämä
tapahtuu paikallisilla koneilla, niillä
joihin tutustuimme luokkahuoneissa. Ja
näillä koneilla on asennettuna Apache
Tomcat -web-palvelin, joka on yhdistetty
MariaDB-tietokantaan. Käyttäjä käyttää
äänestysjärjestelmä siirrettävällä
Firefoxilla. AKDB sanoi aiemmin, että he
suhtautuivat erittäin vakavasti tieto-
turvaan. Mietitään mitä hyökkääjiä heillä
oli mielessään suunnitellessaan
järjestelmää ja keneltä pitäisi
puolustautua. Hyökkääkö järjestelmää,
ääntenlaskuohjelmistoa, vastaan käyttäjä,
joka on normaalisti vain vapaa-ajallaan
vaaleissa avustava vaalityöntekijä,
vai oliko heillä mielessä
verkkohyökkääjät, jotka tulevat
ihan jostain muualta ja yrittävät
manipuloida verkkoa ulkoapäin?
Ensiksi, tarkastelimme käyttäjää yhtenä
mahdollisista hyökkääjistä. Ja jopa tässä
ympäristössä me löysimme todella
rikkinäistä tavaraa. Ensimmäiseksi,
rikkinäinen pääsynhallinta. Mutta ei
siinä kaikki. Tässä kirjautumissivu,
jolla kirjauduimme äänestysjärjestelmään,
ja jossa klikkasimme hallintasivua missä
voimme vaihtaa salasanan tai editoida
profiiliamme. Vasemmalla on nappuloita ja
kuten näette, olemme kirjautuneet sisään
"user42":na. Ei ole muuta tehtävää kuin
valita mitä laskentaa haluamme tehdä:
yleistä alueellista äänestystä vai
kunnallista laskentaa. Ja siinä kaikki
mitä voimme tehdä sivulla. Vaihdetaan
järjestelmänvalvojaksi. Tässä meillä on
järjestelmänvalvojan tili, kuten näette
ylävasemmalta. Siellä voimme tehdä paljon
enemmän kuin normaali käyttäjä. Olemme
taas hallintasivulla, mutta nyt meillä on
käyttäjienhallinta, jossa voimme lisätä
tai poistaa käyttäjiä. Me voimme avata
uudelleen tai sulkea äänestystapoja. Me
voimme tuoda/viedä tietoa. Mikä ei ole
käytössä ruutukaappauksissa on
äänestystulosten poisto jne. Me
valitsimme kaksi erittäin kiinnostavaa
URL-osoitetta teille. Ensimmäiseksi,
"Bezirk wieder eröffnen" joka kääntyy
"avaa uudelleen vaalit". Sen
jälkeen kun vaalit on suljettu,
ääniä ei voi enää syöttää
järjestelmään. Ja toinen
linkki on "Löschen", joka kääntyy
"tuhoa". Se puolestaan tuhoaa
kaiken datan koneelta, jolloin siellä ei
ole enää yksityistä tai turvattua dataa.
Ja tämä on se miltä ne näyttävät kun me
avaamme ne vasemmalta puolelta.
Näemme "avaa uudelleen" -valinnan.
Oikealla näemme datan poiston. Hetkinen,
tämä ei ole järjestelmänvalvojan näkymä,
vaan käyttäjän näkymä. He eivät
tarkastaneet oliko tämä sallittua
käyttäjälle. Pakko sanoa ettei tämä
ollut vain näkymä, vaan ne toimivat.
Täysin toimivat prosessit, joilla
poistat dataa tai avaat vaalit
uudelleen.
Hälytysääni
J: Mikä ongelma tässä on?
T: Jep, kuten varmaan jo arvasit,
vaalien avaaminen uudelleen voi
tehdä siitä todennäköisempää, että
mukaan ujutetaan ääniä omalle suosikille.
Ja lisäksi, jos haluan sekoittaa
vaaleja, voin vain poistaa kaiken
äänestysdatan. Joutuisimme aloittamaan
alusta. Olisimme täysin myöhässä tai
kiistämään äänestyksen.
J: Mutta kuinka tämä on edes mahdollista?
T: Jep, me opimme, että tässä on heidän
sovelluksensa pääsyoikeuksien tarkastus.
Tässä funktiossa "getZugriffRollen",
joka kääntyy "hae pääsyroolit".
Normaalisti siellä olisi koodia joka
tarkastaa onko tällä roolilla pääsy
tähän osaa sivustoa. Mutta se vain
palauttaa "null", ei sitä ole toteutettu.
Ja se on kiva homma implementoida
pääsynhallinta. Kuitenkin, me voimme
ehdottaa mekanismeja, joilla tämä olisi
voitu estää. Ensimmäiseksi, et voi
luottaa piilotettuun tietoon.
Jos jätät näyttämättä mistä voi klikata
URLia tai sivua, se ei ole oikeasti
salaisuus, koska ehkä löydät jotain
vuodettua lähdekoodia, varmistat
ajamisen järjestelmänvalvojana, tai
naputtelet URL:n vahingossa väärin ja
pääset piilotettuun tietoon. Tai sitten
käytät skanneria löytääksesi piilodatan.
Datan piilottaminen ei ole turvallista.
Ja toisaalta, sinun pitäisi implementoida
pääsyoikeuksien hallinta, jotta
se olisi olemassa ja testata edes
kerran, että se toimii. Lopulta
voimme todeta, että piilotettu data
ei ole suojattua dataa.
T: Katsotaaanpa toisentyyppistä
hyökkäystä, XSS-hyökkäystä.
XSS-hyökkäys on eräänlaista
häirintää kahden web-sivun välillä.
Esimerkiksi, yksi sivusto yrittää tehdä
jotain toisen puolesta. Tavoite on usein
huijata käyttäjää tai käynnistää
manipulaatio. Ensimmäiseksi, olemme aika
varmoja, että he ovat miettineet XSS-
hyökkäyksiä, koska tehdessämme testausta,
me näimme lisättyjä HTTP-otsakkeita,
jotka torjuvat suuren kirjon erilaisia
XSS-hyökkäysvektoreita. Esimerkiksi,
tässä on "X-Frame-Options: Same Origin".
Se tarkoittaa, että muut sivut eivät voi
sisällyttää ääntenlaskentaohjelmistoa
omiin kehyksiinsä jne. Myöskin
XSS-hyökkäyksen suojaus on asetettu:
"X-XXS-Protection". Joten tämä näyttää
aika hyvältä, koska jo tämä sulkee pois
useita hyökkäysvektoreita. Mutta entäs
CSRF-hyökkäykset? Kun me ensin testasimme
tätä, meille selvisi, että ääntenlasku-
järjestelmää ei oltu täysin suojattu.
Mitä CSRF-hyökkäys tarkoittaa? Vaiheessa
1 vaalityöntekijä käyttää integroitua
Firefox-selainta vihamielisellä
web-sivustolla. Eli käyttäjä
keksii mennä web-sivustolle. Esimerkiksi
joku lähettää hänelle linkin ja se sai
hänet klikkaamaan sitä, esimerkiksi
suloisten eläinkuvien toivossa tai
jotain sellaista. Ja sitten käyttäjä
vierailee sivustolla. Ja tämä sivusto
sisältää lomakkeen kenttiä, jotka
muistuttavat ääntenlaskentaohjelmiston
kentistä. Ja vihamielinen web-sivusto
saa selaimen lähettämään niiden datan
ääntenlaskentaohjelmistoon sen
alkuperäisen web-sivuston sijasta.
Ja heti kun se saavuttaa Tomcat-
web-palvelimen, se hämääntyy,
koska web-palvelin ei CSRF-hyökkäyksessä
erota käyttäjän syötettä vihamielisen
sivuston syötteestä. Ja sitten
Apache Tomcat -palvelin
vain pitää sitä käyttäjän syötteenä
ja käsittelee sen. Ja tätä
kutsutaan CSRF-hyökkäykseksi.
Näimme siis, että joskus siellä
on suojaus tietyntyyppisiä hyökkäyksiä
vastaan. Mutta monet sivut eivät ole
suojattuja. Se on hyvin huolestuttavaa.
Haavoittuvaisuus vuodelta 2001. Se on
melkein 20 vuotta vanha ja löytyy yhä
tästä ohjelmistossa. Tämä on hyvin
huolestuttavaa. Nyt, vedetään yhteen
mitä sillä voi tehdä. Ensimmäiseksi,
tämä ongelma aiheutuu siitä, että sieltä
puuttuu nk. CSRF-tunniste tai mikä vain
hyvä vastatoimenpide CSRF-hyökkäyksille.
Ja toisekseen, vain minimaalinen
käyttäjän vuorovaikutus tarvitaan.
Käyttäjä ei aina edes näe, että
hän on parhaillaan
osallisena CSRF-hyökkäyksessä.
Se on melkein käyttäjän huomaamattomissa.
Ja se on erittäin yksinkertaista huijata
käyttäjää klikkaamaan linkkiä. Vaikutus
on tuhoisa, koska me voimme manipuloida
asetuksia ääntenlaskentaohjelmistossa.
Ja me voimme lisätä feikkilipukkeita.
Hälytysääni
T: Mikä tämän lopputulos on?
Mitä me voimme tehdä tällä?
J: No, me voimme manipuloida koko
vaalit tällä. Katsotaan demo
siitä, kuinka me sen teemme.
T: Siistiä.
J: Olemme jo kirjautuneet sisään
ääntenlaskentajärjestelmään. Tunnuksemme
on "admin321934". Lasketaanpa ääniä.
Näemme tässä kaikki lipukkeet, jotka
voimme syöttää järjestelmään. Nämä ovat
yhä tyhjiä, koska emme ole syöttäneet
lipukkeita vielä. Aloitetaan. Yksin-
kertaisuuden takia, meillä on vain kaksi
puoluetta. Vasemmalla Hyvä Puolue, joka
haluaa parasta ihmisille. Oikealla
meillä on Paha Puolue, joka
haluaa valtaa ja on valmis turvautumaan
jopa vaalivilppiin. Aloitetaan
ja syötetään ensimmäinen paperilipuke.
Äänestäjä on äänestänyt Hyvää Puoluetta,
joten syötämme tämän ohjelmistoon. Nyt
me tallennamme lipukkeen ja jatkamme
eteenpäin. Se on ääni Hyvälle Puolueelle.
Syötetään se ja mennään kolmanteen
lipukkeeseen. Ja taas, se on Hyvälle
Puolueelle. Tallennetaan kolmas lipuke.
Mennään lipukkeiden yleiskatsaukseen ja
katsotaan mitä on tapahtunut. Näette,
että olemme syöttäneet onnistuneesti 3
lipuketta. Seuraavaksi, katsotaan
alustavia vaalituloksia. Ja kuten
näemme, meillä on yhteensä 3 lipuketta,
jotka olemme syöttäneet järjestelmään.
Se on oikein. 3 lipuketta sisälsivät
ääniä Hyvälle Puolueelle. Se on myös
oikein. Ja nolla ääntä on annettu
Huonolle Puolueelle. Kaikki hyvin vielä.
Seuraavaksi, näytän mitä tapahtuu jos
avaan vihamielisen verkkosivun. Sivusto
tekee CSRF-hyökkäyksen ja manipuloi
vaalituloksia. Oletetaan, että pidämme
taukoa ja vierailemme Twitterissä.
OK, täällä ollaan. Täällä on kiva
kissakuva ja täällä on linkki, josta
löytyy lisää niitä. Leikitään, että
meidät huijataan klikkaamaan linkkiä.
Voi, katsokaa noita suloisia eläinkuvia.
Katsokaa tuota nälkäistä kania, apinaa,
pientä siiliä ja kahta suloista vuohta
jne. Kun lopetamme selaamisen,
suljemme välilehdet ja palaamme äänten-
laskentaohjelmistoon. Mitä huomaamme nyt
on, että käyttäjänimi on muuttunut.
Meidät on "häkätty". Meidät huijattiin
vierailemaan vihamielisellä sivustolla.
Se suoritti CSRF-hyökkäyksen sovellukseen
ja manipuloi sitä. Katsotaan mitä muuta
on muuttunut. Kaikki 3 lipuketta on
yhä siellä, mutta nyt menemme
katsomaan alustavia vaalituloksia.
Mitä näemme siellä on, että
lipukkeiden määrä järjestelmässä
on noussut kahdeksaan. Meillä on nyt 5
ylimääräistä lipuketta, joita emme ole
syöttäneet. Kuten näette, Hyvällä
Puolueella on yhä 3 ääntä. Ne me
syötimme. Mutta nyt Paha Puolue on
ottanut johdon. Sillä on nyt 5 ääntä.
Tämä hyökkäys on manipuloinut
vaalituloksia. Tosi huono homma,
koska me emme näe niitä
feikkiääniä, jotka on lisätty.
Olimme kuitenkin onnekkaita kun
huomasimme sen, koska odotimme
hyökkäystä. Mutta emme huomaisi
asiaa jokaisessa tapauksessa.
T: Mutta mitä tapahtuu, jos emme huomaa?
J: No, tämä tapahtuu. Tässä esimerkissä
me vain oletimme, että Tiimillä 1
oli 3 lipuketta, jotka se oli syöttänyt
järjestelmään ja Tiimillä 2 oli 6
lipuketta, jotka se oli syöttänyt
järjestelmään. Nyt Tiimi 1 vierailee
vihamielisellä sivustolla ja 5 feikki-
lipuketta lisätään vaalituloksiin.
Tässä tapauksessa hyökkääjä oli fiksu
ja injektoi lipukkeet paikkaan,
johon Tiimi 2:n äänten odotetaan
tulevan myöhemmin. Joten mitä tapahtuu:
Tiimi 2 vie lipukkeensa Tiimi 1:lle ja
se yrittää lukea ne sisään. Ja mitä nyt
tapahtuu: koska siellä mihin Tiimin 2
lipukkeiden olisi määrä päätyä, on
jo lipukkeita, sisäänlukuprosessi
ei toimi onnistuneesti. Vain
joukko ääniä luetaan sisään.
Joten enemmistö lipukkeista,
5 tai 6 lipuketta,
ohitetaan, koska ne eivät mahdu
tietokantaan, koska niiden paikat
on jo viety feikkilipukkeiden toimesta.
Yleensä me voisimme olettaa, että
tämä generoisi virheviestin tai ainakin
varoituksen, mutta näin ei käy. Tämä on
ohjelmiston hiljainen epäonnistuminen.
Ja mikä on vielä pahempaa, äänimäärät
ovat jälleen oikein. Se tarkoittaa, että
meillä on yhdeksän ääntä järjestelmässä
ja ne vastaavat yhdeksää paperilipuketta.
Näyttää siltä kuin kaikki lipukkeet olisi
syötetty ja kaikki olisi kuten
pitääkin. Siispä suljemme
äänestyksen ja laskemme vaalituloksen.
Ja se tapahtuu nyt. Kuten näette,
on vain 4 ääntä Hyvälle Puolueelle,
mutta 5 ääntä Pahalle Puolueelle.
Joten Paha Puolue voitti vaalit
manipuloimalla äänestysjärjestelmää,
käyttämällä CSRF-hyökkäystä. Ja sen ei
pitäisi olla koskaan mahdollista, koska
emme se ei vastaa ääntenlaskujärjestelmän
odotuksia. Vaalitulos on vilpillinen.
Mietimmekö verkkohaavoittuvaisuuksia?
T: Joo, varmasti, mutta se on kolikon
toinen puoli. Tarkastimme ensin vaali-
työntekijöiden osion hyökkäyksiä vastaan,
sitten tarkastimme verkkopuolen ja
skannasimme ja analysoimme järjestelmää.
Sitten me huomasimme: avoimia portteja
kaikkialla. Kuten näette, he ovat
jättäneet Apache Tomcatin ja MariaDB:n
avoimeksi koko järjestelmän verkolle.
Ja me mietimme tästä, että "no,
testataan tuoreita haavoittuvaisuuksia,
kuten 2020 löydettyä Ghostcatia".
Ghostcat on hyökkäys, joka tehdään
Apachen AJP-protokollaa vastaan.
Tarkastellaan Apachen järjestelmää ja
miten se on rakennettu. Apachessa on
hakemisto, josta jaetaan staattisia
resursseja, HTML- ja JSP-tiedostoja.
Lisäksi se voi sisältää luokkatiedostoja
tai servlettejä, joita käytetään
JSP- tai HTML-tiedostojen yhteydessä.
Annoimme ajpShooter-skriptille ohjel-
miston osoitteen, portin ja tiedoston,
jonka halusimme sen lukevan. Tässä
se oli luokka "PrivateTest", koska
se voisi vuotaa, ehkäpä. Me sanoimme,
että haluamme vain sen luettavan.
Siinä olisi mahdollisuus,
että sen sisältämä koodi tulisi
suoritettavaksi. Me teimme sen
hyökkäyksen ja TA-DAA, tulos! Tässä on
luokan "PrivateTest" tavukoodi.
Tiputetaan tämä koodi kahvikuppiimme
ja ehkä saamme ongittua sieltä luokan
lähdekoodin. Ja, kyllä, saimme sen.
Miksipä salausmekanismia ei
testattaisi tekstijonolla?
Mutta tämä ei ole tavallinen tekstijono,
kuten ehkä huomaat. Tämä on oikea
ylläpitäjän salasana tuotannossa olevaan
MariaDB:een. Ja tämä on...
Hälytysääni
J: Mikä tässä on ongelma? T: Kuten ehkä
selvästi näet tästä hyökkäyksestä, me
voisimme vuotaa MariaDB:n kirjautumis-
tiedot ja ehkä enemmänkin kirjautumis-
tietoja ja salasanoja. Voisimme vuotaa
koko lähdekoodin verkkoon ilman, että
meillä on pääsyä PC:lle vaalihuoneessa.
Ja tämä oli vain mahdollista, koska he
jättivät avoimiksi verkkoon kaikki koneet
ja sovellukset. Näin ei pitäisi koskaan
olla. Joten lopputulos.
Miten tämän voi estää? Ensiksikin, sinun
ei pitäisi koskaan jättää tarpeettomia
portteja avoimiksi. He eivät edes käytä
AJP-välityspalvelinta sovelluksessaan,
mutta jättivät sen auki koko maailmalle.
Seuraavaksi, pidä ohjelmistosi ajan
tasalla, jotta ohjelmistosi ei olisi
haavoittuvainen jos jotain löytyy.
Ja viimeisenä mutta ei vähäisimpänä:
älä koskaan käytä tuotantosalasanoja
yksikkötesteissäsi. Se ei ole paras idea.
Lopuksi, yhteenvetona: vältä kaikin
keinoin jättämästä ylimääräistä hyökkäys-
pinta-alaa tälläisille hyökkäyksille,
joista et ehkä edes vielä tiedä.
J: Nyt kun Tobi on näyttänyt
mielenkiintoisia Apache-juttuja, minä
testasin tietokannan tietoturvaa.
Ensimmäisen analyysin aloitin
samalla PC:llä, jossa ohjelmisto
oli asennettuna. Kokeilin saada pääsyä
tietokantaan, joka oli samalla koneella,
localhostilla. Kokeilin käyttäjätunnusta
"root" ja sitten minä huomasin, että
minulta kysytään salasanaa
pääsyä varten. Se oli kuitenkin
triviaalia, koska kaikki mitä
minun tarvitsi tietää, oli
edellisessä tiedostossa. Onnistuin
purkamaan salasanan salauksen
helposti. Sillä hetkellä tajusin,
että Tobi oli näyttänyt sitä
aiemmin. Että hän oli löytänyt sen
Ghostcat-haavoittuvuudella ja se oli
MySQL-pääkäyttäjän salasana. Kun sain
yhteyden MySQL:ään, yritin dumpata
käyttäjätietokannan katsoakseni millä
käyttäjillä oli pääsy tietokantaan. Ja
tältä se näyttää. "root"-käyttäjiä
on 4 ja käyttäjältä "root" vaaditaan
salasana kun yhteys otetaan paikalliselta
koneelta. Mutta odotapa hetki, täällä on
myös kone "pci90309". Ja kuten huomaatte,
sillä käyttäjällä ei ole MySQL-salasanaa
asetettuna. Se tarkoittaa, että joku
koneelta "pci90309" saa ottaa yhteyden
käyttäjänä "root" ja siihen ei
tarvita edes salanaa. Ja se on
todella outoa.
Hälytysääni
T: Joten mitä tästä voi seurata?
J: No, joku verkossa voi nyt
vain tehdä massaäänestysmanipulointia.
Se on aika triviaalia, koska voin vain
nimetä koneeni sopivasti ja saan täyden
pääsyn tietokantaan, johon kaikki
äänestystulokset on säilötty. Järjestel-
mänvalvojana voin käpistellä niitä. Voin
muuttaa niitä kuten haluan. Tämä
haavoittuvaisuus on niin hitsin outo ja
itsestäänselvä, että se ei vaadi mitään
vaivannäköä. Ja siksi me emme edes demoa
sitä tässä. Se on typerryttävän yksin-
kertaista tässä tapauksessa. Normaalisti
sanoisin "eiköhän se ollut tässä", koska
meillä on täysi pääsy järjestelmään
ja voimme muuttaa mitä haluamme. Päätimme
kuitenkin mennä vielä syvemmälle, koska
näimme "pci90309":n avaavan ovia. Joten
meillä on pääsy äänestystuloksiin. Ja me
voimme muuttaa niitä, mutta meillä ei
ole vielä pääsyä koko järjestelmään.
Entäs se PC? Olisiko se mahdollista,
että järjestelmänvalvojan pääsyllä
tietokantapalvelimelle voisi ajaa etäältä
koodia sillä koneella? Tätä koetta varten
käytimme seuraavaa asetelmaa. Oikealla
meillä on äänestysjärjestelmä avoimen
MariaDB-tietokantapalvelimen kanssa.
Vasemmalla on minun koneeni. Nimesin
sen "pci90309":ksi, koska voin sen
tehdä. Saan siltä avattua yhteyden
MariaDB-palvelimelle. Käytän tunnusta
"root" ilman salasanaa. Ja se
hyväksytään heti. Kun minulla on
nyt yhteys, voin antaa komentoja.
Esimerkiksi, voin käskeä MariaDB:tä
ottamaan käyttöön lisäosia. Tämä lisäosa
on nimeltään "ha_connect". Se on yksi
lisäosista, jotka sisältyvät MariaDB:een.
Tämä on erittäin voimallinen MySQL-
tallennusajuri. Ja nyt näytän mitä
sillä voi tehdä. Seuraavaksi, luon
tietokantataulun nimeltä "pwn".
Käytän tätä tallennusajuria "ha_connect"
ja käsken sitä luomaan tiedoston, jonka
nimi on "pwn.dll" ja tallentamaan sen
lisäosat sisältävään hakemistoon.
Mikään ei estä meitä tekemästä näin.
Se on yksi erikoistoiminnallisuuksista
tässä tallennusajurissa. Voin sanoa tämän
taulun vastaavan nyt tuota tiedostoa
tiedostojärjestelmässä. Tämä tiedosto on
kuitenkin vielä tyhjä, koska taulu on
tyhjä. Mutta koska tämä on tietokanta,
me voimme ajaa "INSERT INTO" -komentoja
ja tallentaa siihen mitä dataa haluamme,
esimerkiksi haitta-DLL:n. Voin vain
lisätä sen tauluun käyttäen "INSERT
INTO" -komentoa ja se kirjoitetaan
suoraan haitta-DLL:äämme "pwn.dll":ään.
Kun olen lopettanut kirjoittamisen,
käsken MariaDB:n ottaa tuo
lisäämäni lisäosa käyttöönsä.
Lisäosan käyttöönotto tarkoittaa, että
me suoritamme sen tallentamamme koodin
DLL-tiedostossa. Se tarkoittaa, että
voimme ajaa etäältä omaa koodiamme.
Hälytysääni
T: En edes aio kysyä mitä etäältä
suoritettavalla koodilla voi tehdä.
J: No, sillä voi tehdä mitä vain. Se
tarkoittaa, että minulla ei ole esteitä.
Täysi kontrolli ääntenlaskujärjestelmään.
En puhu ainoastaan tiedosta
tietokannassa. Puhun koko
tietokoneesta, jota voin nyt kontrolloida
ja manipuloida kuten haluan. Se on
mahdollista vain käyttämällä
äänestysohjelmistoa verkon yli
käyttäen sen avoimia liittymiä. Ja
nyt näytän teille miten helppoa on
suorittaa mielivaltainen ohjelma siellä.
T: Tämä on ääntenlaskujärjestelmä.
Aloitetaan käynnistämällä ääntenlasku-
ohjelmisto. Apache Tomcat -web-palvelin
ja MariaDB-tietokantapalvelin
käynnistyvät. Lopulta siirrettävä
Firefox on käynnistynyt. Järjestelmä
on toimintavalmis. Varovaisuutta,
hyökkääjä aktivoituu. Hänen koneensa
on pahamainen "pci90309". Se käynnistää
välittömästi Python-hyökkäysskriptin
"fun.py". Se ottaa yhteyden MariaDB-
palvelimeen käyttäjänä "root" ilman sala-
sanaa ja lataa haitta-DLL:n lisäosana.
Kun lataus on ohi, haittakoodi
ajetaan. Kuten voimme nähdä,
laskin käynnistyy eli etäältä tapahtuva
suorittaminen oli onnistunut. Äänten-
laskentajärjestelmä on nyt
hyökkääjän hallinnassa.
J: Sen jälkeen kun löysimme tuhoisat
ongelmat ääntenlaskentajärjestelmässä,
kerroimme välittömästi toimittajalle.
T: Ja he olivat erittäin ammattimaisia
ja vastasivat nopeasti sähköposteihimme.
Pidimme työskentelystä heidän kanssaan
yhdessä ja kerroimme heille meidän
tuloksistamme ja he olivat aina
myönteisiä. He myös
suosittelivat korjauksia.
J: He kertoivat meille esimerkiksi, että
ääntenlaskuohjelmaa pitäisi käyttää vain
turvatussa ympäristössä, kuten
hallintoon kuuluvassa verkossa.
Me emme kuitenkaan usko,
että se on hyvä ratkaisu.
T: Juuri näin. Me emme ole tyytyväisiä
tähän ehdotukseen, koska meillä on silti
kaksi ongelmaa olemassa, vaikka ympäristö
olisikin turvattu. Ensiksikin,
hallinnon PC voi silti olla haitta-
ohjelmien saastuttama tai se voi olla
manipuloitu ennen kuin äänestys
alkaa. Ja toisekseen, oli tämä
bugi rikkinäisessä pääsynhallinnassa,
muistattehan? Ja vaikka meillä olisi
ollut turvattu ympäristö, tämä bugi
olisi toiminut varmasti ja olisit
voinut tuhota kaiken datan tai
avata vaalit uudelleen tai jotain
tälläistä.
J: Olemme silti aika tyytyväisiä,
että he ottivat meidät vakavasti. He
ovat jopa ilmoittaneet päivityksistä.
He kirjoittivat meille suunnittelevansa
CSRF-todenteita sivuille, joilta löysimme
CSRF-haavoittuvaisuuksia. Joten
se jo on hyvä askel oikeaan
suuntaan. Vedetään nyt yhteen mitä olemme
tänään esittäneet. Ihan ensimmäiseksi,
löysimme useita ongelmallisia puolia
konseptista ja sen käytännön
toteutuksesta. Ensimmäiseksi, koko
äänestysjärjestelmä pyörii
epäluotettavissa järjestelmissä.
Niitä on voitu manipuloida etukäteen.
Niissä voi olla haittaohjelmia
tai ne eivät vain toimi oikein.
Jo se on erittäin ongelmallista,
koska meillä ei ole luottamusta
näitä järjestelmiä kohtaan ja
me käytämme niitä laskemaan
ääniä, laskemaan koko vaalitulosta.
Ja lisänä tähän, että vaikka
käytetty ohjelmisto ja sitä ajava PC,
olisivat turvatut, se ei tuo vielä
riittävää läpinäkyvyyttä. Sitä on
erittäin hankala ymmärtää mitä softa
tarkalleen tekee ja miten. Joten en
voi oikein ymmärtää miten se päätyy
tulokseensa. Pitäkää tämä mielessä, että
meillä on melkein 600 ehdokasta ja useita
satoja lipukkeita, jotka pitää kaikki
syöttää järjestelmään ja sitten
jotain magiaa tapahtuu ja se sylkäisee
ulos tuloksensa. Ja sitten meidän vain
ottaa tulos. Koska se on mahdotonta
tarkistaa, että laskettiinko jokainen
ääni oikein ja tapahtuiko siellä jotain
outoa tai tapahtuiko siellä mitään
manipulaatiota.
T: Ja tämä on myös mahdollista, koska me
löysimme paljon haavoittuvaa softaa ja ei
vain järjestelmän turvallisuus ollut
kyseessä vaan oli myös täysin mahdollista
manipuloida koko äänestystä useista
paikoista pitkin verkkoa. Ja tämä johtaa
meidät päätelmään, että nämä vaalit ovat
suuressa vaarassa tällä teknologialla.
J: Ja se on se syy miksi me haluamme
teidät vaalityöntekijöiksi. Mitä enemmän
silmiä vaaleissa on, sitä turvallisemmat
niistä tulee. Ja jos olet kiinnostunut
olemaan vaalityöntekijä, ota vain yhteys
paikallishallintoosi. He ovat aina
hyvin tyytyväisiä kun saavat
vapaaehtoisia, jotka haluavat olla
vaalityöntekijöitä. Perustuen omaan
kokemukseeni usemmalta vuodelta,
se on myös hauskaa. Saat olla
yhteydessä moniin ihmisiin. Minä
nautin siitä paljon ja voin vain
suositella sitä. Tämä on hyvä
tapa jokaiselle tukea demokratiaa
omassa maassaan.
T: Päättääksemme esityksemme, meille
selvisi tämän teknologian tietoturvan
olevan huono ja ei siinä vielä kaikki.
J: Tämä oli vain jäävuoren huippu,
koska katsoimme vain yhtä ainoaa
ratkaisua, joka on saatavilla äänten-
laskentaan. Ja tämä oli myös erikois-
konfiguraatio. Mitä on vielä vaikeampaa
nähdä, on se mitä tapahtuu kaiken sen
takana mitä tänään näimme, koska kun me
otamme datan ulos ja viemme sen keskus-
hallintoon, jossa data luetaan sisään
ja ladataan eteenpäin, mihin se kaikki
data menee? Missä se kaikilta
äänestyspaikoilta kertyvä data
lasketaan yhteen? Me emme tiedä sitä
vielä miten tämä toimii. Meillä ei ole
sitä ohjelmistoa tutkittavana.
On siis paljon tehtävää
jäljellä siinä miten voisimme tarkistaa
koko järjestelmän. Me otimme siitä vain
pienen palan ja se on vain tämä
ääntenlaskujärjestelmä tässä.
T: Olimme hyvin järkyttyneitä siitä
tiedosta, että ääntenlaskennan
siirtyminen tietokoneelle ei ole
yleisesti tiedossa. Tästä syystä loimme
tämänpäiväisen esityksemme. Se on
elintärkeä tieto demokratialle, että
käytössä on ohjelmisto ja että se ei
ole erityisen turvallinen. Se oli
meille iso juttu tuoda
tämä tieto ihmisille.
J: Yksi juttu on vielä se, että kaikki
mitä tänään näimme, on täysin laillista,
koska ainakaan Baijerissa meillä ei ole
mitään sääntöjä tai lakeja sitä vastaan,
että käytämme turvattomia järjestelmiä,
ääntenlaskentaohjemistoja. Kuten näimme
alussa, on vain karkeat ohjeistukset,
jotka sanovat, että tietokoneita voidaan
käyttää vain ääntenlaskentaan. Mutta me
tarvitsemme tiukemmat ohjeistukset, koska
se mitä näimme tänään, ei voi jatkua.
Muissa osavaltioissa Saksassa on
joitakin, sanotaan, ohjeistuksia
tai jopa sertifiointiprosesseja
tälläiselle digitaaliselle ohjelmistolle.
Useimmissa tuntemissani osavaltioissa ei
ole mitään sääntöjä. Tämän ei pidä
jatkua seuraavia vuosia näin.
T: Lisäksi, lopulta, ennen kuin
mikään ääntenlaskentaohjelmisto voi
mennä tuotantoon, riippumattomat testit
pitäisivät olla saatavilla kaikille,
jotta voidaan todistaa ohjelmiston
olevan turvallinen ja että se tekee
sitä meille mitä on luvattu. Koska se
vaikuttaa suoraan demokratiaamme. Ja jos
ohjelmistoa on manipuloitu, se manipuloi
äänestystämme, vaalejamme ja meidän
demokratiaamme. Lopuksi jätämme
teille mietittäväksi kaksi kysymystä:
T: Paljonko digitaalista tukea vaaditaan?
J: Ja paljonko on siedettävä?
Hiljaisuus
Herald: Paljon kiitoksia kiinnostavasta
esityksestänne, Johannes ja Tobias.
Ja paljon kiitoksia työstänne aiheen
parissa. Toivottavasti teillä on aikaa
kysymyksille. Itse asiassa, meillä
on aika monia kysymyksiä.
J: Toki.
H: Hyvä homma. Ensimmäinen nettikysymys:
"Onko epäilystä, että näitä
haavoittuvaisuuksia olisi
käytetty aktiivisesti?"
J: No, sitä on vaikea sanoa. Ainakaan
siinä kylässä, josta tulen, en
havainnut mitään erikoisia tapahtumia.
Minulla ei kuitenkaan ole kokonaiskuvaa
Baijerista, joten se on aika hankala
sanoa. Luulen, että on mahdoton sanoa,
oliko minkäänlaista manipulaatiota.
Valitettavasti emme
voi sanoa niin.
T: Lisäksi, me olimme vain yhdessä
paikassa, joten ei meillä ole
kokonaiskuvaa yhteensopimattomista
numeroista tai muista tapahtumista,
mutta me emme nähneet,
koska olimme vain yhdessä
paikassa, yhdellä
äänestyspisteellä.
H: OK, kiitos vastauksista. "Uskotteko,
että se olisi mahdollista, että
digitaalinen äänestyslipuke
voisi olla yhtä turvallinen kuin
paperinen?"
J: No, minun mielestäni se ei ole
mahdollista jos haluat saman
avoimuuden, joka meillä on
paperipohjaisissa äänestysjärjestelmissä.
Koska kun meillä on paperiäänestys, me
voimme mennä äänestyshuoneeseen ja nähdä
mitä siellä tapahtuu. Me voimme nähdä
lipukkeet, jotka jätetään. Lipukkeet,
jotka otetaan uurnasta. Laskennan,
yhteenlaskennan. Minä voin yrittää
selvittää mitä siellä tapahtuu. Voin
katsoa sitä, ymmärtää mitä ihmiset
tekevät siellä. Mutta sillä hetkellä
kun meillä on vain digitaalinen äänestys,
en voi selvitttää sitä tekeekö tietokone
mitä sen pitää, onko siellä
manipulointia. Joten avoimuuden
suhteen en usko, että on mahdollista
tehdä sama, samalla tavalla kuin
paperilipukkeiden kanssa, esimerkiksi.
T: Minun pitää lisätä tähän, että jos
siellä olisi mahdollisuus saada
jäljitettävyys ja näkyvyys, jolla
saat aina nähtäväksesi miten tulokset
syntyvät kustakin paikasta, jos ne
olisi allekirjoitettu avoimesti, se voisi
olla mahdollista joku päivä. Mutta ei
tälläisellä ohjelmistolla jonka näimme.
H: OK, kiitos. "Tiedättekö sattumalta
mitkä osavaltiot Saksassa
käyttävät OK.VOTE:a?"
T: Emme osaa sanoa, mitkä osavaltiot
käyttävät sitä aktiivisesti, koska me
olimme mukana vain Münchenin ja Baijerin
vaaleissa. Mutta voimme kertoa, että
lähdekoodissa on viitteitä, että se
olisi käytössä myös esimerkiksi
Hampurissa, Bremenissä, Hessenissä ja
Rheinland-Pfalzissa. Mutta emme tiedä
onko se käytössä siellä, suunnitellaanko
sen käyttöönottoa vai onko sitä käytetty
aikaisemmissa vaaleissa ja sittemmin
lopetettu käyttämästä. Me emme oikein
tiedä tästä tarkalleen.
H: OK, ehkä me voimme pitäytyä hetken
vaalityöläisen tehtävässä.
"Manuaalinen datan syöttäminen
järjestelmään... Onko siihen prosessi?
Onko teillä ajatusta riskeistä, joita
tässä on?"
J: Kyllä. Pohjimmiltaan siinä on
ainakin kaksi tai kolme ihmistä istumassa
jokaisella koneella ja sitten he
syöttävät lipukkeet. Ihmiset tarkastavat
toistensa tekemiset, että jokainen
lipuke syötetään oikein. Yhdellä
ihmisellä on lipuke edessään ja
toinen lukee äänet, jotka
ensimmäinen syöttää sisään.
Ja sitten he tekevät ristiintarkastuksen,
jotta vaalitulosten sisäänsyöttämisessä
koneelle ei ole tullut virheitä.
H: OK. Kiitos kun selvensitte asiaa.
Joku kysyy: "Kuinka järjestelmä on
kytketty Internetiin tai johonkin
muuhun verkkoon? Onko
oikein ymmärretty, että
tulokset kirjoitetaan fyysiselle,
tallennusmedialle, jolla tulokset
siirretään? Fyysisesti tunnusteltavalle...
Miksi välittää siitä mitä Windowsia
tai muuta niissä koneissa
ajetaan? Onko tämä oikea
ymmärrys?"
J: No, ongelma tässä on se, että
se riippuu paikallishallinnosta, että
miten he järjestelmä laitetaan pystyyn.
Luin myös tästä keskustelusta, että
joku kirjoitti heidän äänestys-
ohjelmistollaan olleen erittäin
rajattu verkkoyhteys. Se tietokone ei
ollut yhteydessä Internetiin. Se riippuu
pitkälti hallinnosta ja siitä, mitä
verkkoa siellä käytetään. Joten
on täysin mahdollista, että
tietokoneilla on Internet-yhteys,
koska ei ole olemassa ohjeistusta
siitä, miten tietokoneet voi asentaa.
Joten, en voi täysin sulkea pois sitä,
että joku esimerkiksi ottaa
langattoman verkkoyhteyden
turvaamattomaan tukiasemaan ja on
sitten verkossa. On hankalaa sanoa tästä,
mutta en voi sulkea pois mahdollisuutta.
T: Laajentaakseni vastausta, me jopa
yritimme selvittää, onko ohjelmistossa
suojausta, joka tarkastaisi onko
Internet-yhteys olemassa ja kieltäisi
äänestysjärjestelmän käytön. Mutta
sellaista ei ollut, tai ainakaan emme
löytäneet sitä. Joten vaikka hallintoa
ei olisi ohjeistettu, näiden PC:iden
ei pitäisi olla yhteydessä verkkoon. Ei
ole turvamekanismia, joka tarkastaisi
onko näin ja pysäyttäisi sen. Tai edes
varoittaisi siitä, että kone on verkossa
ja pitäisi kytkeytyä irti Internetistä
ennen kuin laskenta alkaa.
M: Mielenkiintoista. OK. Meillä on
viesti IRC:stä henkilöltä joka on
työskennellyt juuri tämän ohjelmiston
parissa demomoodissa, tietenkin.
Ja kysymys, joka hänellä on, kuuluu:
"Huomasitteko mahdollisuutta syöttää
negatiivisia ääniä ehdokkaalle?
Esimerkiksi kaksi miinusääntä?"
J: No, sitä on vaikea sanoa. Minä
ajattelin tätä, että se onko
se mahdollista. Ehkä manipuloimalla
tietokantaa suoraan. En ole täysin
varma. En ole varma, kokeilinko
tätä. Mutta kuitenkin kun
saan pääsyn tietokantaan,
se on täysin mahdollista manipuloida
mitä vain. Joten, me voisimme kokeilla
tätä uudelleen. En kuitenkaan usko, että
se juuri muuttaa lopputulostamme. Se on
mielenkiintoinen kysymys, johon en voi
vastata juuri nyt. Mutta, Tobi, en ole
varma, kokeilitko sinä tälläistä?
T: Kokeilimme muuttaa jo annettuja
ääniä, mutta en usko, että tuo oli
mahdollista. Mutta, kuten näytit
siirtäessäsi datan keskuskoneelle,
äänet, jotka siellä olivat jo,
mahdollisesti hyökkääjän toimesta,
jättäisivät huomioimatta uudet äänet.
Tämä varmastikin korvaisi datan ja nuo
äänet, mutta web-käyttöliittymässä
en usko tuon olevan mahdollista. Mutta
me löysimme tarpeeksi haavoittuvaisuuksia
tietokantaan pääsyssä, jotta voisit
yrittää halutessasi sitä kautta.
H: OK, kiitos selityksestänne. Ihan
puhtaasti mielenkiiinnosta, ihmiset
kysyvät: "Kuinka pääsitte käsiksi
ohjelmistoon analysoidaksenne sitä?"
J: No, tämä on hyvä kysymys,
koska siihen liittyy hyvä tarina.
Olin vaalityöntekijä ja autoin
pistämään järjestelmää pystyyn.
Annoin IT-tukea iltaisin. Ja jossain
vaiheessa yritimme yhdistää tuloksiamme.
Me otimme tulokset ulos yhdeltä koneelta
ja siirsimme ne toiselle koneelle.
Mutta sisäänluku keskeytyi, koska
siellä ohjelmistossa oli joku
keinotekoinen rajoitus. Tiedostojen
ollessa yli 10 megatavua, niitä ei
lukea enää sisään. Ja tämä tapahtuu
aika pian, muutamien satojen äänten
jälkeen. Muutamien satojen lipukkeiden
jälkeen sisäänluku ei enää toimi.
Katsoin tiedostoa ja se oli pelkkä
JSON-tiedosto, paljon tyhjämerkkejä.
Kopioin kaiken koneelleni
korjatakseni asian. Myöhemmin
ohjelmistovalmistaja julkaisi
korjauksen. Siinä vaiheessa minulla
oli ohjelmisto koneellani, koska
halusin korjata nämä vaalit.
Oli myöhäinen ilta ja olin palannut
kotiin, huomanut, että minulla oli
yhä se ohjelmisto koneellani. Katsoin
sitä. Joten se oli ihan sattumaa.
Yritin korjata jotain, otin ohjelmiston
koneelleni ja sitten se oli valmiina
analysoitavaksi, jopa vähän
dataakin. Tiesin miten se toimii
käytännössä. Ja, kyllä, jos joku
haluaisi pääsyn siihen ohjelmistoon,
se olisi aika helppoa, koska he voisivat
vain palauttaa poistetun datan joltain
koulussa olevalta koneelta.
Ehkä joku ei edes poista sitä
äänestysohjelmistoa koulujensa koneilta,
tai ehkä joku voisi vain varastaa
yhden niistä USB-muisteista, joita
oli käytetty asennuksiin. En edes
usko, että sitä huomattaisiin.
H: Kiinnostavaa, todellakin. Mainitsitte
esityksessänne, että ohjelmisto oli
BSI:n sertifioima. Että ne väittävät
Open Web Application Security Projectin
sertifioineen sen. Mutta kuinka näin
rikkinäinen järjestelmä voi olla näiden
tahojen sertifioima alun perin? Mikä on
mennyt pieleen sertifiointiprosessissa?
Tämä siis tapahtui. Tarkoitan, että miksi
ei käyttää sertifioitua... Miksi me
sertifioimme mitään alun perinkään, jos
se on sertifioitu näin rikkinäisenä?
T: Luulen, että ensimmäiseksi - kuten
olemme maininneet esityksessämme -
ei ole olemassa laillisia vaatimuksia.
Et tarvitse sertifiointia sille, että
ohjelmistoa voi käyttää vaaleissa,
Saksassa tai useimmissa paikoissa
Saksassa. Ja lisäksi, tämä
kuvakaappaus, jota näytimme koskien
OWASP:ia ja BSI:tä, oli vain AKDB:n
markkinointimateriaalia. En usko, että
siinä oli oikeaa sertifiointia mukana.
Me emme tiedä, onko BSI ikinä nähnyt tätä
ohjelmistoa vai ovatko he vain laittaneet
sinne, sanoneet BSI:n sertifioineen sen
tai BSI:n standardien olleen mielessä.
Heillä on jo "IT Grundschutz". Ehkä
he ovat yrittäneet implementoida sitä
tämän järjestelmäarkkitehtuurin jälkeen,
mutta BSI ei ole tarkastanut sitä. En
usko, että ohjelmistolla
on oikeaa sertifiointia.
J: Lisään vain muutaman yksityiskohdan
tähän. Se ei ole oikeasti sertifiointi.
He vain sanovat, että seuraavat BSI:n ja
OWASP:in ohjeistuksia. Luulen, että se
oli myös näin sanoitettu heidän
sivuillaan. Ei ole oikeaa sertifiointia
tämän takana, toistaiseksi.
H: Kiitos vastauksestanne. "Tiedättekö
sattumalta, kuinka kunnat
julkistavat vaalitulokset?"
J: En tiedä yksityiskohtaisesti miten se
tapahtuu. Kun me luovutamme tuloksemme,
ne siirretään toiseen ohjelmistoon.
Ja sitä pidemmälle en ole
nähnyt. Ne päätyvät
tietojärjestelmään ja ne siirretään
sähköisesti. Siinä luodaan aluksi
alustava tiedosto ja lopulta
siitä luodaan lopulliset tulokset.
En kuitenkaan tiedä, miten se
toimii, mutta äänestystulokset, jotka
luodaan OK.VOTE:lla menevät varmasti
lopulliseen tulokseen. Ehkä
välissä on joku paperiin perustuva
toimintatapa. En todella
tiedä, jos he käyttävät dataa
koneella vai dataa paperilla.
Mutta se ei loppupeleissä
muuta paljoa.
H: OK, loppumetreillä ollaan.
Viimeinen kysymys on: "Kokemuksienne
perusteella, kuinka käytännöllistä tai
kallista on laskea äänet uudelleen käsin,
ja näittekö tälläistä tapahtuvan?"
T: Luulen, että tämä vaihtelee
äänestyksestä toiseen ja kaupungista
toiseen. Jos kyseessä on pieni
kylä, äänet voisi laskea helposti
uudelleen. Mutta jos kyseessä on iso
kaupunki, kuten esimerkiksi München
miljoonine äänineen, ja ne
pitäisi laskea ne uudelleen,
se viivästyttäisi ääntenlaskua tai
tuloksia aika paljon. Ja sillä voisi
olla huonoja vaikutuksia, jos sattuisi
käymään, että ohjelmistossa on tapahtunut
manipulointia ja kaikki äänet
jouduttaisiin laskemaan käsin uudelleen.
J: Käsin laskeminen olisi todellakin
erittäin kova työ, koska niissä
lipukkeissa on jopa 70 ääntä kussakin.
Niiden yhteenlaskeminen on virhealtista
jos se tehdään käsin. Se on vaikeaa.
Ja minun tietääkseni, sitä ei ole
tehty yleisesti vaalien
jälkeen. Yritin etsiä
Internetistä jotain tästä. Löysin
vain PDF-tiedoston, jossa sanottiin,
ettei kaikkien lipukkeiden ja tuloksen
uudelleenlaskeminen ole tehtävissä.
Joten tehdään vain ylätason tarkastus:
onko protokolla suoritettu loppuun? Entä
erikoisäänet, ne jotka eivät
olleet ihan selkeitä? Ei niitä
kaikkia lipukkeita lasketa uudelleen,
sen perusteella mitä ymmärrän.
H: OK. Kiitos todella paljon, Tobias
ja Johannes vastauksistanne.
Kiitos uudelleen esityksestänne.
J: Kiitos.
H: Kiitos.
rC3-tunnusmusiikkia
Subtitles created by c3subtitles.de
in the year 2020. Join, and help us!
Translated by Markus Aurala
(ITKST56 course assignment at JYU.FI)