Lietuvos e-sistemų (ne)kokybė: pažeidžiamumai EVV
Kęstas Gudinavičius, 2010-07-10 07:23:25

Kartu su interneto portalu DELFI parengėme straipsnį apie Elektroninės valdžios vartų sistemoje www.epaslaugos.lt esančias spragas, kadangi problemos jau yra tvarkomos, daugeliui saugumu besidominčių skaitytojų bus įdomu susipažinti su aptiktų problemų techninėmis detalėmis bei aptarti tai, kas liko už DELFI straipsnio ribų.

Iš tiesų aptiktus pažeidžiamumus galima būtų klasifikuoti kaip labai didelio pavojaus, kadangi jie leidžia gauti priėjimą prie bet kurio LR piliečio, asmeninių duomenų – elektroninių deklaracijų, informacijos apie darbo užmokestį bei visų kitų duomenų, kurie yra pasiekiami naudojantis Elektroninės valdžios vartais. Praeityje yra pasitaikę galimybių gauti asmeninius duomenis iš atskirų sistemų, pvz. Sodros EGAS , tačiau šiandien mes pastebėjome galimybę prieiti prie VISŲ tokių elektroninių sistemų duomenų, prieinamų per EVV. Tokia centralizuota sistema pati savaime turi būti sukurta labai kokybiškai, kadangi pažeidžiamumai joje gali vesti prie nepamatuojamų padarinių, tačiau Lietuvoje taip jau yra, kad į nacionaliniam saugumui reikšmę turinčių sistemų kūrimą yra įtraukiami programuotojai, dizaineriai, javascript meistrai, bet tik ne informacijos saugumo specialistai. Ir tai yra ne tik šios sistemos savininkų ar kūrėjų problema, tokia graudi padėtis yra būdinga visos mūsų šalies mastu, galbūt šią padėtį pakeis panašaus pobūdžio straipsniai, kas žino?

Taigi apžvelkime techninę pažeidžiamumo pusę: norint naudotis Elektroninės valdžios portalo www.epaslaugos.lt teikiamomis paslaugomis, reikia patvirtinti savo tapatybę, kuriai nustatyti galime pasirinkti vieną iš siūlomų būdų: būti komercinio banko internetinės bankininkystės sistemos vartotoju, turėti  asmens tapatybės kortelę su integruotais skaitmeniniais sertifikatais arba pateikti asmeninį sertifikatą, išduotą Skaitmeninio sertifikavimo  arba Vį Registrų centrų. Taigi, mūsų asmeniniai duomenys (žinomi valdžiai) yra saugūs tol, kol yra saugi kiekviena išorinė sistema atsakinga už tam tikrą tapatybės identifikavimo būdą.

Panagrinėkime identifikavimo mechanizmo saugumą, jungiantis prie Elektroninės valdžios portalo naudojant asmens tapatybės kortelę (ATK) su integruotais skaitmeniniais sertifikatais. Už šį tapatybės identifikavimo būdą yra atsakingas pats epaslaugos.lt portalas, kuris vartotojui pateikia nedidelę Java programą, kuri nuskaito asmens tapatybės kortelėje  esančius duomenis įvedus ATK PIN kodą ir sugeneruoja autentifikacijos paketą, perduodamą epaslaugos.lt portalo web aplikacijai.

Keletas pagrindinių autentifikacijos paketą sudarančių parametrų yra šie: TIME, PERSON_CODE, PERSON_CERT, SIGNATURE. Parametro „TIME“ reikšmė yra dabartinis sistemos laikas sekundės tikslumu. Šio parametro tikslas turėtų būtį apsaugojimas nuo pakartojimo atakos, suteikiant autentifikacijos paketui tam tikrą galiojimo laiką, tačiau parametro reikšmė yra nustatoma kliento pusėje – web aplikacija apie jį nieko nežino, o tai reiškia, kad galima sugeneruoti autentifikacijos paketą ateičiai, bet iš tiesų čia menka blogybė palyginus su tuo, kad „TIME“ parametras išvis nėra tikrinimas  web aplikacijos. Įsilaužėlis tam tikrais metodais perėmęs autentifikacijos paketą, galėtų neribotą laiką identifikuotis kitu asmeniu Elektroninės valdžios vartuose. Labai patogu.

