Cilj i ishod predmeta
Upoznavanje sa osnovama bezbednosti softvera, najčešćim problemima i načinima njihovog rešavanja. Student razume značaj bezbednosti softvera, sposoban je da prepozna propuste u bezbednosti softvera, da osmisli i primeni mehanizme izbegavanja ili uklanjanja ovakvih propusta.
Teorijska nastava
Proaktivni proces razvoja bezbednog softvera. Bezbednosni principi. Analiza i upravljanje rizikom. Modelovanje pretnji. Arhitekture bezbednog softvera. Arhitektonski šabloni (paterni) bezbednog softvera. Upotreba bezbednih operativnih sistema. Bezbedni aplikacioni programski interfejsi. Antiforenzičke tehnike. Bezbednosni propusti u razvoju softvera. Celi brojevi i konverzija tipova. Celobrojno prekoračenje. Rad sa stringovima. Preokračenje bafera. Prekoračenje steka, heap memorije, nizova. Greške u formatiranju stringova. Injekcija koda. Manipulacije povratnom adresom (Return-Oriented Programming). Bezbedan rad sa pointerima i virtuelnim pointerima. Dinamičko upravljanje memorijom. Problem višestrukog oslobađanja memorijskog bloka. Bezbednosni problemi u konkurentnom okruženju. Izvršavanje sa najnižom privilegijom. Kontrola pristupa. Pravilan izbog standardne i diskrecione kontrolne liste pristupa. Validacija i zaštita ulaznih podataka. Upotreba regularnih izraza. Kanonički format podataka. Ulazni podaci iz baze podataka. Upotreba ugrađenih procedura. Bezbedni SQL upiti. Bezbedost soketa. Bezbedni veb softver. Problemi sa internacionalizacijom. Bezbednost softverskih komponenti. Zaštita od DoS napada. Bezbedno programiranje kod upravljanih jezika (JVM i .NET). Testiranje bezbednosti (fuzzing). Revizija izvornog kôda, analiza kompozicije (SCA) i dinamičko profilisanje. Bezbedna instalacija softvera. Dokumentacija bezbednog softvera.
Praktična nastava
Primeri programskog koda u kojima postoji problem prepunjenosti bafera ili izlaska iz opsega vrednosti. Ilustracija problema SQL injekcije. Vrste malicioznog softvera (virus, worm, rootkit, backdoor, trojan, ransomware). Pojam ranjivosti i nultog dana. Rad sa bazom CVE (Common Vulnerabilities and Exposures). Bezbednost kritične infrastrukture. Analiza nekih poznatih pretnji i napada (Stuxnet, Duqu, WannaCry, Nitro, LoJax, Drovorub). Kali Linux alati digitalne forenzike (Guymager, FTK Imager, Foremost, Scalpel, Volatility, Mimipenguin, Autopsy). Disekcija malicioznih programa i uvod u reverzno inženjerstvo. Upotreba interaktivnog disasemblera za Intel x86 arhitekturu. CERT standardi za razvoj bezbednog softvera.
1 thought on “Bezbednost softvera”
Comments are closed.