„`html
Zusammenfassung
Die Bibliothek driftregion iso14229 in Version 0.9.0 und älter enthält eine kritische Integer-Underflow-Schwachstelle in der Funktion Handle_0x27_SecurityAccess(). Diese ermöglicht es einem unauthentifizierten Angreifer, einen UDS-Server zum Absturz zu bringen oder Speicher jenseits des Empfangspuffers auszulesen. Der Exploit erfordert lediglich das Senden einer verformten Single-Byte 0x27 SecurityAccess-Anfrage nach einer validen 0x27-Nachricht.
Betroffene Systeme
Alle Systeme, die iso14229 bis Version 0.9.0 als UDS-Server implementieren, sind betroffen. Dies umfasst:
- Automotive ECUs (Electronic Control Units)
- Industrielle Controller
- IoT-Geräte
- Fahrzeuge mit diagnostischen Schnittstellen über CAN, OBD-II, ISO-TP und DoIP
Technische Details
Die Schwachstelle liegt in der fehlenden Eingabevalidierung. Die Funktion liest das SecurityAccess-SubFunction-Byte aus recv_buf[1], ohne zuvor zu überprüfen, ob recv_len mindestens 2 Bytes beträgt. Bei einer Nachrichtenlänge von 1 Byte führt die vorzeichenlose Subtraktion (uint16_t)(recv_len - UDS_0X27_REQ_BASE_LEN) zu einem Underflow, der einen Wert von 65535 ergibt.
Dieser übergroße Längenwert wird anschließend an die Anwendungs-Callbacks SecAccessValidateKey oder SecAccessRequestSeed übergeben. Diese iterieren typischerweise über diese Anzahl von Bytes aus dem 4-KB-Empfangspuffer und verursachen damit einen Out-of-Bounds-Read mit potenziellen Speicherlecks oder DoS.
Im Gegensatz dazu führen alle anderen UDS-Handler (0x10, 0x11, 0x14, 0x19, 0x22, 0x23, 0x28) explizite Längenchecks durch. Handle_0x27 ist die einzige Ausnahme.
Die Anfälligkeit ist im Standard-Diagnosemodus ohne vorherige Authentifizierung über CAN, OBD-II, ISO-TP und DoIP erreichbar.
Empfohlene Massnahmen
- Dringend auf eine gepatchte Version aktualisieren, sobald verfügbar
- Eingabevalidierungen in der SecurityAccess-Behandlung implementieren
- Diagnoseschnittstellen in Produktionsumgebungen einschränken
- Netzwerk-Segmentierung für UDS-relevante Schnittstellen durchführen
- Speicher-Boundary-Checks in Callbacks verstärken
Bewertung
CVSS v3.1: 8.2 (High)
Kritische Schwachstelle mit hohem Schadenspotenzial. Einfacher Angriffsvektor, keine Authentifizierung erforderlich, breite Auswirkungen auf Verfügbarkeit und Vertraulichkeit.
„`