Seminar Secure Coding mit C und C++

Seminarbeschreibung

Fehler in nativer Software können unmittelbar Speicherzustand und Kontrollfluss beeinflussen. Das Seminar verbindet deshalb Programmierregeln mit beobachtbarer Fehlersuche am laufenden Programm. Behandelt werden typische Ursachen wie ungültige Lebenszeiten, fehlerhafte Längenberechnung und unvollständige Fehlerbehandlung.

Ein vorbereiteter Parser mit C- und C++-Komponenten dient als Übungsprojekt. Sichere Abstraktionen, Ressourcenverwaltung und klar definierte Schnittstellen werden mit automatisierten Prüfungen kombiniert. Compilerhärtung wird als zusätzliche Schutzschicht eingeordnet. Der Schwerpunkt liegt auf nachvollziehbaren Reparaturen und Tests; die vollständige Neuentwicklung eines großen nativen Systems ist nicht Gegenstand des Seminars.

Inhalte im Überblick

  • Fehlermodell und sichere Schnittstellen
  • Speichergrenzen und Objektlebenszeiten
  • Integerarithmetik und Längenberechnungen
  • Parser, Dateien und Fehlerpfade
  • Nebenläufigkeit und geteilte Ressourcen
  • Sanitizer und Fuzzing
  • Härtung und geprüfte Fehlerkorrektur

Zielgruppe

C- und C++-Entwickler, Entwickler nativer Bibliotheken und systemnaher Anwendungen, technische Qualitätssicherung sowie Security Engineers mit Quellcodezugriff.

Voraussetzungen

Gute Kenntnisse in C oder C++ einschließlich Zeigern, Speicherverwaltung und Build-Prozessen. Grundkenntnisse der jeweils anderen Sprache, Debugger-Erfahrung und sichere Bedienung einer Linux-Entwicklungsumgebung werden vorausgesetzt.

Seminarinhalte

Fehlermodell und sichere Schnittstellen

  • Undefiniertes Verhalten, Speichergültigkeit und Vertrauensgrenzen bei nativen Schnittstellen unterscheiden.
  • Annahmen über Puffergrößen, Besitz und Fehlerzustände explizit dokumentieren.
  • Compilerwarnungen und statische Prüfungen als Teil des Entwicklungsablaufs einsetzen.

Speichergrenzen und Objektlebenszeiten

  • Ungültige Zugriffe, Use-after-free und doppelte Freigaben im Labor diagnostizieren.
  • Ressourcen in C konsistent verwalten und in C++ geeignete RAII- und Besitzmodelle einsetzen.
  • Sichere Container und begrenzte Ansichten passend verwenden; Lebenszeiten weiterhin ausdrücklich prüfen.

Integerarithmetik und Längenberechnungen

  • Vorzeichenwechsel, Überläufe, Abschneidung und fehlerhafte Größenberechnungen erkennen.
  • Eingabebereiche vor Speicherzuweisung und Zeigerarithmetik kontrollieren.
  • Randwerte und fehlerhafte Längenangaben mit gezielten Tests absichern.

Parser, Dateien und Fehlerpfade

  • Eingabestrukturen mit eindeutigen Grenzen, Zuständen und Ressourcenbudgets verarbeiten.
  • Fehlerpfade auf konsistente Freigabe und gültige Objektzustände prüfen.
  • Pfadzugriffe, temporäre Dateien und externe Bibliotheksaufrufe begrenzen.

Nebenläufigkeit und geteilte Ressourcen

  • Datenrennen, unzulässige Zustandswechsel und zeitabhängige Prüfungen untersuchen.
  • Synchronisation und Objektlebenszeit gemeinsam betrachten.
  • Nebenläufige Fehler mit geeigneter Instrumentierung und wiederholten Tests eingrenzen.

Sanitizer und Fuzzing

  • Geeignete Sanitizer-Konfigurationen getrennt aufbauen und diagnostische Meldungen interpretieren.
  • Einen vorhandenen Fuzzing-Harness anpassen, Startkorpus bereitstellen und Laufzeit begrenzen.
  • Absturzfälle minimieren, die Fehlerursache bestimmen und einen Regressionstest ableiten.

Härtung und geprüfte Fehlerkorrektur

  • Geeignete Compiler- und Linker-Schutzoptionen aktivieren und ihre Grenzen erklären.
  • Eine Reparatur mit Funktions-, Randwert- und Instrumentierungstests überprüfen.
  • Sicherheitskritische Schnittstellen anhand einer fokussierten Reviewliste abnehmen.

