Detail předmětu

Bezpečné kódování

FEKT-CZV-SCOAk. rok: 2024/2025

Předmět seznamuje s principy a postupy bezpečného kódování. Bezpečné kódování znamená psaní programů bezpečným způsobem, aby se předešlo zranitelnostem, které mohou útočníci zneužít. Znamená to také náležitě a efektivně využívat funkce zabezpečení poskytované knihovnami, jako je ověřování a šifrování. Bude zvážena řada programovacích platforem, od nízkoúrovňových (např. Android OS), přes webové programování (např. JavaScript a Python) až po rozsáhlé jazyky na vysoké úrovni (např. Java). Budou zkoumány nové a vznikající jazykové bezpečnostní mechanismy, včetně způsobů statické a dynamické analýzy.  

Jazyk výuky

čeština

Počet kreditů

5

Garant předmětu

Vstupní znalosti

základní znalosti programování

Pravidla hodnocení a ukončení předmětu

zkouška a zápočet

Učební cíle

Cílem předmětu je seznámit studenty se základními principy bezpečného psaní programů a vysvětlit obecné principy zranitelných míst a obrany proti nim. K zajištění korektního návrhu a implementace aplikací tak, aby splňovali bezpečnostní požadavky je nutno začlenit praktiky bezpečného kódování jako běžnou součást všech fází procesu vývoje software. Klíčovým krokem je vzdělání vývojářů, tak aby znali podstatné základní principy bezpečného kódování, uměli je aplikovat, a to bez ohledu na prostředí ve kterém pracují.  

Studijní opory

Materiály ke studiu jsou k dispozici v e-learningu předmětu. 

Základní literatura

BLOKDYK, Gerard. Owasp: A Concise and Practical Tutorial. Createspace Independent Publishing Platform, 2017. ISBN 1979456046. RIVAL, Xavier; YI Kwangkeun. Introduction to Static Analysis. The MIT Press, 2020. ISBN 9780262043410. BLOKDYK, Gerard. Owasp: A Concise and Practical Tutorial. Createspace Independent Publishing Platform, 2017. ISBN 1979456046 (CS)
RIVAL, Xavier; YI Kwangkeun. Introduction to Static Analysis. The MIT Press, 2020. ISBN 9780262043410 (CS)

Zařazení předmětu ve studijních plánech

  • Program CZV3-Cyber celoživotní vzdělávání - dlouhodobý kurz 2 ročník, zimní semestr, povinně volitelný

Typ (způsob) výuky

 

Přednáška

26 hod., nepovinná

Vyučující / Lektor

Osnova

Úvod a rekapitulace pojmů (robustní kód, bezpečný kód, samo se chránící kód, reentrantní kód, intermediární kód, binární kód, binární kód pro VM, role OS, role VM)
Cíle útočníků, únik z pískovište, elevace privilegií, cesta od zranitelnosti k exploitu, CVE.
Základní zranitelnosti kompilovaných jazyků - buffer overflow, řetězce, integer overflow.
Mechanismy ochrany paměti, ochrana zásobníku, Return oriented programming, ASLR. Základní zranitelnosti interpretovaných jazyků - práce s pamětí, use after free.
Procesy a nástroje bezpečného vývoje SW, použitelná bezpečnost a vliv UX na bezpečnost celého systému, bezpečnost API.
Validace vstupních hodnot, testování, fuzzing.
Statická a dynamická analýza.
Aplikační bezpečnost, standardy pro bezpečné kódování, OWASP, SSDF.
Bezpečné generování náhodných čísel.
Vybrané útoky a jak se jim bránit.  

Laboratorní cvičení

13 hod., povinná

Vyučující / Lektor