Nakon što je CROSO portal bio nedostupan deset dana radi pripreme nove verzije aplikacije, u ponedeljak 9. januara objavljena je nova verzija SecurityTray aplikacije koja je u sebi sadržala ozbiljan i nedopustiv bezbednosni propust.

SecurityTray aplikacija služi da uspostavi komunikaciju između sajta portala i čitača pametnih kartica, i na taj način predstavlja alternativu za ranije korišćene Java aplete ili Native Messaging ekstenzije.

Sadržaj

  1. SecurityTray aplikacija
  2. Ukratko o SSL sertifikatima
  3. CROSO pre 30. 12. 2016.
  4. CROSO 9. januara 2017.
  5. Zaključak o servisima e-uprave
  6. Najnoviji CROSO SecurityTray

SecurityTray aplikacija

Aplikacija prvo pokreće lokalni veb servis na računaru korisnika (localhost), a zatim koristeći HTTP CORS mehanizam uspostavlja komunikaciju između sajta i aplikacije preko HTTP API-ja. Na taj način sajt može da zatraži od lokalne aplikacije da koristeći midlver i karticu u čitaču izvede operaciju elektronskog potpisivanja.

Kada se veb sajtu pristupa preko HTTPS protokola (zeleni katanac, zaštićena i šifrovana komunikacija), HTTP CORS mehanizam zahteva da i lokalni veb servis bude obezbeđen na isti način. I tu nastaje problem, koji ne postoji u slučaju kada se koriste druga pomenuta rešenja.

Svaki HTTPS sajt ili servis, pa i ovaj lokalni koji obezbeđuje SecurityTray aplikacija, zahteva dve stvari (1) par ključeva (tajni i javni), gde se tajni ključ čuva poverljivo i koristi u formiranju zaštićenog kanala i (2) SSL sertifikat u koji se ugrađuje javni ključ i kojim se dokazuje identitet sajta, odnosno veb servisa.

Oba ova dela moraju da budu dostupni instaliranoj SecurityTray aplikaciji, bilo da se generišu pri prvom pokretanju ili da su pripremljeni unapred i uključeni u instalaciju aplikacije.

Ukratko o SSL sertifikatima

SSL sertifikat poseduje dva polja kojima se dokazuje identitet sajta. Subjekat sertifikata (Subject, npr. google.com) i izdavalac sertifikata (Issuer). Izdavalac je najčešće neko telo od poverenja (engl. Certificate Authority) koje nakon što utvrdi da je upravo na primer Google vlasnik određenog para ključeva izdaje sertifikat. Izdati sertifikatu navodi google.com kao ime subjekta i sadrži javni ključ iz pomenutog para.

Pri povezivanju na google.com, veb pregledač dobija kopiju ovog SSL sertifikata i potom po standardima definisanoj proceduri proverava da li je izdavalac poznat i pouzdan, da li je subjekat sertifikata upravo google.com i da li izdavalac sertifikata nije u međuvremenu opozvao sertifikat. Ukoliko je provera uspešna, znamo da je Google vlasnik para ključeva i pregledač može da formira zaštićeni kanal.

Izdavalac može da bude i posrednik, tj. da ima svog izdavaoca, pa pri proveri SSL sertifikata uvek govorimo o proveri lanca sertifikata, gde u vrhu (engl. root) treba da stoji poznat i pouzdan sertifikat, a svaki sertifikat iz lanca je validan u odnosu na prethodni. Krajnji sertifikati (bez CA oznake) ne mogu da budu izdavaoci, tj. ne mogu da grade dalji lanac. SSL sertifikati su po pravilu krajnji sertifikati.

Sertifikat se smatra pouzdanim ukoliko se nalazi u tzv. Trusted Root skladištu. Veb pregledači Internet Explorer i Google Chrome na Microsoft Windows operativnom sistemu koriste Windowsovo Trusted Root skladište, dok pregledač Mozilla Firefox koristi svoje skladište. Drugi sistemi i programi imaju sopstvena skladišta.

Uloga izdavaoca sertifikata je da postanu deo ovih skladišta, ili da na neki drugi način postanu subjekti od poverenja (npr. postanu ovlašćeni od strane države), i da zatim utvrđuju identitet subjekata, izdaju im sertifikate i u slučaju incidenata iste opozivaju, najčešće sve uz novčanu nadoknadu.

Pored sertifikata koje ugrađuje proizvođač, korisnik i administrator računara ili mreže mogu da dodaju i dodatne sertifikate u ova skladišta. Na primer sertifikati domaćih sertifikacionih tela najčešće nisu uključeni u pomenuta skladišta.

