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)