ECU-Fuzzing erklärt: Fehler in UDS, DoIP und SOME/IP finden
Wie Fuzzing für Steuergeräte funktioniert, welche Protokolle zählen, wie man Abstürze auf echter Hardware erkennt und was es für ISO/SAE 21434 bringt.
Zyberum Security Team · Veröffentlicht am · 7 Min. Lesezeit
Fuzz-Testing sendet fehlerhafte, unerwartete oder zufällige Daten an ein System und beobachtet, ob es versagt. Für Fahrzeugsteuergeräte ist es eine der wirksamsten Methoden, Speicherfehler und Robustheitsprobleme in Protokoll-Stacks zu finden, bevor Angreifer oder das Feld sie finden.
Warum Steuergeräte fuzzen?
Steuergeräte verarbeiten ständig nicht vertrauenswürdige Eingaben: Diagnoseanfragen über UDS, Service-Aufrufe über SOME/IP, Frames auf dem CAN-Bus, Pakete über Ethernet. Diese Parser sind meist in C oder C++ geschrieben, werden oft über mehrere Generationen wiederverwendet und selten mit feindlichen Eingaben getestet. Ein einziger Out-of-Bounds-Schreibzugriff in einem Diagnose-Handler kann zu einem Denial of Service führen, oder schlimmer, zu Codeausführung auf einem sicherheitsrelevanten Steuergerät.
Was gefuzzt wird
| Schnittstelle | Typische Ziele |
|---|---|
| UDS (ISO 14229) über CAN / DoIP | Session Control, ReadDataByIdentifier, WriteDataByIdentifier, SecurityAccess, RoutineControl, Transfer-Dienste |
| DoIP (ISO 13400) | Fahrzeugidentifikation, Routing Activation, Framing von Diagnosenachrichten |
| SOME/IP und SOME/IP-SD | Service Discovery, Methodenaufrufe, Serialisierung von Payloads |
| CAN / CAN FD | Signaldekodierung, ISO-TP-Segmentierung, Gateway-Routing |
| Funk (Bluetooth, WLAN) | Pairing, Profile, Management-Frames auf IVI- und Telematikeinheiten |
Drei Arten von Fuzzing
- Zufallsbasiertes („dummes“) Fuzzing: zufällige Bytes oder Frames. Günstig und schnell, gut für oberflächliche Parserfehler, doch die meisten Eingaben werden früh verworfen.
- Protokollbewusstes (generierungsbasiertes) Fuzzing: Eingaben werden aus einem Protokollmodell erzeugt, zum Beispiel gültige UDS-Service-IDs mit mutierten Subfunktionen und Längen. So werden deutlich tiefere Codepfade erreicht.
- Datenbankgestütztes Fuzzing: nutzt ODX/CDD-Diagnosedatenbanken, um zu wissen, welche DIDs und Routinen existieren, samt Datentypen und Längen, und mutiert genau diese. Das ist der effizienteste Ansatz, wenn Datenbanken verfügbar sind.
Fehler auf echter Hardware erkennen
Anders als beim Software-Fuzzing lässt sich an ein Steuergerät meist kein Sanitizer anhängen. Stattdessen nutzen Fuzzer Orakel:
- Lebendigkeitsprüfungen: Das Steuergerät antwortet noch auf TesterPresent oder einen bekannten DID
- Unerwartete Resets: Session-Abbrüche, ECU-Reset-Antworten, gesetzte DTCs
- Timing-Anomalien: Antwortzeiten weit außerhalb der Baseline
- Effekte auf Busebene: fehlende zyklische Botschaften des getesteten Steuergeräts
- Spannungs- und Stromüberwachung am Prüfstand
Jede Anomalie sollte mit der exakten Eingabesequenz gespeichert werden, damit Entwickler sie reproduzieren und analysieren können.
Fuzzing als Teil des Release-Prozesses
Den größten Nutzen bringt Fuzzing, wenn es keine einmalige Aktion ist, sondern bei jedem Software-Release läuft:
- Kampagnen am Prüfstand oder HIL in der CI ausführen
- Findings pro Steuergerät und Softwareversion nachverfolgen
- Ergebnisse mit der TARA und den Cybersecurity-Anforderungen verknüpfen, als Nachweis für ISO/SAE 21434
Genau diesen Workflow automatisiert unsere Security-Testsuite AutoST, mit Fuzzing-Engines für UDS, DoIP, SOME/IP und CAN/CAN FD. Für tiefergehende manuelle Analysen bietet unser Team Penetrationstests für Automotive.
FAQ
Häufig gestellte Fragen
Was ist Fuzz-Testing?
Fuzz-Testing (Fuzzing) ist ein automatisiertes Verfahren, das große Mengen ungültiger, unerwarteter oder zufälliger Eingaben an ein Programm oder Gerät sendet, um Abstürze, Hänger oder anderes Fehlverhalten auszulösen, das auf Bugs und mögliche Sicherheitslücken hinweist.
Ist Fuzzing nach ISO/SAE 21434 vorgeschrieben?
ISO/SAE 21434 nennt Fuzz-Testing als eine der empfohlenen Methoden zur Cybersecurity-Verifikation, neben funktionalen Tests, Schwachstellenscans und Penetrationstests. OEMs fordern Fuzzing-Berichte zunehmend von ihren Zulieferern.
Kann Fuzzing ein Steuergerät beschädigen?
Fuzzing kann ein Steuergerät in unerwartete Zustände versetzen, etwa indem Schreib- oder Flash-Routinen ausgelöst werden. Deshalb sollte es an Mustern auf dem Prüfstand, mit kontrolliertem Reset-Mechanismus und mit Vorsicht erfolgen, wenn Dienste wie RoutineControl oder RequestDownload im Scope sind.