Kada su u Trusted Root skladištu samo pouzdani izdavaoci sertifikata korisnik koji poseti google.com, sajt državne uprave ili sajt svoje banke i u uglu vidi zeleni katanac kao obaveštenje da je konekcija bezbedna, odnosno ne dobije nikakvo sigurnosno upozorenje, može biti siguran da se povezao upravo na ovaj sajt i da napadači ne mogu da presretnu lozinke, podatke, naprave lažne transakcije i slično.

Ako se u Trusted Root skladištu nalazi i neki nepouzdan izdavalac, gde napadač iako na primer nije Google može da dobije google.com sertifikat, taj napadač bi mogao da presretne komunikaciju (npr. postavljanjem wi-fi mreže), podmetne ovaj lažni sertifikat i zatim presretne lozinke i podatke, preuzme identitet korisnika i na razne druge načine ugrozi bezbednost korisnika.

HTTPS je u osnovi bezbednog veba i interneta, aktivno se koristi od 2000-ih godina. Kako su otkrivani novi napadi i kako je uopšte rasla potreba korisnika da bezbedno koriste sve značajnije servise, u poslednjih 15 godina više puta su inovirane preporuke, protkoli i standardi, a veb pregledači su postali sve striktniji u proveri validnosti SSL sertifikata.

CROSO pre 30. 12. 2016.

U ranijoj verziji pre 30. decembra 2016. godine SecurityTray aplikacija je koristila SSL sertifikat čiji je izdavalac Sertifikaciono telo Privredne komore Srbije. Subjekat sertifikata je localhost (lokalni veb servis koji pokreće SecurityTray aplikacija). Privatni ključ koji odgovara ovom sertifikatu, što je bilo neophodno za ovo tehničko rešenje, je bio uključen u instalaciju aplikacije.

PKS CA je jedno od nekoliko sertifikacionih tela koja su ovlašćena da izdaju kvalifikovane elektronske sertifikate za elektronski potpis. U pitanju je vrsta elektronskog identiteta. Zakonom o elektronskom potpisu i podzakonskim aktima propisani su posebni uslovi koje ovi izdavaoci moraju da ispunjavaju, počev od dokumentovanja politike izdavanja i postupaka rada, posebnih kadrovskih resursa, posedovanje opreme, pa do nadzora nadležnog ministarstva.

Kvalifikovane sertifikate PKS CA izdaje u skladu sa objavljenom politikom kroz lanac izdavaoca:

PKS CA Root
  PKS CA Class1 - Kvalifikovani sertifikati
    izdati kvalifikovani sertifikati...

Istovremeno PKS CA izdaje SSL sertifikate kroz drugi lanac izdavaoca sa istim korenskim sertifikatom:

PKS CA Root
  PKS CA Class2 - IT resursi
    izdati drugi sertifikati

PKS CA ne objavljuje politiku izdavanja nekvalifikovanih sertifikata, ali bi po stručnoj praksi trebalo da je ima.

Pravilnik o bližim uslovima za izdavanje sertifikata, Sl. glasnik RS, br. 26/2008

Važeći podzakonski pravilnik nije sasvim jasan u vezi sa tim da li je dozvoljeno iz iste PKI hijerarhije (PKS CA Root) formirati podređena CA koja izdaju kvalifikovane i nekvalifikovane sertifikate, ali recimo da bi doslovna primena spornog člana bila nemoguća, a da postoji i sertifikaciono telo koje različite vrste sertifikata izdaje istim sertifikatom.

Uobičajna upotreba SSL sertifikata je da subjekat sertifikata čuva privatni ključ u tajnosti. Politike sertifikacionih tela takođe najčešće predviđaju da ukoliko dođe do kompromitacije privatnog ključa odgovarajući sertifikat odmah bude opozvan.

Privatni ključ localhost sertifikata koji se koristi u SecurityTray aplikaciji je bio uključen u javno objavljenu instalaciju aplikacije od samog početka, ali moguće da je PKS CA toga postalo svesno tek 23. decembra ujutro kada je sertifikat opozvan navodeći upravo kompromitaciju ključa.

