Course details
Secure Coding
Guarantor
Course coordinator
Language of instruction
Completion
Time span
- 26 hrs lectures
- 26 hrs projects
Assessment points
- 55 pts final exam (written part)
- 45 pts projects
Department
Lecturer
Kolář Dušan, doc. Dr. Ing. (DIFS)
Malinka Kamil, Mgr., Ph.D. (DITS)
Instructor
Learning objectives
Study literature
- Fred Long et al. The Oracle/CERT Secure Coding Standard for Java, Addison-Wesley, 2011. Available online at http://www.cert.org/secure-coding/
- The OWASP web application security project: https://www.owasp.org/
- Mitigating the Risk of Software Vulnerabilities by Adopting a Secure Software Development Framework (SSDF), https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.04232020.pdf
- Michael Howard, David LeBlanc: Writing Secure Code, Microsoft Press, Second Edition, ISBN-13: 978-0735617223
- John Viega, Matt Messier: Secure Programming Cookbook for C and C++, 2003, O'Reilly Media, Inc., ISBN: 9780596003944
- Michael Howard, Steve Lipner: The Security Development Lifecycle, 2006, Microsoft Press, ISBN: 0735622140
- Ross Anderson: Security Engineering: A Guide to Building Dependable Distributed Systems, 3rd Edition, ISBN: 978-1-119-64281-7
Syllabus of lectures
- Úvod, 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, ...). (DK)
- Cíle útočníků, únik z pískovište, elevace privilegií, cesta od zranitelnosti k exploitu, CVE. (HaP)
- Základní zranitelnosti kompilovaných jazyků - buffer overflow, řetězce, integer overflow. (HaP)
- 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. (HaP)
- Usable security a vliv UX na bezpečnost celého systému. Bezpečnost implementace protokolů, IoT, bezpečnost API. (KM)
- Validace vstupních hodnot, testování, fuzzing. (DK)
- Statická a dynamická analýza. (DK)
- Standardy pro bezpečné kódování, OWASP, SSDF. (KM)
- Bezpečné generování náhodných čísel. (HaP)
- Seminář - Útok na javascript a jak se tomu bránit. (DK, KM)
- Seminář - Útok na Java a jak se tomu bránit. (DK, KM)
- Seminář - Útoky na binárku a jak se tomu bránit. (DK, KM)
- Seminář - Demonstrace zajímavých projektů, řešení. (KM)
Syllabus - others, projects and individual work of students
Samostatně řešené projekty.
Course inclusion in study plans