Slo-Tech - Spet je tisti dan, ko moram državnim biričem nakazati
Nič, dvignem telefon in v slabi uri sedim na kavi skupaj s tremi ljudmi, ki se imajo za etične hekerje. Prepričam jih, da svoje znanje usmerijo na spletne dacarje in mi pomagajo ugotoviti, ali gre le za paranojo Googla, Mozzile in moje malenkosti, ali pa je vse res.
Ko imajo dacarji poslanstvo
Preden eDavke s kolegi razsekamo na prafaktorje, moramo izpostaviti njihovo poslanstvo. eDavki so "spletni servis za elektronsko poslovanje z Finančno upravo Republike Slovenije. Prek eDavkov imajo zavezanci možnost udobno, varno, enostavno in z nizkimi stroški po elektronski poti (prek interneta) oddati davčne obrazce. Obrazci v elektronski obliki so venomer v skladu z veljavno zakonodajo". eDavki so torej spletni portal, prek katerega lahko davkoplačevalci oddajamo svoje vloge kar preko interneta, namesto da bi se mučili v vrsti na dežurni pošti oz. pred okenci na davkariji. Vendar, ker lahko imajo davčne vloge pomembne posledice, obenem pa so polne osebnih in davčnih podatkov, je nujno, da je uporaba tega "spletnega servisa" ustrezno zavarovana.
Glavna problema pri zavarovanju spletne komunikacije sta potrditev pristnosti strežnika (da komuniciramo s FURS, ne z lopovi) in šifriranje komunikacije (da nas sliši samo FURS, ne pa tudi lopovi). V ta namen se na spletu uporabljata dve ključni rešitvi, in sicer t.i. infrastruktura javnih ključev (angl. Public Key Infrastructure – PKI) za prvi problem, ter protokol za šifriranje komunikacije TLS (angl. Transport Layer Security) za drugega.
Ko NLB postane vzor in primer dobre prakse
Seveda sem se s hekerji spustil v drobovje same infrastrukture, vendar smo najprej želeli preveriti, ali je naša hipoteza o katastrofalnem stanju eDavkov sploh pravilna. Zato začnemo testirati eDavke s Qualysovim SSL testom. Ta zabetonira hipotezo: za varovanje slovenskih državnih spletnih strani je zelo slabo poskrbljeno. Stran trenutno dobiva oceno "T", kar pomeni, da ne zbere niti 20 od 100 možnih točk, kolikor jih je potrebnih za
Čeprav levji delež krivde za opisano stanje nosi FURS, ki bi tako pomembno stran vsekakor moral bolje zavarovati, gre del krivde pripisati tudi Ministrstvu za javno upravo (MJU), pri katerem delujeta državna overitelja SIGOV-CA in SIGEN-CA; Ministrstvu za izobraževanje, znanost in šport (MIZŠ), pri katerem deluje inšpektor za elektronski podpis, ki že več kot deset let dovoljuje takšno stanje; ter seveda SI-CERTU, ki bi lahko manj hekal in več opozarjal na prav take sistemske pomanjkljivosti.
FURS ali ruski hekerji?
Potrditev prisotnosti strežnika in šifriranje komunikacije sta torej ključna dejavnika varnosti. PKI deluje kot sistem zaupanja in ugleda. Ko v brskalniku odprete določen spletni naslov, npr. https://edavki.durs.si, si seveda želite, da bi komunicirali z lastnikom te domene, torej FURS-om, ne pa z ruskimi hekerji, ki so vam uspeli podtakniti ponarejeno spletno stran. Kot vemo, brskalnik to preveri tako, da levo od naslova prikaže zaprto zeleno ključavnico (🔒). Ta nam zagotavlja, da je brskalnik prepričan, da komunicira s pravo domeno, in na varen (šifriran) način. Način, kako brskalnik to preveri, je pa sledeč. Brskalnik spletno stran najprej zaprosi za njeno kvalificirano digitalno potrdilo (tj. za strežniški certifikat). To potrdilo sestoji iz javnega ključa spletne strani, ter podpisov zaupanja vrednih izdajateljev (npr. Verisign, Thawte, Comodo). Ti izdajatelji s svojimi podpisi kriptografsko potrdijo, da so digitalno potrdilo zares izdali osebi, ki upravlja z domeno edavki.durs.si. Seznam zaupanja vrednih izdajateljev je vgrajen v brskalnik. Za uvrstitev na seznam mora izdajatelj pridobiti ustrezne akreditacije, dolgoročno pa so na njem lahko le tisti izdajatelji, ki imajo preverjeno zgodovino skrbi za varnost pri izdajanju ključev (torej ne Diginotar). Če torej brskalnik od strežnika prejme certifikat, ki so ga podpisali zaupanja vredni izdajatelji, ve, da lahko strani zaupa, sicer pa ne. Ker SIGEN-CA in SIGOV-CA nista uvrščena v seznam zaupanja vrednih izdajateljev, brskalnik za eDavke ne ve, ali stran res pripada osebi, zapisani v certifikatu, in to uporabniku jasno in glasno sporoči (glej sliko).
FURS svojega certifikata ni pridobil pri katerem od zaupanja vrednih overiteljev (niso dragi), temveč od vladnega overitelja SIGOV-CA. SIGOV-CA, za katero skrbi MJU, pa nikoli ni prestala (ne zastonj, a tudi ne pretirano dragih) mednarodnih certifikacij, ki bi ji omogočile, da bi jo glavni brskalniki dodali na svoje sezname zaupanja vrednih overiteljev. Posledično SIGOV-CI brskalnik ne zaupa in uporabnika na to seveda opozori. Da se to ne bi dogajalo ob vsakem obisku, FURS v navodilih na svoji spletni strani uporabnike poziva, naj se za to opozorilo ne zmenijo. Oziroma, če opozorila ne želijo več gledati, naj korenske certifikate SIGOV-CA sami ročno dodajo v seznam zaupanja vrednih potrdil v svojem brskalniku. Namesto, da bi sledili splošno sprejetim standardom, raje svoje uporabnike prosijo, naj jih kršijo.
To je v resnici že zelo stara zgodba in večina vas je v preteklosti prav to že storila, ker se vam več ni ljubilo gledati brskalnikovega opozorila. No, zdaj boste morali to narediti znova, ker je SIGOV-CA pred kratkim zamenjala svoje certifikate z novimi. Posledično so
Razlogi, zakaj MJU FURS-u ne dovoli kupiti komercialnega certifikata (kot je to npr. urejeno v sosednji Avstriji ... in najbrž tudi v vsaki drugi normalni državi), niso javno znani. Stroški sprotne nabave t.i. "wildcard" certifikata za zavarovanje spletnih strani vseh vladnih agencij so zanemarljivi že v primerjavi s stroški poslovnih večerij v dvoje nekdanjega ministra za pravosodje.
Država bi s tem varnostno izjemno pridobila, prav nič pa izgubila (
Kot rečeno, celo NLB, ki ima tudi svojega overitelja (NLB-CA), več ne "škrtari" tako zelo, da bi za NLB Klik še vedno uporabljala samopodpisane certifikate.
A dacarji se niso “ustavili” (verjetno bi moral zapisati “šli naprej”), tako navodila za prevzem novih SIGOV-CA certifikatov niso zavarovana s šifrirano povezavo, prav tako pa ne tudi MJU-jeva spletna stran, kjer se te certifikate prevzame. Na njej je sicer takoj na vrhu napis "Ti podatki so dostopni tudi prek zašifrirane povezave.", a ta povezava je spet http, ne https, se pravi, nešifrirana (?). Težko si je predstavljati, kako lahko država omogoča prevzem njenih ključnih strežniških certifikatov po nešifrirani povezavi. Vse to ustvarja odlične okoliščine za postavitev ponarejenih eDavkov za namene kraje uporabniških podatkov s pomočjo phishinga, targetiranih napadov, pohekanih odprtih wifijev in podobno. Da je vse skupaj še lažje, te storitve niso enotno zbrane pod domeno .gov.si (Vlada RS), ampak razmetane po različnih .si domenah, tako da je na prvi pogled praktično nemogoče povedati, ali si na dejanski vladni strani ali na poceni ponaredku.
Dva gigabajta neresnosti prosim
Drug problem, torej šifriranje komunikacije zavoljo preprečevanja prisluškovanja ter motenja, rešuje protokol TLS. Uvodno dejanje vzpostavitve povezave https je dogovor o šifrirnem algoritmu, ki ga bosta brskalnik in strežnik uporabila za zavarovanje nadaljnje komunikacije. To se zgodi takoj, ko v brskalniku odprete povezavo https. Brskalnik se poveže na strežnik edavki.durs.si, na vrata 443, ter strežniku pošlje t.i. "client hello" paket. V njem strežniku javi, katere kriptografske algoritme podpira. Če uporabljate sveže nadgrajen Chrome, Firefox, ali Edge, že imate vse najnovejše. Strežnik na to odgovori z paketom "server hello". V njem še sam sporoči, katere algoritme podpira. Brskalnik nato vzame prvega (tj. najboljšega) od tistih, ki jih ponuja strežnik in ki ga podpira tudi sam.
Žal pa nabor algoritmov, ki jih podpira strežnik eDavkov, ni najbolj sodoben. Strežnik ponuja le dve različici starejšega algoritma 3DES, ter dokazano zlomljeni algoritem RC4. Ne podpira pa novejšega algoritma AES, ki trenutno velja kot uradni standard. Prav tako ne podpira nobene od modernih funkcij, ki še dodatno zavarujejo komunikacijo, kot sta "perfect forward secrecy" (PFS) in "certificate pinning". PFS je tehnologija, ki preprečuje naknadno dešifriranje že zajetih komunikacij. Na kratko to pomeni, da če vam je nekdo pol leta prisluškoval in v tem času zajel več deset vaših sej z eDavki, danes pa je prišel še do kopije zasebnega ključa eUprave, vseeno ne more odkleniti vseh preteklih sej. Certificate pinning pa močno otežuje postavljanje ponarejenih spletnih strani. Če ste v preteklosti že pogovarjali s pristnimi eDavki, in bi ti podpirali pinning, bi si brskalnik zapomnil njihov certifikat. Če bi kasneje obiskali stran, ki se pretvarja, da je eUprava, bi brskalnik videl, da ima nov certifikat in bi vseeno "zajokal". Oboje je danes standard na pomembnejših spletnih straneh.
Poenostavljeno gledano, FURS še vedno uporablja algoritme, ki jih stroka že več kot deset let odsvetuje, in ki že zdaj omogočajo določene napade. Od državne institucije, ki de facto upravlja državno blagajno, takšne neresnosti res ni bilo pričakovati.
Vdor za pet centov
"Predstavljene “napake” so bolj kot ne teoretične, uporabniki niso zares ogroženi," vas bo država prek drugih medijev kot odgovor na ta članek prepričevala cel teden. Vendar … žal … ne bodo govorili resnice. Andraž Brodnik je pred časom prikaz povsem realen napad na SIGOV-CIno patetično varnostno infrastrukturo. S pomočjo prosto dostopnega orodja "mitmproxy" je postavil kopijo SIGOV-CIne spletne strani za prevzem certifikatov (tiste, ki ni zavarovana s https). Takšno orodje bi mirno lahko uporabil, če bi se predstavljal kot prosto dostopen WiFi na kakšnem javnem kraju. Vsi uporabniki povezani nanj, bi namesto pravega SIGOV-CA korenskega certifikata prevzeli njegov lažni certifikat. To bi mu omogočilo, da lahko potem postavi katerokoli lažno spletno stran, vključno s spletno banko. Demonstracijo si lahko ogledate v sledečem videoposnetku.
Psi lajajo, kravana gre dalje
Končal bom s slovenskim pregovorom o odkrivanju tople vode. Nič kar ste prebrali, ni novo. Vse to državljani vemo že leta. In tudi državni organi se tega “zavedajo” (vstavi besedo za stanje pod vplivom katerokoli psihadelične droge). Zakaj MJU to dovoljuje? Zakaj pristojni Inšpektor za elektronski podpis (od l. 2013 pri MIZŠ) že od leta 2003 izvaja inšpekcijske nadzore, pri katerih nikoli ne ugotovi nobenih kršitev (res, niti enkrat samkrat)? Zakaj jim glede tega ne protestira SI-CERT?
Če preberemo komentar MJU, zagotavljanje varnosti uporabnikom niti ni nek cilj (