Generative KI verändert die Softwarebranche grundlegend: Tools wie Claude Code, GitHub Copilot und andere ermöglichen es Entwicklern, ein bisher unerreichtes Maß an Effizienz zu erreichen. Dies ist zwar ein spannender Fortschritt, wirft jedoch auch wichtige Bedenken auf und veranlasst die Beteiligten dazu, diese Technologien mit Bedacht einzusetzen. Aktuellen KI-Tools fehlt es oft an dem differenzierten Verständnis, das erforderlich ist, um subtile, aber entscheidende Aspekte der Softwareentwicklung zu berücksichtigen, insbesondere im Bereich der Sicherheit.

Dieser Kurs vermittelt einen umfassenden Einblick in den verantwortungsvollen Umgang mit generativer KI beim Programmieren. Die Teilnehmer befassen sich eingehend mit Themen der Softwareentwicklung, die am ehesten von einem unachtsamen Einsatz generativer KI betroffen sind, darunter Authentifizierung, Autorisierung und Kryptografie. Der Lehrplan umfasst zudem eine Analyse, wie Claude Code, GitHub Copilot oder andere Tools mit sicheren Programmierpraktiken im Zusammenhang mit den in den OWASP Top Ten aufgeführten wichtigsten Sicherheitslücken umgehen, wie beispielsweise Path Traversal, SQL-Injection oder Cross-Site-Scripting.

Durch praktisches Lernen und Experimentieren erhalten die Teilnehmer ein solides Verständnis sowohl der Stärken als auch der Grenzen der KI-gestützten Entwicklung. Darüber hinaus zeigen Fallstudien von realen Vorfällen die Folgen von unsicherem Code auf und verdeutlichen die doppelte Natur der generativen KI als Ressource und potenzielles Risiko.

Am Ende des Kurses werden die Entwickler mit dem Wissen und den Fähigkeiten ausgestattet sein, KI-Tools verantwortungsvoll in den Lebenszyklus der Softwareentwicklung zu integrieren und so die Effizienz zu steigern, ohne die Sicherheit oder Produktqualität zu beeinträchtigen.

Diese Variante des Sicherheitskurses für C und C++ befasst sich ausführlich damit, wie bestimmte Sicherheitsprobleme im Code von GenAI behandelt werden. Anhand einer Reihe von praktischen Übungen sammeln die Teilnehmer Erfahrungen aus erster Hand darüber, wie man GenAI verantwortungsbewusst einsetzt und wie man das System dazu anleitet, den sichersten Code zu generieren. In manchen Fällen ist dies trivial, in den meisten Fällen jedoch nicht; und in wieder anderen Fällen ist es im Grunde unmöglich. Gleichzeitig vermitteln die Übungen allgemeine Erfahrungen im Umgang mit GenAI in der täglichen Programmierpraxis – was Sie davon erwarten können und in welchen Bereichen Sie sich nicht darauf verlassen sollten.

PRAKTISCHE INFO

  • Wenn eine Schulung vor Ort nicht möglich ist, können wir eine interaktive Online-Schulung (virtuell) oder eine Hybrid-Schulung anbieten. Das Standardprogramm mit 3 Tagen Inhalt kann auch in 5 halben Tagen (von Montag bis Freitag) durchgeführt werden.
  • Sind Sie neugierig, wie Sie den Return on Investment (ROI) von Schulungen zur sicheren Codierung quantifizieren können? Sehen Sie sich diesen Artikel.

Lernziele

  • Das Wesentliche der verantwortungsvollen KI verstehen

  • Machen Sie sich mit den wichtigsten Konzepten der Cybersicherheit vertraut

  • Korrekte Implementierung verschiedener Sicherheitsfunktionen

  • Identifizieren Sie Schwachstellen und ihre Folgen

  • Lernen Sie die besten Sicherheitspraktiken in C++

  • Verwaltung von Schwachstellen in Komponenten von Drittanbietern

  • Ansätze und Grundsätze der Eingabevalidierung.

Zielgruppe

C- und C++-Entwickler, die GenAI-Tools nutzen.

Kenntnisse:
Allgemeine C++- und C-Entwicklung.

Delivery Firmenintern (vor Ort oder online)
Dauer 3 consecutive days
Größe der Gruppe Bis zu 12 Teilnehmer
Anpassung Das Training wird flexibel an Ihre Organisation, Ihren Kontext und Ihre spezifischen Lernziele angepasst.
Sprache Englisch
Investment Auf Anfrage
Broschüre herunterladen

Programm

