Gyventojų registro tarnybos siūloma elektroninio parašo formavimo ir tikrinimo programinė įranga „SIGNA“ yra turbūt vienintelis lietuviškas produktas geriausiai atitinkantis specifikacijos ADOC-V1.0 reikalavimus. Kvalifikuotų sertifikatų savininkai naudodami šią programinę įrangą gali sudaryti ir tikrinti oficialių „GeDOC“, „GGeDOC“, „BeDOC“ ir „CeDOC“ grupių elektroninius dokumentus. Pabandykime paanalizuoti šios programos naujausios 1.0.0.v20100702-1494 versijos saugumą.
„SIGNA“ programa yra parašyta „Java“ kalba, tad tokie pažeidžiamumai kaip buferio perpildymas, kuris buvo aptiktas analogiškoje programoje „DigiDoc“, iškarto atkrenta, kadangi automatiškai yra tikrinamos simbolių masyvų ribos, jeigu ir būtų aptiktas buferio perpildymo pažeidžiamumas tai tik pačioje Java virtualioje mašinoje, todėl šiuo atveju ieškosime programos projektavimo klaidų. Tokio tipo klaidos atsiranda dėl nepakankamai gerai apgalvoto programos funkcionalumo. Akcentuojant saugumą, programos projektuotojai ar programuotojai nenumato visų reikiamų apsaugų tam tikram programos veiksmui, kuris po to gali būti išnaudotas kenkėjiškiems tikslams.
ADOC specifikacijoje nurodyti konkretūs failų tipai, kurie gali būti patalpinti konteineryje, jų tėra 11, todėl bandant įkelti, pavyzdžiui, vykdomąjį failą yra rodomas klaidos pranešimas. Jeigu rastume būdą kaip įterpti norimo tipo failą į konteinerį, galėtume tai išnaudoti socialinės inžinerijos atakose. Kenkėjiškus ADOC formato failus įsilaužėliai galėtų panaudoti įsilaužimui į paprastų vartotojų ar valstybės tarnautojų kompiuterius. Nuojauta kužda, kad failų tipų tikrinimas atliekamas tik įkeliant failus į konteinerį, o bandant atidaryti failą iš jau suformuoto konteinerio toks tikrinimas nėra atliekamas.
orint patikrinti spėjimus ir atlikti reikiamus veiksmus pirmiausia reikia suprasti ADOC failo formatą. Net ir neskaičius specifikacijos, o vien tik pažvelgus į suformuoto „.adoc“ failo antraštę matosi, kad tai yra ZIP formato failas. Nieko nelaukdami išarchyvuojame „.adoc“ failą, mano atveju, pilnas failo pavadinimas yra „Dokumentas.adoc“. Kaip matome žemiau, archyvas savyje talpina keletą XML formato failų, kuriuose yra aprašytos konteinerio ypatybės, bei patį į konteinerį patalpintą failą „Dokumentas.pdf“.
C:\>tree /A /F Dokumentas
Folder PATH listing
C:\DOKUMENTAS
| Dokumentas.pdf
| mimetype
|
+---META-INF
| manifest.xml
| relations.xml
|
\---metadata
signableMetadata0.xml
unsignableMetadata0.xml
Labiausiai intriguojantys failai yra „manifest.xml“ ir „relations.xml“. Pirmajame yra nurodomi ADOC konteinerio dalių MIME tipai, o antrajame – konteinerio dalių tarpusavio ryšiai. Abejuose failuose vietoje „Dokumentas.pdf“ įrašome „Dokumentas.exe“ taip pat pakeičiame vykdomuoju failu ir patį failą „Dokumentas.pdf“. Viską suarchyvavę, gauname sveiką ADOC formato failą, kuris be jokių problemų yra atidaromas „SIGNA“ programos. Pabandę atidaryti konteineryje esantį failą „Dokumentas.exe“ pastebime, kad jis yra sėkmingai įvykdomas bei nėra rodomi jokie įspėjantys pranešimai ar klaidos. Beje, ar bus sėkmingai paleistas vykdomasis failas priklauso ir nuo MIME tipo, kurį galime nurodyti „manifest.xml“ faile. Iš visų 11 patikimų MIME tipų ataka veiks tik su „application/pdf“, kadangi kitų tipų failus bus bandoma atvaizduoti pačioje „SIGNA“ programoje, o tai sukels klaidą.
Teoriškai, dabartinio specialiai suformuoto kenkėjiško „.adoc“ failo turėtų užtekti vykdant socialinės inžinerijos atakas prieš daugumą vartotojų, nes tik mažuma atkreips dėmesį į „exe“ failo plėtinį. Pasitelkę Unikodo magiją galime žymiai padidinti atakos sėkmingumą. Pavyzdžiui, simbolis „U+202E“ keičia teksto atvaizdavimo kryptį, todėl failo pavadinimas „Dokumentas{U+202E }fdp.exe“ vizualiai tampa „Dokumentasexe.pdf“, vietoje „exe“ plėtinio galėtume paimti ir kokį mažai į akis krintanti plėtinį, tiesiog norėjau parodyti patį principą. Prisimenant senus laikus, galime prieš failo plėtinį įterpti didelį kiekį tarpo simbolių, pavyzdžiui, „Dokumentas.pdf .exe“, bet greitai pastebėtume, kad norint paslėpti failo plėtinį už programos lango ribų reikia tiek daug tarpo simbolių, kad failo pavadinimas kartu su keliu iki jo peržengia maksimalaus kelio ilgį Windows operacinėse sistemose, todėl vietoj įprasto tarpo simbolio galime panaudoti Unikodo simbolį „U+2001“, kuris vizualiai yra daug platesnis.
Nėra konkrečių duomenų apie vartotojų skaičių, kurie yra įsidiegę ir naudojasi dokumentų pasirašymo programa „SIGNA“, bet spėju, kad tokių vartotoju nėra daug. Iki kol bus (jeigu bus) išleistas pataisymas, rekomenduočiau neatidarinėti nepasirašytų ADOC formato failų bei nustatyti el. pašto filtrus taip, kad būtų blokuojami ir ZIP archyvuose esantys vykdomieji failai. Užbaigdamas taip pat norėčiau atkreipti dėmesį į gyventojų registro tarnybos ir „SIGNA“ programos kūrėjų svetainėse talpinamos dokumentų pasirašymo programos „SIGNA“ versijų neatitikimus. Jos skiriasi dviem mėnesiais, tai reiškia, kad aptikus ir užtaisius „SIGNA“ programos spragas, gyventojų registro tarnyba ir toliau platintų pažeidžiamą programos versiją.