Jau senokai bandome atkreipti klientų ir ne tik dėmesį į vieną ilgą laiką tyliai sau egzistuojančią informacijos saugumo problemą – tai „galinių durų“ (angl. backdoors) problema.
Šio įrašo tikslas yra ne tik atkreipti dėmesį į pačią problemą, bet ir padėti WEB sprendimų kūrėjams padaryti žingsnį į priekį jų kuriamų sistemų saugumo lygiui pakelti bei pademonstruoti realias grėsmes praktiškai. Aišku, „praktinė“ demonstracija bus kiek cenzūruota dėl šio reiškinio paplitimo mąsto – atsarginį įėjimą į sistemą pasilieka bene visi turinio valdymo sistemų kūrėjai – pradedant vietinės reikšmės programuotoju ir baigiant didžiosiomis WEB sprendimų kūrimo kompanijomis, o juk dėl klaidingos tokių „funkcijų“ realizacijos gali nukentėti šimtai lietuviškų interneto svetainių...
Prieš neriant į nacionalinių „backdoorų“ realizacijos ypatumų nagrinėjimą, derėtų išsiaiškinti kas visgi yra tos „galinės durys“. Iš esmės viskas paprasta: galinės durys – tai programinis kodas, leidžiantis įsilaužėliams nepastebimai patekti į tam tikrą sistemą. Tokio programinio kodo pavyzdžiai galėtų būti kenksmingos programinės įrangos autoriams atveriama nesankcionuoto prisijungimo galimybė į užkrėstus kompiuterius ar padirbtoje tinklo įrangoje paliekamos landos.
Manau, kad pati sąvoka yra suprantama, tačiau pats šis mechanizmas gerai veikia tol, kol apie jį niekas be kūrėjo nežino (trise saugo paslaptį, kai du iš jų negyvi) bei reikia turėti omenyje, kad toks mechanizmas gali būti ir naudingas – tarkime TVS kūrėjams vienokios ar kitokios galinės durys į jų sukurtas sistemas supaprastina TVS kūrėjams darbą šalinant įvairius nesklandumus ir padeda operatyviai reaguoti į iškilusias problemas. Dažniausiai iš pažiūros pasirinkta atsarginių durų realizacija kūrėjams gali atrodyti saugi, tačiau gerai pasigilinus akivaizdžiai matosi saugumo spragos.
Panagrinėkime keletą populiariausių situacijų:
1 Situacija. Universalus vartotojo vardas ir slaptažodis
TVS kūrėjai duomenų bazėje sukuria specialų vartotoją arba interneto programėlės išeities tekstuose prie esamos autentifikacijos schemos prideda papildomą patikrinimą. Slaptažodis tokiu atveju būna šifruotas (ir tai ne visada), tačiau dažniausiai paprastas, o blogiausia, kad tas pats slaptažodis yra naudojamas absoliučiai visose interneto svetainėse kur veikia ta konkreti TVS. Būtina suprasti, kad saugumas negali būti pasiektas vidinių mechanizmų veikimo principų slėpimu: juk faktiškai kiekvienas klientas, nusipirkęs turinio valdymo sistemą gali „prasinešti“ po visas likusias tokiu pačiu principu sukurtas svetaines. O juk vietoje kliento bus arba smalsus administratorius, arba realus įsilaužėlis, kas tikriausiai dar labiau tikėtina, įvertinant tai, kad lietuviškos „masinio vartojimo“ WEB sistemos nepasižymi saugumu.
Net jeigu slaptažodis sudėtingas ir neįveikiamas standartiniais įrankiais, įsilaužėlis gavęs priėjimą prie vienos iš norimos turinio valdymo sistemos valdomų svetainių, gali pridėti kodo gabalą, kuris išsaugos pateiktą slaptažodį atviru tekstu, kuomet bus jungiamasi į administracinę dalį (o nenorint ilgai laukti užtenka sukelti dirbtinę problemą ir programuotojai suskubs jos taisyti prisijungdami per savo galines duris). Taip pat reikia neatmesti galimybės, kad slaptažodį tretiesiems asmenims gali atskleisti ir nesąžiningi TVS programuotojai.
Išvada: nerealizuoti universalios prisijungimo prie sistemų galimybės, kadangi scenarijų išeities kodai viską parodo lyg ant delno. Geram įsilaužėliui juos paimti/nusipirkti – ne problema.
2 Situacija. Autorizacija pagal IP adresą
Tai turbūt dažniausiai pasitaikanti galinių durų realizacija. Sunku pasakyti, kodėl taip dažnai pasitikima IP adresu: tai dažniausiai būna TVS kūrėjų biuro tinklo išorinis adresas, o tai iš esmės reiškia, kad už šio IP adreso slepiasi bent 10 potencialių įsilaužėlio taikinių. Taip pat gali būti nulaužti maršruto parinktuvai (routeriai), o ką jau kalbėti apie plačiai paplitusius bevielius tinklus. O paprasčiausias būdas tikriausiai yra užsukti į programuotojų kontorą ir paprašyti prisijungimo prie tinklo, patvarkyti dominančią svetainę ir tiek.
Įskaitant tai, kad turbūt nei vienas programuotojas nepagalvojo apie apsaugos nuo XSRF atakų mechanizmo įdiegimą administravimo panelėje, įsilaužti tampa dar paprasčiau: įsilaužėlis gali suformuoti specialų HTML kodą ir išsiuntinėti elektroniniu paštu tiems asmenims, kurie slepiasi už reikiamo IP adreso. Nepastebimai ir tyliai konkrečioje interneto svetainėje bus sukurtas naujas įsilaužėlio kontroliuojamas vartotojas ar pakeista tam tikra informacija.
Kartais IP adresą bandoma maskuoti:
if (md5($REMOTE_ADDR) == '3A66F1134CEBCC6F419520CEDCD2237B')
Tikriausiai suprantate, kad toks maskavimo būdas yra neveiksmingas (namų darbams).
Išvada: autorizacija pagal IP adresą taip pat kelia nemažą riziką visų atskiros kompanijos kuriamų svetainių saugumui.
3 Situacija. Autorizacija pagal srities vardą
Šiuo principu paremtas galines duris diegia programuotojai, kurie visiškai nesupranta kaip veikia DNS. Kiekvienas DNS serverio administratorius gali sukurti „in-addr.arpa“ įrašą, kuris bus nukreiptas į atitinkamą srities vardą, pavyzdžiui: „office.critical.lt“. Beje, šį pažeidžiamumą sėkmingai pavyks išnaudoti tik tuo atveju, kai Apache HTTP serverio konfigūraciniame faile direktyvos „HostnameLookups“ reikšmė bus „On“.
Autorizacijos pagal srities vardą pavyzdys:
if ($REMOTE_HOST== 'office.critical.lt')
Išvada: kelti kvalifikaciją, nes šis būdas yra „viršūnė“. Nors „HostnameLookups“ parametras konfigūracijoje nebūna įjungtas pagal nutylėjimą, tačiau galima daryti prielaidą, kad ten kur yra naudojama TVS, turinti tokį „pagalbinį priėjimą“ šis parametras bus aktyvuotas, kitaip „backdooras“ tiesiog neveiks :)
Taigi, išėjo pasidaryti savotišką nacionalinių galinių durų realizacijos ypatumų TOP-3, kuriame pateiktos realizacijos tikriausiai išdėstytos nuo „geriausios“ iki „blogiausios“. Apskritai, tai vargu ar egzistuoja geras ar blogas galinių durų realizavimo variantas, kadangi apie jų egzistavimą tinklalapių savininkai net nenutuokia, todėl klaidingai vertina savo sistemų saugumo lygį. Kita vertus tie patys savininkai nori, kad visos kylančios problemos būtų sprendžiamos greitai ir sklandžiai, o kompanijos, kuriančios WEB sprendimus irgi to siekia palengvindamos savo gyvenimą supaprastinant prisijungimą prie tinklalapio ne tik sau bet ir kitiems.
Pabaigai rekomenduojame pasidomėti, ar jūsų naudojamoje TVS nėra palikta šio „privalumo“, galinčio labai greitai pavirsti rimtu saugumo trūkumu, o valstybinėse institucijose tikriausiai ir šnipų ar priešiškai nusiteikusių organizacijų žaisliuku.