Tag 1
: Verantwortungsbewusstes Programmieren mit GenAI
Was ist Sicherheit?
Bedrohungen und Risiken
Arten von Cybersicherheitsbedrohungen – die CIA-Triade
Arten von Cybersicherheitsbedrohungen – das STRIDE-Modell
Folgen unsicherer Software
Was ist verantwortungsvolle KI?
Sicherheit und verantwortungsvolle KI in der Softwareentwicklung
Schwachstellen im Speichermanagement
Grundlagen der Assemblersprache und Aufrufkonventionen
•Grundlagen der x64-Assembler-Programmierung
•Register und Adressierungs
•Die häufigsten Anleitungen
•Aufrufkonventionen auf x64
oAufrufkonvention – worum es dabei geht
oAufrufkonvention auf x64
oDer Stapelrahmen
oGestapelte Funktionsaufrufe
Pufferüberlauf
•Speicherverwaltung und Sicherheits
en •Sicherheitsprobleme mit Buffer
•Pufferüberlauf auf dem Stack
oPufferüberlauf auf dem Stack – Stack-Smashing
oAusnutzung – Entführung des Kontrollflusses
oÜbung – Pufferüberlauf 101, Wiederverwendung von Code
oAusnutzung – Willkürliche Codeausführung
oEinfügen von Shellcode
oÜbung – Code-Injektion, Ausnutzung mit Shellcode
oFallstudie – Stack-BOF bei der Verarbeitung von „FriendlyName“ des Wemo Smart Plug
•Zeigermanipulation
oÄnderung von Sprungtabellen
oÜberschreiben von Funktionszeigern
: Bewährte Vorgehensweisen und einige typische Fehler
•Unsichere Funktionen
•Umgang mit unsicheren Funktionen
•Übung – Behebung eines Pufferüberlaufs
•Verwendung von std::string in C++
•Nicht terminierte Zeichenfolgen
•readlink() und die Beendigung von Zeichenketten
•Umgang mit C-ähnlichen Zeichenketten in C++
•Abschluss einer bösartigen Zeichenkette
•Übung – Verwirrung bezüglich der Zeichenfolgenabgrenzung
•Fehler bei der Berechnung der Stringlänge
Tag 2
: Absicherung der Speicherverwaltung
Sicherung der Toolchain
Compiler-Optionen und Instrumentierung
•Sicherheit der Toolchain in C++
•Verwendung von FORTIFY_SOURCE
•Labor – Auswirkungen von FORTIFY
•AddressSanitizer (ASan)
oVerwendung von AddressSanitizer (ASan)
oÜbung – Einsatz von AddressSanitizer
•Schutz vor Stack-Smashing
oErkennung von BoF mithilfe eines Stack-Canary
oArgumentklonierung
oSchutz vor Stack-Smashing auf verschiedenen Plattformen
oÄnderungen von SSP am Prolog und Epilog
oÜbung – Auswirkungen des Schutzes vor Stack-Smashing
Laufzeitschutzmechanismen
•Laufzeit-Instrumentierung
•Address Space Layout Randomization (ASLR)
oASLR auf verschiedenen Plattformen
oLabor – Auswirkungen von ASLR-
en oUmgehung von ASLR – NOP-Sleds
•Nicht ausführbare Speicherbereiche
oDas NX-Bit
o„Write XOR Execute“ (W^X)
oNX auf verschiedenen Plattformen
oLabor – Auswirkungen von NX-
oNX-Umgehung – Angriffe durch Wiederverwendung von Code
-Return-to-libc / Arc-Injection
oReturn-Oriented Programming (ROP)
-Schutz vor ROP
-Fallstudie – Systematische Ausnutzung einer MediaTek-Pufferüberlauf-
Häufige Sicherheitslücken in Software
Sicherheitsfunktionen
•Authentifizierung
•Passwortverwaltung
oSpeichern von Kontopasswörtern
oPasswort während der Übertragung
oÜbung – Reicht es aus, Passwörter lediglich zu hashen?
oWörterbuchangriffe und Brute-Force-Angriffe
o
-Salz oAdaptive Hash-Funktionen zur Speicherung von Passwörtern
•Richtlinie für Passwörter
oNIST-Anforderungen an Authentifikatoren für auswendig gelernte Geheimnisse
oMigration der Passwortdatenbank
, Codequalität
•Codequalität und Sicherheits
•Datenverarbeitung
oTypkonflikt „
“ oLabor – Typkonflikt
oInitialisierung und Bereinigung
-Konstruktoren und Destruktoren
-Initialisierung statischer Objekte
-Labor – Initialisierungszyklen
oUnveröffentlichte Quelle
-Freigabe von Arrays in C++
-Übung – Kombination von „delete“ und „delete[]“
•Fallstricke der objektorientierten Programmierung
oVererbung und Objekt-Slicing
oImplementierung des Kopieroperators
oDer Kopieroperator und die Veränderbarkeit
oVeränderlichkeit
-Veränderbare Prädikatfunktionsobjekte
-Lab – Objekt einer veränderbaren Prädikatfunktion „
“ – Verwendung anfälliger Komponenten
Sicherheit von KI-generiertem Code
•Praktische Angriffe auf Codegenerierungswerkzeuge
•Abhängigkeitshalluzination mittels generativer KI
•Fallstudie – Eine Chronologie der Schwachstellen von GitHub Copilot (bis Mitte 2025)
•Fallstudie – Agente-basierte Programmierung und Codesicherheit (ab Mitte 2025)
Tag 3
Häufige Sicherheitslücken in Software
Eingabevalidierung
•Grundsätze der Eingabevalidierung
•Sperr- und Zulassungslisten
•Was ist zu überprüfen – die Angriffsfläche
•Wo kann man die Validierung durchführen – mehrschichtige Sicherheit
•Wann sollte validiert werden – Validierung vs. Transformationen
•Injektion
oCode-Injection
-Befehlsinjektion im Betriebssystem
-Übung – Befehlsinjektion
-Bewährte Verfahren zum Umgang mit OS-Befehlsinjektionen
-Vermeidung von Befehlsinjektionen durch den Einsatz geeigneter APIs
-Labor – Bewährte Verfahren zur Befehlsinjektion
-Labor – Experimente zur Befehlsinjektion in GenAI
-Fallstudie – Befehlsinjektion im Zyxel-IKE-Paket-Decoder
•Probleme bei der Verarbeitung von Ganzzahlen
oDarstellung vorzeichenbehafteter Zahlen
oVisualisierung von ganzen Zahlen
oInteger-Promotion
oGanzzahlüberlauf
oÜbung – Ganzzahlüberlauf
oLabor – Experimente mit Ganzzahlüberlauf in GenAI
oFallstudie – Ganzzahl-Unterläufe bei der IPv6-Verarbeitung in tcpip.sys
oVerwechslung zwischen vorzeichenbehaftet und vorzeichenlos
oFallstudie – DoS-Angriff durch Verwechslung von signierten und unsignierten Werten bei DrayTek-Vigor-Routern
oLabor – Verwechslung von vorzeichenbehaftet und vorzeichenlos
oLabor – Experimente zur Verwechslung von vorzeichenbehafteten und vorzeichenlosen Werten in GenAI
oGanzzahlige Abschneidung
oÜbung – Abrundung ganzer Zahlen
oLabor – Experimente mit der Ganzzahl-Trunkierung in GenAI
oBewährte Verfahren
-Upcasting
–Prüfung der Voraussetzungen
-Tests zur Überprüfung von Postbedingungen
-Verwendung von Bibliotheken für große Ganzzahlen
-Bewährte Verfahren in der C-
–UBS: Änderungen an der Berechnungs
–Labor – Umgang mit Ganzzahlüberläufen auf Toolchain-Ebene in C++
-Bewährte Vorgehensweisen in C++
-Übung – Bewährte Vorgehensweisen beim Umgang mit Ganzzahlen in C++
-Fallstudie – Fehler bei der Ganzzahlprüfung in Skia
•Dateien und Streams