Slažem se sa komentarima koji su se mogli čuti tada da PKS CA kao jedan od ovlašćenih izdavalaca kvalifikovanih elektronskih sertifikata ima previše važnu ulogu i da izdavanje ovakvog sertifikata (nepoznati subjekat, javno dostupan privatni ključ) čak i da je u skladu sa politikom PKS CA može da omogući neočekivane zloupotrebe. Sa te strane reakcija PKS CA je odgovarajuća. Činjenica da je takav sertifikat ipak bio izdat, a onda opozvan, pokazuje kako je nešto svakako zaškripalo u komunikaciji. Kako bilo, tog petka korisnici koji su koristili Internet Explorer ili Google Chrome su se suočili sa time da ne mogu više da pristupe CROSO portalu.

Sedam dana kasnije pristup portalu je ograničen radi najavljenih izmena.

CROSO 9. januara 2017.

Nakon deset dana pauze, objavljena je nova verzija SecurityTray aplikacije koja više nije koristila sertifikat PKS CA, već nešto mnogo gore.

Aplikacija je bez znanja korisnika u Trusted Root skladište dodavala svoj CA sertifikat koji može da izdaje druge sertifikate, menjajući ono što je do tada za njih radilo PKS CA. Privatni ključ ovog CA sertifikata je bez ikakve potrebe bio takođe uključen u instalaciju.

Napadač je mogao da iskoristi javno dostupan privatni ključ i da napravi bilo koji lažni SSL sertifikat.

Primer lažnog google.rs sertifikata koji bi napadač mogao da iskoristi

Na računarima svih korisnika koji bi instalirali SecurityTray aplikaciju bi takav lažni sertifikat bio označen kao pouzdan, što bi napadač mogao da iskoristi da ukrade lozinke, podatke ili preuzme identitet korisnika pri korišćenju servisa na internetu, e-bankarstvu, e-upravi i slično.

Problem bi postojao i u slučaju da privatni ključ CA sertifikata nije bio uključen u instalaciju, ali je ovim svakako postao očigledniji. Fomiranje sertifikacionog tela, naročito kada se taj novi sertifikat dodaje u Trusted Root velikog broja korisnika zahteva posebne mere bezbednosti u vezi za celokupnim životnim ciklusom tajnog ključa i visok stepen profesionalne odgovornosti. Sve i da privatni ključ nije bio očigledno javno objavljen, korisnici ne mogu da znaju kako je ključ nastao, gde je sve završila njegova kopija i ko bi mogao da ga zloupotrebi. To što je ključ objavljen, na neki način je ispala srećna okolnost jer je izazvalo brzu i efikasnu reakciju.

Prijavu incidenta poslao sam nešto pre 15 časova na više adresa, uključujući MTT, RATEL, kao i na kontakt adrese autora softvera do kojih sam uspeo da dođem.

Sutradan 10. januara nešto posle 13 časova isključen je pristup CROSO portalu, a već 11. januara pojavila se nova verzija SecurityTray aplikacije. Želeo bih da zahvalim Savi Saviću ispred Ministarstva za razumevanje ozbiljnosti situacije i angažovanje da se u saradnji sa zaposlenima u CROSO-u i dobavljačima aplikacije problem brzo otkloni.

Nova verzija SecurityTray aplikacije koristi samopotpisani krajnji sertifikat, bez dodavanja sertifikata u Trusted Root čime se sprečava mogućnost da ga napadač iskoristi za izdavanje drugih sertifikata.

Kako sertifikat nema izdavaoca, mora se definisati sigurnosni izuzetak kako bi se ovaj sertifikat bez izdavaoca označio kao pouzdan. Internet Explorer dozvoljava CORS mehanizam i kada localhost sertifikat nije validan, pa nije potrebna dalja aktivnost korisnika, a uputstvo za korisnike pregledača Google Chrome i Mozilla Firefox objašnjava kako je moguće ručno dodati izuzetak.

Instalacija nove verzije uklanja CA sertifikat iz Windowsovog Trusted Root skladišta koji je bio dodat prethodnom instalacijom. Za korisnike Mozilla Firefox pregledača koji su ovaj sertifikat ručno dodali po uputstvu su upućeni kako da sada isti ručno obrišu kako bi povratili bezbednost u korišćenju interneta.

Zaključak o servisima e-uprave

Ne bih dodatno komentarisao kako ovakav propust uopšte može da se dogodi i zašto kritični servisi e-uprave ne prolaze kroz dodatne provere pre nego što se neadekvatna rešenja objave korisnicima. Činjenica da servis može da bude nedostupan 10 dana radi izmena, ukazuje i na nepostojeći ili loše zamišljeni plan kontinuiteta.

