Course details

Secure Coding

SCO Acad. year 2022/2023 Winter semester 5 credits

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. 

Guarantor

Course coordinator

Language of instruction

Czech

Completion

Credit+Examination (written)

Time span

  • 26 hrs lectures
  • 26 hrs projects

Assessment points

  • 55 pts final exam (written part)
  • 45 pts projects

Department

Lecturer

Instructor

Subject specific learning outcomes and competences

Studenti se naučí obecné principy a postupy bezpečného psaní programů. 

Learning objectives

 

Why is the course taught

V současnosti je stále vzrůstajícím problémem to, že díky nedokonalostem v programovém kódu aplikací se útočník může dostat k tak ceněným údajům uloženým na počítači, nebo nad počítačem získat vládu zcela. Cílem tohoto předmětu je jednak ukázat, jak k takové situaci může zcela neúmyslně dojít a jednak demonstrovat, jak je možné psát kód, který bude takovým útokům předcházet. 

Prerequisite knowledge and skills

Základní znalosti programování a algoritmizace. 

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

  1. Ú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)
  2. Cíle útočníků, únik z pískovište, elevace privilegií, cesta od zranitelnosti k exploitu, CVE. (HaP)
  3. Základní zranitelnosti kompilovaných jazyků - buffer overflow, řetězce, integer overflow. (HaP)
  4. 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)
  5. Usable security a vliv UX na bezpečnost celého systému. Bezpečnost implementace protokolů, IoT, bezpečnost API. (KM)
  6. Validace vstupních hodnot, testování, fuzzing. (DK)
  7. Statická a dynamická analýza. (DK)
  8. Standardy pro bezpečné kódování, OWASP, SSDF. (KM)
  9. Bezpečné generování náhodných čísel. (HaP)
  10. Seminář - Útok na javascript a jak se tomu bránit. (DK, KM)
  11. Seminář - Útok na Java a jak se tomu bránit. (DK, KM)
  12. Seminář - Útoky na binárku a jak se tomu bránit. (DK, KM)
  13. Seminář - Demonstrace zajímavých projektů, řešení. (KM)

Syllabus - others, projects and individual work of students

Samostatně řešené projekty.

Progress assessment

Bodové hodnocení výsledků vypracovaných projektů. 

Controlled instruction

Průběžná kontrola a hodnocení projektů, závěrečná zkouška. Pro získání bodů ze zkoušky je nutné zkoušku vypracovat tak, aby byla hodnocena více než 20 body. V opačném případě bude zkouška hodnocena 0 body. 

Exam prerequisites

Získání alespoň jednoho bodu z každého projektu a získání alespoň 10 bodů v průběhu semestru. Jakákoli forma plagiátorství nebo nesamostatné práce vede k neudělení zápočtu. Zápočty uděluje cvičící. 

Schedule

DayTypeWeeksRoomStartEndCapacityLect.grpGroupsInfo
Mon exam 2023-01-02 E112 11:0012:50řádná
Mon lecture 1., 6., 7., 13. of lectures D0207 11:0012:509999 1MIT 2MIT xx Kolář
Mon lecture 2., 3., 4., 9. of lectures D0207 11:0012:509999 1MIT 2MIT xx Hanáček
Mon lecture 5., 8., 10., 11., 12. of lectures D0207 11:0012:509999 1MIT 2MIT xx Malinka
Mon exam 2023-01-23 A112 14:0015:502. oprava
Thu exam 2023-01-12 A112 13:0014:501. oprava

Course inclusion in study plans

Back to top