Enrolment options

Secure Coding, Praktische Methoden zur Entwicklung von hardwarenaher sicherer Software

Überblick sichere Softwareentwicklung: Softwareentwicklungsprozesse, Methoden, Testen, Reviews

Typische Schwachstellen und Ihre Folgen: Typische Sicherheitsprobleme in maschinennahen Programmen (C/C++) wie Überläufe (Puffer, Zahlen), implizite Datentyp Konvertierung, Speicherlecks, Speicherinitialisierung etc. und Ihre Folgen wie Rechteausweitung, Verweigerung des Dienstes (DoS), etc. (Capture the Flag)

Typische Fehler und deren Vermeidung: Code-Qualität, Code-Standards und Regeln, keine magischen Werte, garantierte Initialisierung, Überprüfung aller Eingaben und Ausgaben, Nutzung geprüfter Bibliotheken für passende abstrakte Datentypen, Moderne Sprachmittel zur typsicheren Programmierung, Fokus C/C++

Statische und dynamische Analyse: Finden von typischen Fehlern mit Hilfe von statischen (Quellcode) wie zum Beispiel Clang-Analyzer und dynamischer (Laufzeit) Analyse wie zum Beispiel valgrind und Adress-Sanitizer

Build, Test, Review: Erhöhung der Codequalität durch automatisiertes Testen, Anpassung von Code-Standards, statische und dynamische Checks und deren automatisierte Überprüfung, Code-Reviews, Fuzzing

Einsatz sicherer Programmiersprachen: Maschinennahe Sprachen mit Konzepten für typsichere Speicherüberprüfung und Speicherbesitz wie zum Beispiel Rust (und Garbage Collection und integrierte Nebenläufigkeit wie zum Beispiel Go)

Self enrolment (Student)
Self enrolment (Student)