Na ozbiljan propust sam morao da ukažem i početkom 2014. godine kada je portalu ePorezi Poreske uprave moglo da se pristupi bez ikakve autentikacije, zaobilazeći očitavanje podataka sa pametne kartice, prostim unošenjem JMBG osobe u čije ime se pristupa. I pored direktnog sastanka u PU za rešavanje tog problema tada bilo je trebalo znatno duže vremena koje se ne meri danima već, neverovatno, mesecima.

Osim neozbiljnosti u implementaciji važnih servisa i nedovoljne kadrovske posvećenosti, uočljiv je još jedan problem. IT se često menja, objavljuju se nove verzije softvera, ispravljaju se do tada nepoznati propusti i menja preporučena praksa. Određeno rešenje e-uprave namenjeno opštoj javnosti i korisnicima koji imaju svoje računare, koje koriste na različite načine ne može da se uvede i zaboravi, već mora da se ažurira, menja i prilagođava novim okolnostima.

Situacije u kojima prolaze godine pre nego što se rešenje prilagodi na novu verziju Jave, pa korisnici moraju da ukidaju bezbednosne zaštite i ugrožavaju svoj računar i podatke, ili gde neke aplikacije e-uprave ne podržavaju Windows 10 ni dve i po godine nakon njegovog objavljivanja prosto nisu dopustive.

Stoji i opaska kako skoro svi uvedeni servisi zahtevaju računar i Windows operativni sistem. Kao da korisnici drugih platformi nemaju pravo na e-upravu. Podrška za m-government se najavljuje kao nešto potpuno novo. Nadam se da je to šansa da upravo postojeća veb rešenja budu zamišljena tako da rade na svim platformama i operativnim sistemima, a ne kao alternativa zasnovana na SMS-u i USSD kodovima.

Ne mogu da se ne setim i situacije sa uslugom zamene saobraćajne dozvole na portalu eUprava, koja mi je posebno bliska jer je dobavljač iskoristio moje open-source rešenje za čitanje lične karte. Nakon toga u avgustu 2014. godine MUP je počeo da izdaje nove lične karte, a već u septembru sam objavio novu verziju open-source koda. Rešenje na portalu eUprava nije ažurirano sve do polovine 2015. godine, čime je svima sa novim ličnim kartama onemogućena zamena saobraćajne preko portala. Čak i tada Java aplet nije ispravno potpisan, pa je za učitavanje i korišćenje usluge potrebno posebno podešavanje računara i isključivanje bezbednosnih postavki.

Najnoviji CROSO SecurityTray

Poslednje tehničko rešenje SecurityTray aplikacije je primereno svrsi i ne ugrožava bezbednost korisnika, ali je korisnički doživljaj pri korišćenju mogao da bude bolji.

Najpre, instalaciona procedura je mogla samopotpisani localhost sertifikat da doda u Windowsova skladišta Trusted People i Other People. Trusted People je dokumentovano skladište za dodavanje izuzetka za samopotpisane sertifikate koji inače ne učestvuju u proveri i formiranju lanca.

Trusted People Certificates issued to people or end entities that are explicitly trusted. Most often these are self-signed certificates or certificates explicitly trusted in an application such as Microsoft Outlook

U ovom slučaju korisnici ne bi morali da isključuju postavke u Google Chrome pregledaču, a smanjuje se rizik da neka nadogradnja Windowsa ili Internet Explorera 11 spreči komunikaciju između lokalnog servisa i veb sajta u ovom pregledaču.

Za Mozilla Firefox, preporučeno rešenje za programersko dodavanje izuzetka jeste ubacivanje sertifikata u Servers listu NSS skladišta (kako bi sertifikat bio dostupan) i upisivanje njegovog otiska u datoteku cert_override.txt unutar korisničkog profila. Takođe, kada bi instalacija ovo radila automatski, izbegava se potreba za ručnom intervencijom korisnika.

Automatsko dodavanje izuzetka, bez intervencije korisnika

Zadovoljstvo korisnika bi bilo bolje i ako bi programeri u lokalni HTTPS server i njegov HTTP API dodali / rutu sa nekom razumnom porukom, tipa „Instalacija SecurityTray aplikacije je uspešna“ uz eventualnu mogućnost dijagnostike komunikacije sa čitačem. Korisnici bi tako mogli da provere instalaciju aplikacije, te da li podešavanja eventualnog lokalnog firewalla ili antivirusa ometaju njen rad. Trenutno rešenje predviđa da se korisnicima ili prikazuje greška HTTP 404 kao potvrda da aplikacija radi (!) ili pun ekran đubreta koje se ispisuje kada se pristupi /getTicket stranici lokalnog servisa.