Praxisübungen

  1. Das native Beispielprojekt mit Warnungen und passenden Sanitizern bauen.
  2. Einen vorbereiteten fehlerhaften Eingabefall ausführen und die Diagnose bis zur Ursache verfolgen.
  3. Speicher- oder Integerfehler beheben und die Schnittstellenannahmen präzisieren.
  4. Einen Fuzzing-Harness erweitern, einen Fehlerfall minimieren und als Regressionstest übernehmen.
  5. Nebenläufigkeits- und Fehlerpfadtests ausführen und einen gehärteten Build überprüfen.

Schulungsumgebung

Vorbereitete Linux-Entwicklungsumgebung mit C/C++-Compiler, Debugger, Build-Werkzeug, Sanitizern und Fuzzing-Werkzeug. Das Projekt enthält abgegrenzte C- und C++-Komponenten sowie reproduzierbare Fehlerfälle.

Seminarauswahl

Zur Übersicht und zu den empfohlenen Lernwegen

Ansprechpartner

Seminardetails

Dauer: 4 Tage, ca. 6 h/Tag, insgesamt ca. 24 Unterrichtsstunden; Beginn 1. Tag: 10:00 Uhr, weitere Tage: 09:00 Uhr
Preis: Öffentlich oder Live Stream: € 2.396 zzgl. MwSt.
Inhaus: € 6.800 zzgl. MwSt.
Teilnehmeranzahl: min. 2 - max. 8
Teilnehmer: C- und C++-Entwickler, Entwickler nativer Bibliotheken und systemnaher Anwendungen, technische Qualitätssicherung sowie Security Engineers mit Quellcodezugriff.
Voraussetzungen: Gute Kenntnisse in C oder C++ einschließlich Zeigern, Speicherverwaltung und Build-Prozessen. Grundkenntnisse der jeweils anderen Sprache, Debugger-Erfahrung und sichere Bedienung einer Linux-Entwicklungsumgebung werden vorausgesetzt.
Standorte: Stream Live, Inhaus/Firmenseminar, Berlin, Bremen, Darmstadt, Dresden, Erfurt, Essen, Flensburg, Frankfurt, Freiburg, Friedrichshafen, Hamburg, Hamm, Hannover, Jena, Kassel, Köln, Konstanz, Leipzig, Luxemburg, Magdeburg, Mainz, München, Münster, Nürnberg, Paderborn, Potsdam, Regensburg, Rostock, Stuttgart, Trier, Ulm, Wuppertal, Würzburg
Methoden: Vortrag, Demonstrationen, praktische Übungen am System
Seminararten: Öffentlich, Webinar, Inhaus, Workshop - Alle Seminare mit Trainer vor Ort, Webinar nur wenn ausdrücklich gewünscht
Durchführungsgarantie: ja, ab 2 Teilnehmern
Sprache: Deutsch - bei Firmenseminaren ist auch Englisch möglich
Seminarunterlage: Dokumentation auf Datenträger oder als Download
Teilnahmezertifikat: ja, selbstverständlich
Verpflegung: Kalt- / Warmgetränke, Mittagessen (wahlweise vegetarisch)
Support: 3 Anrufe im Seminarpreis enthalten
Barrierefreier Zugang: an den meisten Standorten verfügbar
  Weitere Informationen unter + 49 (221) 74740055

Seminartermine

Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.

Seminar Startdatum Enddatum Ort Dauer
Zürich 4 Tage
Stream live 4 Tage
Stream gespeichert 4 Tage
Luzern 4 Tage
Bern 4 Tage
Inhaus / Firmenseminar 4 Tage
Sankt Gallen 4 Tage
Basel 4 Tage
Winterthur 4 Tage
Winterthur 4 Tage
Zürich 4 Tage
Stream live 4 Tage
Stream gespeichert 4 Tage
Luzern 4 Tage
Bern 4 Tage
Inhaus / Firmenseminar 4 Tage
Sankt Gallen 4 Tage
Basel 4 Tage
Basel 4 Tage
Winterthur 4 Tage
Zürich 4 Tage
Stream live 4 Tage
Stream gespeichert 4 Tage
Luzern 4 Tage
Bern 4 Tage
Inhaus / Firmenseminar 4 Tage
Sankt Gallen 4 Tage
Sankt Gallen 4 Tage
Basel 4 Tage
Winterthur 4 Tage
Zürich 4 Tage
Stream live 4 Tage
Stream gespeichert 4 Tage
Luzern 4 Tage
Bern 4 Tage
Inhaus / Firmenseminar 4 Tage
Nach oben
Seminare als Stream SRI zertifiziert
© 2026 www.seminar-experts.ch All rights reserved.  | Kontakt | Impressum | Cookie-Einstellungen | Nach oben