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)