Postoji li budućnost bez hakera?

Impresivna je složenost zadatka razvoja automatskog sistema za detekciju i popravljanje sigurnosnih propusta (Reuters)

Piše: Mario Pejović

U svijetu informatičke sigurnosti, loši momci su uvijek nekoliko koraka ispred dobrih. Kolikogod se razvojni timovi trudili napraviti neprobojan softver, često ostaju neki propusti koje zlonamjerni hakeri koriste za svoje namjere.

Zbog toga se početkom osmog mjeseca u Sjedinjenim Američkim Državama održava Cyber Grand Challenge, takmičenje sa nagradnim fondom od gotovo četiri miliona godina, na kojem će se pokušati utvrditi da li je moguće napraviti autonomni program koji bi u programima tražio sigurnosne propuste, pravio “zakrpe” za njih i iste primjenjivao, bez upliva ljudi. Ako se razvije takav program, to bi faktički značilo da ćemo imati budućnost bez hakera.

Kako stvari stoje, male su šanse da neko sa tog takmičenja odnese vreću punu novca.

Leon Juranić, tehnički direktor DefenseCode i glavni autor programa za prepoznavanje sigurnosnih ranjivosti u web aplikacijama i njihovom izvornom kodu kaže da je takve autonomne sisteme prilično teško napraviti, zato što ranjivosti mogu biti raznovrsne, a prepoznavanje ranjivosti i izrada ispravke (patcha, zakrpa) traži jako dobro poznavanje posebnosti ranjivog sistema, ali i njegovog okruženja.

Složenost zadatka

Lucijan Carić ističe da je impresivna složenost zadatka razvoja automatskog sistema za detekciju i popravljanje sigurnosnih propusta.

“Da li znate koliko programskih jezika postoji, koliko varijanti, koliko razvojnih okruženja, koliko operativnih sustava, koliko međuzavisnih softverskih elementa? Vaše rješenje bi to sve trebalo moći analizirati. Nakon toga, imate i problem distribucije ispravke. Vi, uz sve ograde, možete ispraviti problem u operativnom sustavu ili aplikaciji na računalu ili računalima koje koristite, ali to je to. Za tisuće, stotine tisuća ili milijune drugih korisnika taj je operativni sustav, odnosno softver, i dalje neispravan.”

“Iznimno je izazovno napraviti autonomni sustav koji će automatski prvo prepoznati, a onda popraviti svaku ranjivost koju nađe, a da pri tome slučajno ne poremeti ili onesposobi normalno funkcioniranje samog programa za koji radi zakrpu. Ranjivosti stvarnih sustava mogu biti, i često jesu, previše složene za autonomne automatizirane sustave.”

Osim problema u intervencije u programski kod ranjivog sistema i potencijalnog onesposobljavanja normalnih funkcionalnosti programa, do problema može doći i zbog pogrešaka u prepoznavanju sigurnosnih ranjivosti, odnosno takozvanih false positive ili false negative prepoznavanja, odnosno slučajeva kad sistem nešto pogrešno prepozna kao ranjivost ili postojeću ranjivost ne prepozna.

Problemi detekcije

U prvom, false positive slučaju, sistem će ići “popravljati” programski kod i raditi ispravak za program koji u stvari radi dobro – što može uzrokovati probleme kao što su neispravan rad ili prestanak rada programa. U drugom slučaju, false negative, ranjivost će ostati neotkrivena i dalje prisutna u programu.

Juranić navodi da bi autonomni program trebao takozvanim obrnutim inženjeringom, odnosno analizom samog programskog koda koji je napravljen na temelju ispitivanja određene aplikacije, otkriti ranjivost i napravi ispravku koji će tu ranjivost otkloniti.

“Reverse engineering softvera je iznimno složena operacija i teško je potpuno automatizirati takve sustave koji bi automatizirano radili reverse engineering, otkrivanje ranjivosti i ispravku. Mislim da je moguće napraviti rješenje koje bi prepoznavalo neke jednostavnije tipove ranjivosti i proizvelo automatizirani patch za njih, ali kao što sam rekao, stvarne ranjivosti su u današnje vrijeme prilično složene i neke metode koje bi praktično možda bile primjenjive u eksperimentalnim modelima, jednostavno nisu dovoljno efikasne na ranjivostima koje danas nalazimo u stvarnom softveru i stvarnim sustavima”.