oPfaddurchlauf
oÜbung – Pfaddurchlauf
oBeispiele zum Thema „Path Traversal“
oFallstudie – Dateifälschung in WinRAR
oVirtuelle Ressourcen
oBewährte Vorgehensweisen für die Pfaddurchquerung
oLab – Kanonisierung von Pfaden
oLabor – Experimente zur Pfaddurchquerung in GenAI
•Probleme mit Formatierungszeichenfolgen
oDas Problem mit printf()
oÜbung - Ausnutzung von Formatstrings
Zusammenfassung
Grundsätze für sicheres Programmieren
•Grundsätze der robusten Programmierung von Matt Bishop
•Sicherheitsprinzipien von Saltzer und Schroeder
Und wie geht es nun weiter?
•Quellen zum Thema Softwaresicherheit und weiterführende Literatur
•Ressourcen zu C und C++
•Generative KI – Ressourcen und weitere Hinweise.

Methoden

Eine gemischte Lernreise: Live-Schulungen mit Ausbildern und Laborübungen in einem erstklassigen E-Learning-System. Sie haben noch 3 Monate nach der Schulung Zugang zum E-Learning-System, um die Laborübungen und das Material erneut zu studieren.

29 Übungen und 9 Fallstudien.

Standards und Referenzen: „
“, SEI CERT, CWE und Fortify-Taxonomie.

Zertifizierung

Nach der Teilnahme an dieser Schulung erhalten die Teilnehmer ein Zertifikat des High Tech Institute.