Hakeri stalno osmišljavaju nove i lukavije načine kako bi dobili pristup sistemima i izvršili krađu poverljivih podataka, nezakonito pribavili finansijska sredstava ili uništili reputaciju i rezultat privrednog subjekta ili organizacije.
Upravo zbog toga, bezbednost na visokom nivou treba da bude krajnji cilj svakog projekat – pored postizanja funkcionalnosti. Visoka bezbednost znači da aplikacija, softver ili sajt nema bezbednosnih propusta i da neće podleći zlonamernom unosu korisnika ili iznenadnim napadima.
Postizanje tog cilja predstavlja izazov, zbog čega ažurirani dokumenti međunarodne organizacije za standarde (ISO) 27001/27002 naglašavaju testiranje bezbednosti tokom životnog ciklusa razvoja softvera.
U stvari, standard za bezbednost informacija, sajber-bezbednost i zaštitu privatnosti ISO 27001 i njegov prateći dokument, ISO 27002, oba ažurirana u oktobru 2022, sada posebno zahtevaju testiranje bezbednosti životnog ciklusa razvoja softvera, navodeći da procese testiranja bezbednosti treba definisati i implementirati u životni ciklus razvoja softvera.
Šta podrazumeva razvojna politika bezbednosti?
Razvojna politika bezbednosti je skup pravila koja pomažu organizacijama da ublaže rizik od bezbednosnih propusta u razvojnim okruženjima – tj. virtuelnim radnim prostorima u kojima organizacije vrše promene u softveru i veb aplikacijama bez uticaja na proizvod.
Da bismo u potpunosti shvatili važnost politike, prvo moramo objasniti njeno mesto u Aneksu A.14 standarda iso/iec 27001.
A.14 se fokusira na bezbednosne zahteve procesa razvoja i podrške i pokriva pitanja kao što su proceduralne kontrole, promene u sistemima, spoljni razvoj i testiranje bezbednosti sistema.
Politika treba da sadrži uputstva o tome kako kontrolisati programere, kako bezbedno kodirati i pratiti efikasne razvojne prakse, kao i koji su principi sigurnog kodiranja. Takođe treba da pruži specifične informacije o načinima na koje se bezbednost mora uzeti u obzir u svakoj fazi životnog ciklusa razvoja softvera.
Šta sadrži politika bezbednog razvoja?
Kao i sa ISO 27001 uopšteno, politika bezbednog razvoja mora da uzme u obzir bezbednosne rizike i strategije povezane sa svakim od tri stuba informacione bezbednost. Informaciona sigurnost uključuje ljude, procese i tehnologije.
Ljudi
Kada kažemo „Ljudi“ ovde prvenstveno mislimo na vaše programere. Ključno je da uspostavite određena pravila u vezi sa njima, jer njihove greške ili zlonamerne radnje mogu naneti veliku štetu vašoj organizaciji.
Politika treba da odredi minimalne zahteve za programere, u smislu kvalifikacija, nivoe iskustva itd. Oni ne moraju biti specifični, ali bi trebalo da osiguraju da svaki programer ispunjava minimalni standard za razvoj vaših sistema i softvera. Ovo smanjuje rizik da greška programera ostane neprimećena ili mogućnost da namerno sabotiraju softver ili aplikaciju.
Procesi
Postoji nekoliko procesa kojima se morate baviti u svojoj politici bezbednog razvoja, kao što je odvajanje razvojnog od operativnog okruženja i testiranje.
Gotovo je samo po sebi potrebno da izolujete svoje razvojno i operativno okruženje – ako to ne radite znači da će sve promene koje napravite u razvoju odmah stupiti na snagu u vašem softveru ili aplikaciji.
Trebalo bi da kreirate proces autorizacije koji kontroliše kretanje iz jednog okruženja u drugo. Ovo smanjuje rizik od neovlašćenih izmena programera, čime se obezbeđuje da sve izmene prođu kroz proces odobravanja.
Ovo je standardna procedura za razvoj proizvoda i usluga, ali organizacije često zaboravljaju da moraju da implementiraju i okruženje za testiranje koje se razlikuje od obe ove faze.
Ovo ima funkcionalne i bezbednosne prednosti. Za početak, programeri i testeri često rade u isto vreme. Kao takva, faza razvoja je podložna čestim promenama, sa alatima koji rade u okruženju koji bi mogli poremetiti ili u potpunosti uništiti proces testiranja. Izolacijom ovih okruženja, takođe pokazujete da su to različiti procesi, sa različitim ljudima odgovornim za svaki.
Tehnologije
Što se tiče tehnologije, prvo razmatranje u vašoj politici bezbednog razvoja trebalo bi da bude u vezi smernica o programskim jezicima i kodiranju. Politika treba da uputi programera na specifične smernice za svaki jezik i alatku.
Na primer, organizacije mogu naložiti da programeri slede određene najbolje prakse. Jezik kodiranja i razvojni alati neizbežno sadrže slabosti ili neobične karakteristike koje mogu dovesti do ranjivosti ili nekontrolisanog ponašanja. Programeri moraju primeniti određene tehnike kako bi ojačali vaš softver ili aplikaciju.
Više alata potrebno za ISO 27001
ISO 27001 dokumenti predstavljaju strategiju za upravljanje bezbednosnim rizicima tokom razvoja i primene aplikacija. Dokument ISO 27001 opisuje željene karakteristike sistema upravljanja bezbednošću informacija, dok dokument ISO 27002 definiše specifične direktive i politike koje bi programeri trebalo da primenjuju da bi sačuvali poverljivost, integritet i dostupnost informacija.
Na sreću, dostupni su mnogi alati za testiranje bezbednosti aplikacija tokom celog razvojnog ciklusa. Neki alati traže slabosti u kodu, drugi testiraju korisničke unose u pokrenutom programu, treći prate pokrenuti program radi mogućih upada.
Nijedan od ovih alata nije dovoljan sam po sebi. Svaka kategorija alata za testiranje bezbednosti ima svoje mesto u paketu bezbednosnog testiranja. Zbog toga je potreban sveobuhvatan, višestepeni i više metodološki pristup ako želite da poboljšate bezbednost životnog ciklusa razvoja softvera.
U ranim fazama uočite grešku u kodiranju
Kako biste otkrili slabe tačke u prvim ciklusima kodiranja i pre nego što se aplikacija pokrene, potrebno je da koristite alate za statičko testiranje bezbednosti aplikacije i analizu sastava softvera. Organizacije često koriste ove dve opcije jer imaju pristup kodu.
Alati za statičko testiranje bezbednosti aplikacija skeniraju izvorni kod u potrazi za slabostima. Na primer, traže nedostatke zabeležene na listi Common Weakness Enumeration (CVE), 25 najopasnijih softverskih grešaka koje je identifikovao SANS Institut i Open Veb Application Securiti Project (OVASP).
Ovi alati mogu rano otkriti mane u razvojnom toku softvera ali u kodu koji je raspoređen, a nije aktiviran. Mnogi od ovih alata se integrišu direktno u sisteme izgradnje i sisteme za praćenje problema.
Ovo čini testiranje sastavnim delom životnog ciklusa razvoja softvera, a ne dodatnim korakom koji bi programeri mogli biti u iskušenju da preskoče ako su u stisci sa vremenom. Jedan nedostatak je taj što neki od ovih alata sporo rade i mogu prijaviti lažne pozitivne rezultate.
Alati za analizu sastava softvera su dizajnirani da provere ranjive softverske komponente otvorenog koda. Sastavni deo današnjih aplikacija, softver otvorenog koda čini, u proseku, 78% baze koda primenjenih aplikacija. Ovi alati imaju tendenciju da budu brzi i imaju niske stope lažnih pozitivnih rezultata, ali imaju ograničen obim. Alati za analizu sastava softvera i alati za statičko testiranje bezbednosti aplikacija su dobri kako za početno kodiranje, tako i za validaciju ažuriranja softvera u okruženju kontinuirane integracije/kontinuirane isporuke.
Nastavite sa testiranjem primenjenog koda
Jednom kada se aplikacija pokrene, bilo u probnom okruženju ili raspoređena u proizvodnom sistemu, imate više opcija za testiranje bezbednosti. Alati za testiranje bezbednosti interaktivnih aplikacija stupaju u interakciju sa pokrenutom veb aplikacijom da bi pružili uvid u vreme izvršavanja.