On dodaje da se iz prakse i iskustva zna da sistemi koji automatizirano rade samo na prepoznavanju ranjivosti griješe, te je za očekivati da će sistemi koji još trebaju i interveniraju direktno u programski kod,  kako bi te ranjivosti uklonili, nužno praviti još više pogrešaka i te pogreške će, same po sebi, predstavljati ozbiljan problem.

Bojan Ždrnja, viši savjetnik za informatičku sigurnost kompanije INFIGO IS, specijalizirane za pružanje profesionalnih usluga u području informatičke sigurnosti, smatra da se ipak treba raditi na razvoju automatiziranog programa za otkrivanje i popravljanje programskih propusta iz praktičnih razloga.

‘Nema apsolutne sigurnosti’

 
“Ogromna količina razvoja i aplikacija koje se danas objavljuju nemoguće je ručno kontrolirati, a današnji programi za automatsko otkrivanje ranjivosti ipak pokrivaju samo najočitije stvari.”

On dodaje da je činjenica da se nikad ne može imati apsolutna sigurnost, jer se nove metodologije stalno razvijaju i objavljuju, tako da vjerovatno nikad nećemo moći postići stanje bez zlonamjernih hakera.

Ovisni o čovjeku

U analizama kompanija za informatičku sigurnost, vrlo često čovjek mora provjeriti ili potvrditi ono što je program za analizu sigurnosti otkrio, kaže Carić. Taj posao je vremenski zahtijevan i traži iskusne i inventivne stručnjake.

“Zato mi je više nego jasan motiv za izradu automatiziranih sustava koji bi zamijenili sada potreban ljudski rad. Ne znam koliko će takvi sustavi biti uspješni, ali u svakom slučaju bit će interesantno promatrati njihov razvoj.”

“Najopasnija potencijalna negativna strana ovakvog automatiziranog programa je lažna sigurnost. Naime, budući da niti jedan program neće moći postići stopostotnu sigurnost, korisnici tog programa mogu živjeti u lažnom uvjerenju da je kod njih sve sigurno, a stvarnost može biti daleko od toga.”

Čak i sam zaštitni automatizirani program može biti zloupotrijebljen, smatra on, jer ništa ne sprječava, primjera radi, neku vladu ili organizaciju da namjerno umetne dio koda u takav program zbog kojeg onda određene kategorije ranjivosti neće biti detektirane, a što će toj vladi ili kriminalnoj organizaciji omogućiti iskorištavanje ranjivosti kasnije, pogotovo što će korisnici misliti i vjerovati da su zaštićeni.

“Ovakvi su se slučajevi već dešavali u prošlosti, prvenstveno s kriptografskim algoritmima.”

Lucijan Carić, partner u DefenseCodeu i jedan od vodećih stručnjaka za informatičku sigurnost u Hrvatskoj, navodi da pored pitanja detekcije propusta se javlja i niz problema koje nije jednostavno prevladati.

Jedan od tih problema je pitanje autorskih prava. “Ne možete tek tako ‘prčkati’ po nečijem kodu. U pravilu o pogrešci ili sigurnosnom problemu morate obavijestiti autora i ostaviti mu primjeren rok da pronađenu pogrešku ispravi. To često nije idealno, ali to su uvriježena pravila.”

Drugi problem je odgovornost, odnosno pitanje je ko preuzima odgovornost za posljedice – među ostalim i materijalne – za intervenciju u tuđi program?

“Treće, kako ćete, na primjer, ispraviti pogreške u kodu koji se nalazi u hardveru i ne može se mijenjati, u softveru koji je na zaštićenom sustavu?”

Carić naglašava da su ekspertni autonomni sistemu jako interesantno područje, na kojem će se u budućnosti puno raditi. Kako kaže, postoji velika potražnja za produkcijom aplikacija, odnosno njihovog koda, kao i velika potreba da te aplikacije budu sigurnosno ispravne.

“Jasno je da će se raditi na rješenjima za automatsku proizvodnju koda, kao i automatizirano pronalaženje i ispravljanje u kodu prisutnih sigurnosnih problema.”

Izvor: Al Jazeera