Безбедност софтвера

Циљ и исход предмета

Упознавање са основама безбедности софтвера, најчешћим проблемима и начинима њиховог решавања. Студент разуме значај безбедности софтвера, способан је да препозна пропусте у безбедности софтвера, да осмисли и примени механизме избегавања или уклањања оваквих пропуста.

Теоријска настава

Проактивни процес развоја безбедног софтвера. Безбедносни принципи. Анализа и управљање ризиком. Моделовање претњи. Архитектуре безбедног софтвера. Архитектонски шаблони (патерни) безбедног софтвера. Употреба безбедних оперативних система. Безбедни апликациони програмски интерфејси. Антифорензичке технике. Безбедносни пропусти у развоју софтвера. Цели бројеви и конверзија типова. Целобројно прекорачење. Рад са стринговима. Преокрачење бафера. Прекорачење стека, heap меморије, низова. Грешке у форматирању стрингова. Ињекција кода. Манипулације повратном адресом (Return-Oriented Programming). Безбедан рад са поинтерима и виртуелним поинтерима. Динамичко управљање меморијом. Проблем вишеструког ослобађања меморијског блока. Безбедносни проблеми у конкурентном окружењу. Извршавање са најнижом привилегијом. Контрола приступа. Правилан избог стандардне и дискреционе контролне листе приступа. Валидација и заштита улазних података. Употреба регуларних израза. Канонички формат података. Улазни подаци из базе података. Употреба уграђених процедура. Безбедни SQL упити. Безбедост сокета. Безбедни веб софтвер. Проблеми са интернационализацијом. Безбедност софтверских компоненти. Заштита од DoS напада. Безбедно програмирање код управљаних језика (JVM и .NET). Тестирање безбедности (fuzzing). Ревизија изворног кôда, анализа композиције (SCA) и динамичко профилисање. Безбедна инсталација софтвера. Документација безбедног софтвера.

Практична настава

Примери програмског кода у којима постоји проблем препуњености бафера или изласка из опсега вредности. Илустрација проблема SQL ињекције. Врсте малициозног софтвера (virus, worm, rootkit, backdoor, trojan, ransomware). Појам рањивости и нултог дана. Рад са базом CVE (Common Vulnerabilities and Exposures). Безбедност критичне инфраструктуре. Анализа неких познатих претњи и напада (Stuxnet, Duqu, WannaCry, Nitro, LoJax, Drovorub). Kali Linux алати дигиталне форензике (Guymager, FTK Imager, Foremost, Scalpel, Volatility, Mimipenguin, Autopsy). Дисекција малициозних програма и увод у реверзно инжењерство. Употреба интерактивног дисасемблера за Intel x86 архитектуру. CERT стандарди за развој безбедног софтвера.

1 thought on “Безбедност софтвера”

Comments are closed.