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
- Das native Beispielprojekt mit Warnungen und passenden Sanitizern bauen.
- Einen vorbereiteten fehlerhaften Eingabefall ausführen und die Diagnose bis zur Ursache verfolgen.
- Speicher- oder Integerfehler beheben und die Schnittstellenannahmen präzisieren.
- Einen Fuzzing-Harness erweitern, einen Fehlerfall minimieren und als Regressionstest übernehmen.
- 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
Ansprechpartner
-

Lucas Beich
Telefon: + 49 (221) 74740055
E-Mail: lucas.beich@seminar-experts.de -

Paul Goldschmidt
Telefon: + 49 (221) 74740055
E-Mail: paul.goldschmidt@seminar-experts.de
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.
