Fuzzing (Fuzz-Testing)
Fuzzing schickt fehlerhafte und unerwartete Eingaben an ein Steuergerät und achtet auf Abstürze, Resets und Hänger. Wie UDS- und CAN-Fuzzing funktionieren.
Aktualisiert Diese Seite als Markdown
Kurz gesagt
Fuzzing (Fuzz-Testing) ist eine Testmethode, die große Mengen fehlerhafter, zufälliger oder unerwarteter Eingaben an ein System schickt und auf Abstürze, Hänger, Resets oder anderes Fehlverhalten achtet. Bei Steuergeräten sind das meist UDS-Requests über ISO-TP oder DoIP oder rohe CAN- und CAN-FD-Frames. Fuzzing findet Parser- und Zustandsfehler, die kein spezifikationsbasierter Testfall abdeckt, und ISO/SAE 21434 nennt es unter den Methoden der Cybersecurity-Verifikation.
Was ist Fuzzing?
Fuzzing ist automatisiertes Negativtesten. Ein Fuzzer erzeugt ungültige, unerwartete oder zufällige Eingaben, schickt sie an das Testobjekt und beobachtet, was passiert. Das Ziel ist nicht zu prüfen, ob das System mit korrekten Eingaben das Richtige tut, sondern Eingaben zu finden, bei denen es etwas tut, was es nie tun sollte: abstürzen, hängen, neu starten, Speicher preisgeben oder einen Request annehmen, den es ablehnen müsste.
Es gibt zwei grobe Ansätze. Mutationsbasierte Fuzzer verändern gültige Nachrichten (Bits kippen, Längen ändern, Bytes anhängen). Generierungsbasierte Fuzzer bauen Nachrichten aus einem Modell des Protokolls. Beide brauchen einen Monitor, der Fehler erkennt, denn ein Fuzzer, der einen Absturz nicht von einer normalen Antwort unterscheiden kann, findet nichts.
Wo ist es definiert?
Fuzzing ist eine Methode, kein Protokoll, deshalb regelt keine Norm, wie man es macht. ISO/SAE 21434 nennt Fuzz-Testing in Kapitel 10 unter den Testmethoden der Cybersecurity-Verifikation bei Integration und Verifikation, neben Penetrationstests und Schwachstellenscans. Die Ziele sind anderswo definiert: UDS in ISO 14229-1, das ISO-TP-Framing in ISO 15765-2, CAN-Frames in ISO 11898-1.
Was es in der Praxis bedeutet
Am Steuergerät trifft Fuzzing zwei Schichten. UDS-Fuzzing schickt fehlerhafte Requests: falsche Längen, unbekannte Sub-Funktionen, überlange DID-Listen, Service IDs, die das Steuergerät nicht dokumentiert. CAN-Fuzzing schickt zufällige klassische oder FD-Frames auf die Arbitration IDs aus der DBC und zielt auf die Signal-Handler der Applikation. Der Transport ist ein eigenes Ziel: Wir sehen regelmäßig Steuergeräte, die bei fehlerhaften ISO-TP First Frames, bei einer angekündigten Länge, die nicht zum Rest passt, oder bei überlangen TransferData-Blöcken neu starten oder hängen.
Die Erkennung ist der schwierige Teil. Ein Steuergerät kann in 200 ms neu starten und danach normal antworten. Ein guter Monitor prüft nach jeder Iteration die Lebendigkeit, beobachtet die DTCs auf neue Fehlereinträge und speichert die Payload und die letzten Requests vor jedem Ausfall.
Wie AutoST es testet
AutoST fuzzt über UDS (zufällige Payloads bis 128 Bytes auf ausgewählten oder nicht standardisierten Service IDs, mit erneutem Session-Eintritt) und über CAN und CAN FD (zufällige Frames auf Arbitration IDs aus einer DBC). Jeder Lauf hat einen Seed und ist reproduzierbar. Nach jeder Iteration läuft ein TesterPresent-Liveness-Check, ein optionaler DTC-Monitor und Timeout-Erkennung ergänzen ihn, und jedes Finding speichert die Payload samt Vorgeschichte.
Häufige Missverständnisse
Fuzzing ist kein Schwachstellenscan: Ein Scan sucht bekannte Schwächen, Fuzzing sucht unbekannte. Es beweist auch nicht, dass ein Steuergerät robust ist. Ein Lauf, der in einer Stunde nichts findet, hat nur abgedeckt, was der Fuzzer in dieser Stunde gesendet hat.
FAQ
Häufig gestellte Fragen
Darf ich ein Steuergerät im Fahrzeug fuzzen?
Nur am Prüfstand oder an einem Fahrzeug, das sicher stillgelegt und isoliert ist. Fuzzing kann ein Steuergerät in einen Fehlerzustand bringen, Aktoren auslösen oder es unbrauchbar machen, deshalb gehört es nie an ein Fahrzeug im Verkehr.
Woran erkenne ich, dass ein gefuzztes Steuergerät abgestürzt ist?
An einem Monitor, der zwischen den Iterationen läuft: ein Liveness-Check wie TesterPresent, eine Überwachung der DTC-Anzahl und Timeouts oder Transportfehler auf dem gefuzzten Request. Ohne Monitoring erzeugt ein Fuzzer nur Verkehr, keine Findings.
Warum ist Reproduzierbarkeit wichtig?
Ein Absturz, den niemand wiederholen kann, lässt sich weder beheben noch nachprüfen. Ein Fuzzer mit gespeichertem Seed und den letzten Payloads erlaubt es Entwicklern, genau die Sequenz erneut abzuspielen und den Fix im Re-Test zu bestätigen.
Quellen
- ISO/SAE 21434:2021 Straßenfahrzeuge, Cybersecurity Engineering, Kapitel 10 Produktentwicklung (Integration und Verifikation)
- ISO 14229-1:2020 Straßenfahrzeuge, Unified diagnostic services (UDS), Teil 1: Anwendungsschicht
- ISO 15765-2:2024 Straßenfahrzeuge, Diagnosekommunikation über CAN (DoCAN), Teil 2: Transportprotokoll und Netzwerkschichtdienste
Passende Seiten
- VergleicheUDS-Fuzzing vs. CAN-Fuzzing: Welche Schicht du angreifst und was brichtUDS-Fuzzing verändert Diagnose-Requests über ISO-TP; CAN-Fuzzing verändert rohe Frames und Signale. Andere Fehler, andere Risiken, und warum eine Kampagne beides braucht.
- VergleicheFuzzing vs. Schwachstellenscan am Steuergerät: Was welche Methode findetEin Schwachstellenscan stellt dem Steuergerät bekannte Fragen; Fuzzing schickt fehlerhafte Eingaben und wartet auf Crashes. Warum ISO/SAE 21434 beides empfiehlt.
- InsightsEine UDS-Fuzzing-Methodik, die echte Bugs findetWie du ein ECU über UDS fuzzt, ohne Läufe zu verschwenden: wohin injizieren, wie einen Crash erkennen, wie ein Finding reproduzierbar machen, und am Prüfstand bleiben.
- PlattformMach es am Prüfstand kaputt, nicht im Feld.AutoST fuzzt ECUs über UDS und CAN mit reproduzierbaren Seeds und Live-Crash-Erkennung per TesterPresent und DTC-Monitoring. Nur für den Prüfstand.
- GlossarDTC (Diagnostic Trouble Code, Fehlercode)Ein DTC ist ein Fehlercode, den ein Steuergerät bei einem erkannten Problem speichert. Das 3-Byte-Format in UDS, das Status-Byte, 0x19, 0x14 und die Rolle beim Fuzzing.
- GlossarISO-TP (ISO 15765-2)ISO-TP (ISO 15765-2) zerlegt UDS-Nachrichten in CAN-Frames mit Flow Control. Wie es funktioniert und warum fehlerhafte Frames Steuergeräte abstürzen lassen.
