Jedna od velikih dilema savremene nastave iz oblasti računarske bezbezdnosti jeste da li studente računarske tehnike, koji slušaju ovaj kurs, treba obrazovati na temu pisanja računarskih virusa i zlonamernog koda uopšte. Na prvi pogled dilema deluje jednostavno. Jedni će reći: „Ne nikako! Zašto da ih učimo nečemu lošem!", drugi će reći „Obavezno, inače kako će znati da naprave i primene sisteme odbrane od virusa". Kada se zagrebe malo dublje ispod površine i detaljnije razmisli, vidi se da odluka nije ni izbliza jednostavna, kao što na prvi pogled može izgledati. Kada sam ovu temu diskutovao sa studentima, većina njih nije uopšte bila ravnodušna - čak naprotiv, a ponekad je „letelo perje" od argumenata za i protiv. Često se povlači paralela sa nastavom iz oblasti medicine i farmacije gde se, navodno, na nekim univerzitetima i u određenim strogo kontrolisanim uslovima, gaje i izučavaju biološki virusi.
Mislio sam zato, da pitam Vas čitaoce bloga, šta mislite o ovoj dilemi? Znam da među čitaocima bloga ima stručnjaka svih profila, pa bi različita mišljenja pomogla. Tekst ispod analizira različite aspekte dileme.
U tekstu je korišten je i materijal iz diplomskog rada studenta Nenada Stojkova (Visoka škola elektrotehnike i računarstva strukovnih studija), tako da kolegu Stojkova potpisujem kao koautora ovog bloga.
Uopšteno govoreći, treba odgovoriti na tri pitanja:
1. Kako ćemo studente učiti o temi računarskih virusa i zlonamernog koda uopšte?
2. Da li ih možemo učiti, a da to bude korisno, upotrebljivo, ali i bezbedno?
3. Da li će odabrani način učenja učiniti ovaj svet boljim ili lošijim?
Takođe, setimo se drevne mudrosti:
• Ono što čujem, zaboravim
• Ono što vidim, toga se setim
• Ono što uradim, to razumem
O dilemama na temu izučavanja pisanja virusa u nastavi, napisano je i nekoliko naučnih i stručnih radova. Jedan od vrlo citiranih radova je „Viruses 101", koji čisji su autori. J. Aycock, i K. Barker, University of Calgary, Calgary, Alberta, Canada.Rad je objavljen u SIGCSE '05 Proceedings of the 36th SIGCSE technical symposium on Computer science education. Raspoloživ je na ACM portalu (ovde), ali samo uz pretplatu na ACM Digital Library ili sličnu.
U ovom tekstu sam koristio naziv računarski virusi, obzirom da je to kod nas opšte prihvaćeni naziv za različite vrste zlonamernog koda (eng. malicious code, malware), iako je neprecizan. Naime, postoje razne vrste zlonamernog koda. To su, pored virusa, i: crvi, logičke bombe, zombiji, trojanski konji, špijunski softver, rootkit itd. Na tu temu sam pisao u blogu Tajni život Vašeg računara.
Da prvo pogledamo neka iskustva u svetu.
Univerzitet Kalgari
Kasno u proleće 2003., profesor Ken Barker, šef odeljenja za informatiku na univerzitetu u Kalgariju (engl. Calgary) je odlučio da, kao deo kursa koji se odnosi na računarsku sigurnost, njegovi studenti treba da nauče da pišu viruse. Zvaničnici fakulteta su se nadali da će dobiti podršku antivirusnih kompanija, međutim, umesto podrške antivirusna industrija je kritikovala plan. Profesor Ken Barker je svoju ideju objavio na Internetu, i bio veoma uveren u ispravnost njegove primenu, uprkos negativnim reakcijama koje je dobio od profesionalaca na ovom polju.
On je ovako objasnio svoju ideju: "Kurs je o razumevanju virusa, kako bi se isti zaustavili. Želimo da stvorima sledeću generaciju antivirusnih profesionalaca koji će se boriti sa sledećom generacijom virusnog softvera".
Studenti koji bi pohađali kurs bi radili (pisali viruse) u obezbeđenim računarskim laboratorijama, tako da virusi ne bi stigli do Interneta, tj. ne bi nikako izašli iz strogo kontrolisanog okruženja. „I studenti ne bi pisali nove viruse već bi prepravljali već postojeće" istakao je profesor Ken Barker. "Potrebni su nam dobri momci koji će razmišljati kao loši momci. Potrebni su nam ljudi koji će unapred otkrivati nove pravce napada i nove ranjivosti i razvijati vakcine pre nego što se virus i pojavi. Bolje je da imamo antivirusnu zajednicu koja će misliti jedan korak unapred i koja će pokušavati da shvati šta će sledeći potez biti i blokirati ga, nego da čekamo da loši momci naprave prvi korak". Predstavnici antivirusnih kompanija su odbacili ideju da bi učenje studenata da pišu viruse nekome moglo pomoći.
Bez obzira na negativne kritike njegovog kursa, profesor Ken Barker je nastavio sa svojom idejom. Kako bi odbranili stav fakulteta, oni su tvrdili da kurs sličan onome što rade medicinski naučnici proučavajući biološke viruse. "Kada doktor želi da napravi vakcinu protiv virusa on obično počinje od dobijanja "živog" primerka virusa. "Živi" uzorak se proučava kako bi se otkrilo kako se on replicira (razmnožava) i traže se njegove slabosti kako bi se razvila vakcina i zaustavila širenje virusa. Ovakav standard se odnosi i na računarske viruse. Kada se otkrije novi virus na Internetu antivirusni proizvođači moraju prvo da dobiju kopiju aktuelnog virusa. Oni će otkriti kako on funkcioniše i kako se replicira kako bi obezbedili mehanizam za detekciju i blokiranje nove pretnje njihovim antivirusnim programom."
Protivnici ove ideje su tvrdili da medicinsko istraživanje bioloških virusa ne stvara nove viruse pokušavajući da ih razumeju, aludirajući na to da postoje dostupni virusi koji se mogu proučavati. Dr Džon Ejkok (Dr John Aycock - nadam se da sam pogodio transkripciju), profesor kursa smatra da je za dobro poznavanje mera protiv virusa potrebno znati kako se ti virusi ponašaju. Odnosno, prema rečima Dr Ejkoka, da bi se uhvatio lopov, potrebno je koristiti lopova! Ovaj metod, takođe podrazumeva da su proizođači antivirusnog softvera jedan korak u zaostatku za programerima zlonamernog koda. Pisac virusa pravi prvi korak i ukoliko je dobar može napraviti veliku štetu pre nego što antivirusne kompanije efikasno deluju. Većina antivirusnih programa sprovodi heurističko skeniranje koje može detektovati neke nepoznate pretnje. Heurističko skeniranje pokušava da otkrije aktivnost virusa ili crva upoređujeći prethodni saobraćaj i tražeći eventualne anomalije. Čak i uspešnost heurističkog skeniranja zavisi od onoga što već znamo o virusu. Napadači mogu da pogledaju ranije verzije virusa kako bi shvatili šta nije ili jeste valjalo kod njih i da to iskoriste protiv antivirusnog programa.
Veština koju poseduje pisac virusa i antivirusni istraživači se veoma razlikuje. Danas je veoma lako napisati virus, u stvari, postoje šabloni koji omogućavaju da čak i osobe, koje nemaju neko posebno znanje programiranja i računarskih virusa, napišu složen virus. Sa druge strane, ne postoje takvi šabloni koji bi omogućili pisanje antivirusnih programa. Pisac virusa se najčešće bazira na jednoj ideji i ne obazire se na to kako virus radi. Suprotnost tome su osobe koje rade u antivirusnim kompanijama, koje moraju da imaju široko znanje različitih aspekata računarske sigurnosti, moraju biti sposobni da razmišljaju nekonvencialno, da imaju dosta mašte a u istom trenutku i dosta discipline kako bi obavili dobar posao. Opet, ljudi koji vide da univerzitet Kalgari predaje i podržava pisanje virusa i pomisliće da je to u redu. To ohrabruje pisce virusa i daje im legitimnu notu. Antivirusne kompanije imaju jak stav po pitanju zapošljavanje pisaca virusa. To je neophodno, jer oni rade u okruženju u kojem je potrebno poverenje. Antivirusne kompanije se sumnjiče, od strane velikog broja korisnika, za stvaranje novih virusa, jer kako mnogi navode, njima treba da zahvale za svoj opstanak na tržištu.
Kompanijama nista ne znači to da li je pisac virusa još uvek aktivan ili se "penzionisao". Tako da, ako student pohađa ovaj kurs, automatski će sebe diskvalifikovati za posao u antivirusnoj kompaniji. Fakultet ne može biti siguran da će se svi studenti prijaviti iz pravih razloga. Prestavnici fakulteta naglašavaju da su protivnici ovog kursa promašili značenje ovog kursa i da danas svaki diplomac računarstva ima znanje da napiše virus. Jedan od osnovnih ciljeva ovog kursa je priprema za borbu protiv virusa. Oni neće imati šanse da rade u antivirusnim kompanijama, samo zato što su učili da pišu viruse. Stvar može biti još gora, ako poslodavci ne pregledaju detaljno koje predmete je student slušao tokom studiranja, može se desiti da svi studenti sa tog fakulteta budu diskfalikovani, samo zbog toga što je određena grupa pohađala kurs pisanja virusa. U nekim zemljama je pisanje virusa nezakonito. Studenti koji budu pohađali kurs pisanja virusa mogu imati čak problema sa zakonom ako uđu u takvu državu. Može se desiti da student koji bude odslušao ovaj kurs, počne sa pisanjem virusa i njihovim puštanjem na Internet. Ako se sazna da je pisac virusa pohađao kurs pisanja virusa, fakultet se može suočiti sa tužbom. Pobornici ove ideje će reći da je u pitanju akademsko istraživanje, koje može dovesti do korisnih informacija. Međutim, ne postoje dobri virusi.
Pretpostavimo da je ideja profesora Barkera stvarno podučavanje računarskih profesionalaca sposobnih za uspešnu antivirusnu zaštitu. Pravi način treniranja ljudi za rešavanje konkretnog problema nije sigurno naučiti ih da taj problem izazovu. Pravi način je naučiti ih poznatim rešenjima za to, i naučiti ih da razvijaju svoja rešenja. Mnogo je teže napisati antivirusni softver nego virus. Računarski virus je uglavnom jednostavniji, ima jedan zadatak koji treba da izvrši - replikaciju. Antivirusni softver je veoma složen projekat. Njegov autor mora da ga napiše tako da otkrije postojanje virusa i ukloni ga. Kako bi se razumelo kako virus funkcioniše nije potrebno znati ga napisati, već znati ga analizirati, na taj način će steći mnogo veće znanje. Prosto je nepraktično učiti studente sve vrste virusa, prosto ih je previše, a pritom se i često menja njihov način pisanja. Bez obzira koliko studenti budu dobro naučili da pišu viruse, može se desiti da se u njihovom praktičnom iskustvu susretnu sa virusom koji nije bio poznat za vreme njihovog studiranja. Zato je mnogo bolje studente naučiti da analiziraju rad i ponašanja virusa tako da razumeju kako virus radi i efikasno ga odstraniti. Naravno, nakon analiziranja velikog broja virusa, studenti će umeti da sami napišu svoje viruse - kombinujući elemente i delove koje su već videli. Ali ovo će biti samo propratni efekat mnogo važnijeg dela znanja. Pisanje virusa ne sme biti primarni cilj njihovog kursa. Naravno i obuka u analiziranju računarskih virusa mora biti propraćena odgovarajućom obukom etičkog hakerisanja, kako bi se sprečila zloupotreba i propratni efekti ovakve obuke. Da bi obuka bila što realnija, studenti trebaju da budu izloženi pravim virusima, kako bi analizirali njihovo ponašanje. Međutim za to nije potrebno pisanje novih virusa već se mogu koristiti već postojeći. Jedini legitimni slučaj pisanja virusa je bio onda kada računarski virusi nisu postojali i kada je dr. Fred Cohen morao da napiše neki kako bi posmatrao njihovo ponašanje. Današnji studenti imaju slične potrebe. Rešenje bi bilo pisati viruse u virtuelnom okruženju i dozvoliti njihovo širenje samo u okviru tog okruženja. Takav pristup bi omogućio kreiranje virusa koji neće pobeći i izazvati štetu. Mogući problem je taj, što zbog težine, obuka će trajati duže od jedne godine. Znanje koje bi stekli nakon završetka kursa bi bilo korisno studentima koji studiraju projektovanje softvera, operativne sisteme...
Univerzitet Sonoma
Profesor računarstva na Sonoma univerzitetu Džordž Ledin (Geroge Ledin) u Kaliforniji osnovao je kurs kako bi podučili studente kako da naprave bolju sigurnosnu zaštitu. Sigurnosne kompanije, s druge strane, su uvek osuđivale svaki pokušaj da se stvori novi zlonamerni program, bez obzira na njegov cilj. Takođe, najmanje tri kompanije su poslale Džordž Ledinu pismo u kojem su najavili bojkot njegovih studenata. Džordž Ledin je jasno naglasio da je plan da se studenti poduče, u kontrolisanom okruženju, kako da naprave ove viruse, u svrhu podučavanja, kako da ih spreče i unište ih. To nije nov pristup u rešavanju problema. Generacijama, medicinski naučnici su kako bi pronašli lek za neku bolest, morali prvo da rekonstruišu izvor bolesti. Baš kao i u medicinskim laboratorijama, Ledin mora da obezbedi zaštitne mere kako bi se osigurao da virusi neće izaći u stvarni svet, i da će biti uništeni nakon što se zadatak izvrši. On takođe mora biti siguran da su njegovi studenti razumeli šta znači etička obaveza, odnosno kako da u korisne svrhe primene stečeno znanje. I pored svih mera, postoji rizik da će polaznici ovog kursa svoje znanje iskoristiti u pogrešne svrhe, ali to se dešava i bez ovog kursa. Istovremeno, te 2008. godine, u novinama Newsweek se pojavio članak: "This bug man is a pest", odnosno: "Ovaj čovek je štetočina", sledi odlomak iz tog teksta:
„Džordž Ledin podučava studente kako da pišu viruse, što dovodi kompanije koje se bave sigurnosnim softverom u veliku opasnost.
U podzemnim laboratorijama u Kaliforniji, mladi studenti su zauzeti pisanjem virusa, spama i ostalih zlonamernih programa. Grant Joy je napisao program koji tajno snima svaki otkucani karakter na tastaturi, uključujući korisnička imena, lozinke i brojeve kreditnih kartica. Thomas Fynan plavi sandučiće elektronske pošte sa velikim brojem poruka koje potiču od nepostojećih korisnika. Joy i Fynan nisu hakeri, oni su polaznici kursa za računarsku zaštitu, na Sonoma univerzitetu, a njihov profesor, Džordž Ledin im pokazuje kako da probiju i najbolji antvirusni softver."
Kompanije koje se bave borbom protiv virusa nisu srećne onim što se dešava u Ledinovim učionicama. One ga čak povezuju sa A. Q. Khanom, pakistanskim naučnikom koji je prodao nuklearnu tehnologiju Severnoj Koreji. Menadžeri nekih sigurnosnih kompanija su objavili da neće zaposliti Ledinove studente. "Količina zlonamernih programa eksponencijalno raste. Pre nekoliko godina, sigurnosni eksperti su pratili oko 5 000 novih virusa svake godine, ali krajem ove godine njihov broj se povećao za tri puta i to samo u toku svake nedelje. Akcenat je stavljen na kradljivce identiteta i spam", naglašava Džordž Kurc (George Kurtz), predstavnik antivirusne kompanije McAfee.
Ledin tvrdi da njegovi studenti ne žele da nanose štetu, kao i da oni rade u izolovanim mrežama iz kojih virusi ne mogu izaći. On uči studente kako da razmišljaju kao hakeri kako bi napravili antivirusni softver. "Za razliku od bioloških virusa, računarski virusi su napisani od strane programera. Mi želimo da razumemo kako ovi ljudi razmišljaju i kako su naučili da to rade." kaže Ledin, koji je učio za biologa pre nego što je prešao na informatiku. "Ne možete imati odbrambeni plan ukoliko ne znate kakav je napad", izjavio je Lincoln Peters, bišvi Ledinov student, koji je sad savetnik u državnoj agenciji za zaštitu, u SAD-u. To ne znači da Ledin ne pokušava da napravi mali nestašluk. Njegov program je delimično prikriveni napad na McAfee, Symantec i njima slične kopanije, čije proizvode od 100 dolara vidi kao beskorisne. Ako studenti mogu da pobede njihove antivirusne programe, koja je korist od njih za ljude koji ih plaćaju preko 5 milijardi dolara godišnje. Inženjeri antivirusnih softvera smatraju da je Ledin u zabludi i da su oni ispred njega i hakera. "Promenili smo igru, i virusi su se promenili u proteklih nekoliko godina zbog načina na koji primenjujemo zaštitu", kaže Zulfikar Ramzan, tehnički direktor Symantec-ovog sigurnosnog tima. I dalje se oko Ledinove kritike vodi velika polemika. Ledin upoređuje tehnologiju koju čuvaju antivirusne kompanije sa kriptografijom koja je pre nekoliko decenija bila pod kontrolom Nacionalne sigurnosne agencije. Vremenom je vlada otvorila svoje tajne za univerzitete i kompanije što je dovelo do razvoja još jačih i boljih sistema šifrovanja. "Zbog čega bi se stideli da nešto naučimo što bi bilo korisno za svakoga?", pita Ledin. "Da, može doći do male štete po društvo, ali do štete može doći i u hemiji i fizici, takođe."
Na ovaj tekst Džordž Ledin je odgovorio: "Pisanje zlonamernih programa nosi ozbiljne legalne posledice. Učenje pisanja crva i virusa mora da uključuje i etiku. Studenti informatike moraju da nauče da prepoznaju, analiziraju, onesposobe i unište zlonamerne programe. Da bi to umeli, oni moraju da sami shvate kako crvi i virusi funkcionišu. Naravno da postoji mogućnost da oni pređu na tamnu stranu, ali ista opasnost postoji i sa doktorima. Moraćemo da se oslonimo na njihovu etiku".
Ko je zapravo u pravu? Da li je Ledin prekršio nepisanu Hipokritovu zakletvu računarske sigurnosti? Ili je ovo važna stvar u učenju i testiranju? Neki smatraju da nismo ništa manje sigurni ako par studenata stvori novi zlonamerni program kako bi naučio kako se on ponaša. Čak i ako jedan od njih izađe iz kontrolisanog okruženja, biće samo kap u već prepunom moru zlonamernih programa koji postoji na Internetu. Univerzitet namerava da omogući studentima da dođu do granica znanja, probijajući svako pravilo. Učenje studenata da pišu viruse se ne razlikuje od učenja auto mehaničara kako radi motor, tako što će ga rastaviti. Najbolji način učenja o nečemu je zapravo koristiti ga i razvijati za sebe. Kako Ledin ističe, izgleda da antivirusne kompanije žele da svet bude što više uplašen od zlonamernih programa, kako bi se pretvarali da su oni jedini koji mogu rešiti problem, mada, istina je da oni nisu baš nešto uspešni u tome.
Anketa i Internet izvori
U jednoj anketi na mom blogu, na pitanje „Should we teach students how to write viruses?", 68% odgovora je bilo "Da", 25% odgovora "Ne" i ostalih 7% odgovora "Ne znam". Pretpostavljam da su većina posetilaca, koji su uzeli učešće u anketi, ljudi iz oblasti računarstva i dobrim delom i studenti.
Studenti tehničkih fakulteta, informatičkog i računarskog usmerenja, uglavnom smatraju da je potrebno podučavati ih na tu temu. Uobičajeno, oni smatraju da ova nastava treba i može da im pomogne u inženjerskoj praksi zaštite računarskih sistema. Verovatno jedan broj njih ima mladalačku želju da se oproba u nečemu što je na granici zabranjenog, što svakako nije baš dobar motiv.
Danas se na Internetu mogu sasvim jednostavno naći brojni resursi i alati koji pomažu u pisanju virusa. Ovo omogućava i ne mnogo stručnim ljudima da naprave jednostavnije ali i vrlo opasne viruse, što je svakako zabrinjavajuće. Etičke norme i preventiva bi svakako mogli pomoći. A kad to ne daje rezultate, onda se stvari moraju rešavati zakonskim sredstvima.
Mala digresija, ali ipak u vezi sa ovom temom. U jednoj anketi, na pitanje "Are software companies, which produce antivirus tools, connected to virus writers?" oko 75% učesnika je odgovorilo Da. Sudeći po tome, većina je skeptična u odnosu na motive i metode antivirusnih kompanija i smatra da postoji „tajna veza" između antivirusnih firmi i pisaca virusa.
Šta kaže zakon?
Uzmimo sada u obzir i šta kaže zakon. U Srbiji je pravljenje i unošenje računarskih virusa sankcionisano Krivičnim zakonom, član 186v (moguće je da je došlo do promene u međuvremenu i smislu da ovaj član ima neki drugi broj). Evo citata iz zakona:
Pravljenje i unošenje računarskih virusa
Član 186v
(1) Ko napravi računarski virus u nameri da ga unese u tuđ računar ili računarsku mrežu, kazniće se novčanom kaznom ili zatvorom do jedne godine.
(2) Ko unese računarski virus u tuđ računar ili računarsku mrežu i time prouzrokuje štetu, kazniće se zatvorom od tri meseca do tri godine.
(3) Uređaji i sredstva kojima su učinjena krivična dela iz st. 1 i 2 ovog člana, oduzeće se.
Napomena: Mislim da je trebalo koristiti termin "zlonamerni kod", jer pojmom "računarski virus" nisu obuhvaćene ostale vrste zlonamernog koda, kao što su: logičke bombe, crvi, špijunski softver, rootkitovi, zombiji, trojanski konji i slično.
Na osnovu ovoga možemo zaključiti da, ako se virus piše sa namerom da se unese u tuđ računar, to je prekršaj ili krivično delo. Ako taj virus prouzrokuje štetu, onda je kazna veća. Ali, ako se to radi u svrhe proučavanja, bez namere da se unese u tuđ računar ili mrežu, onda nije. Zaključak je da, u strogo kontrolisanim uslovima, prema našim zakonima, ne bi trebao biti problem da se studenti nauče kako se pišu virusi. Obrazovanje na ovu temu ima upravo za cilj da školuje stručnjake koji umeju da odbrane sisteme i da skrene pažnju na etičke - moralne aspekte i vaspitno deluje na studente upozoravajući ih da nipošto ne primene znanje u destruktivne svrhe već samo u odbrambene, kao da ih upozori i na zakonske posledice uslučaju kršenja normi i pravila.
Ali pogledajmo drugu stranu. Kako biti siguran da će to znanje biti korišteno samo u odbrambene svrhe? Kako studente upozoriti, vaspitati i kako učiniti da oni to prihvate na ispravan, etičan način, disciplinovano i bez želje da stečeno znanje zloupotrebe? Da li se ovde može primeniti analogija za biološkim (humanim) virusima tj. virusima koji napadaju ljude? Verovatno da, jer su virusi od kojih se oboleva i možda čak i umire, barem za nijansu opasniji od računarskih virusa. Računar je ipak „samo" sprava. Ali, računari upravljaju složenim sistemima danas, a neki od tih sistema mogu, usled zaraze računarskim virusima, proizvesti dejstva koja mogu imati veoma teške posledice.
Tehnologija, sama po sebi, nije zlonamerna. Međutim, njena primena može biti zlonamerna.
Svakako, veoma je bitno da se definišu i poštuju pravne, etičke i društvene norme, kao i norme ponašanja. Bitno je da se obezbede sve tehničke mere u pogledu fizičke i tehničke sigurnosti sistema na kome se ova obuka eventualno izvodi.
Dakle, dilema uopšte nije jedinstavna.
Izvori:Ukoliko vas zanima, evo nekolih drugih resursa na ovu temu, koji su raspoloživi na Internetu:
1. J. Aycock, K. Barker, Viruses 101, Proceeding SIGCSE '05 Proceedings of the 36th SIGCSE technical symposium on Computer science education, ACM New York, NY, USA ©2005
2. George Ledin Jr, Not Teaching Viruses and Worms Is Harmful, Inside Risks 175, CACM 48, 1, January 2005,
3. Blog post: Should We Teach Students How To Write Viruses?
4. Teaching students how to write malware
5. Vesselin Bontchev Should We Teach Virus Writing? Upozorenje: za ovaj sajt, McAfee Site Advisor u ovom trenutku pokazuje crvenu boju, što znači da na njemu ima sadržaja koji nisu baš sigurni.
6. Mary Landesman, Virus Writing 101 - College credit for writing malicious code?