Įdomiausias parametras yra „PERSON_CODE“, kurio reikšmė yra asmens kodas paimtas iš ATK integruoto skaitmeninio sertifikato. Logiškai mąstant, kam reikia šio parametro, jeigu „PERSON_CERT“ parametre yra siunčiamas visas ATK esantis skaitmeninis sertifikatas iš kurio web aplikacija gali pasiimti reikalingus asmens duomenis, tokius  kaip vardas, pavardė, asmens kodas? Įrašius į „PERSON_CODE“ parametrą pasirinkto žmogaus asmens kodą sėkmingai prisijungiame prie Elektroninės valdžios portalo, kuris mus identifikuoja kaip kitą asmenį. Šio asmens vardu mes galime pasiekti krūvą Elektroninės valdžios portalo teikiamų paslaugų, taip pat prisijungti prie VMI EDS ar Sodros EGAS sistemų. Ar sunku būtų gauti konkretaus žmogaus asmens kodą? Užtenka žinoti tik gimimo datą bei nusiųsti teoriškai apie 999 HTTP užklausas, praktiškai – 99. Apibendrinant, asmuo turintis ATK su integruotais sertifikatais Elektroninės valdžios vartuose gali pasisavinti bet kurio kito asmens tapatybę. Tikriausiai pagalvojote, kad tokį piktavalį galima būtų lengvai identifikuoti ir nubausti, kadangi jis naudotųsi savo ATK, o svetima ATK nepasinaudotų, nes nežinotų PIN kodo? Viskas daug paprasčiau.

Autentifikacijos paketo parametro „SIGNATURE“ reikšmė yra naudojama perduodamų duomenų vientisumui užtikrinti. Standartiškai, perduodami duomenys turėtų būtį pasirašomi ATK esančiu privačiu raktu, kuris dalinai yra prieinamas tik įvedus ATK PIN, o web aplikacija naudodamasi ATK esančiu viešuoju raktu patikrintu parašo taisyklingumą. Epaslaugos.lt portalo kūrėjai pasuko sunkiai suvokiamu keliu: patys sugeneravo privatų raktą ir panaudojo jį Java programos funkcijoje, kuri atsakinga už parašo generavimą. Tokia koncepcija visiškai eliminuoja ATK PIN kodo ir su juo susijusio privataus rakto reikalingumą, o įsilaužėliui užtenka trumpam „pasiskolinti“ svetimą ATK ir nuskaityti joje saugomą skaitmeninį sertifikatą, kurio nuskaitymas nereikalauja ATK PIN. Po to įsilaužėlis galėtų neribotą laiką identifikuotis  Elektroninės valdžios portale „pasiskolinto“ skaitmeninio sertifikato savininko vardu arba anonimiškai išnaudoti anksčiau aprašytus pažeidžiamumus.

Keisčiausia yra tai, kad nors ir nėra naudojamas vartotojo ATK esantis privatus raktas, Java programa, atliekanti pagalbinę funkciją vartotojo identifikavimo procese, vis tiek prašo įvesti ATK PIN kodą. Java programos išeities tekstas puikiai paaiškina šią mįslę: pasirenkant sistemoje ar ATK esantį skaitmeninį sertifikatą yra tikrinama ar su juo susietas privatus raktas yra tinkamas duomenų pasirašymui. Matyt, dėl šios funkcionalumo iliuzijos ir buvo pražiūrėtas saugumas portalo testavimo metu. 

Nuojauta sako, kad jeigu Lietuvoje būtų elektroniniai rinkimai, jie taip pat vyktų per Elektroninės valdžios portalą www.epaslaugos.lt, tad sunku nuspėti, kokią žalą galėtų padaryti piktų kėslų turintys individai. Pati Elektroninės valdžios, elektroninio parašo koncepcija yra tikrai naudinga ir sveikintina, tačiau kuriant vartus ir statant sienas, reiktų patikrinti ar jos nebuvo pagamintos iš popieriaus. Priešingai nei Latvijos pavyzdys, kuomet „Neo“ slapyvardžių pasivadinęs patriotiškas įsilaužėlis perėmė visus VMI EDS analogo duomenų bazėje esančius duomenis ir po to juos viešino, galiu užtikrinti, kad Elektroninės valdžios vartų saugumo tyrimo metu nenukentėjo nei vieno piliečio asmeniniai duomenys. Reikia tikėtis, kad aprašyti pažeidžiamumai nebuvo jau kurį laiką išnaudojami piktavalių žmonių bei ar nėra sistemos galinės durys, kurias varsto, pavyzdžiui, Rusijos spec. tarnybos.


Komentarai

Vardas:
Komentaras:

Copyright © 2005 - 2010, UAB „Critical Security“