ISO-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.
Aktualisiert Diese Seite als Markdown
Kurz gesagt
ISO-TP ist das Transportprotokoll aus ISO 15765-2, das Diagnosenachrichten trägt, die nicht in einen CAN-Frame passen. Es teilt eine Nachricht in einen First Frame und Consecutive Frames, und der Empfänger steuert den Ablauf mit Flow-Control-Frames (Block Size und Separation Time STmin). Kurze Nachrichten gehen in einem Single Frame. Jeder UDS-Request auf CAN oder CAN FD läuft über ISO-TP, deshalb ist dessen Parser der erste Code im Steuergerät, der von Angreifern kontrollierte Bytes verarbeitet.
Was ist ISO-TP?
ISO-TP ist die Netzwerk- und Transportschicht, mit der eine Diagnosenachricht, die länger als ein CAN-Frame ist, über CAN oder CAN FD läuft. Das erste Nibble jedes Frames, die Protocol Control Information (PCI), sagt, um welche Frame-Art es sich handelt:
| PCI | Frame | Bedeutung |
|---|---|---|
0x0N | Single Frame | Ganze Nachricht, N Bytes (bis 7 auf klassischem CAN) |
0x1N NN | First Frame | Beginn einer segmentierten Nachricht, 12-Bit-Gesamtlänge |
0x2N | Consecutive Frame | Nächstes Segment, Sequenznummer N von 1 bis F, dann wieder 0 |
0x30 / 0x31 / 0x32 | Flow Control | Weiter, warten, Überlauf; danach Block Size und STmin |
Das Lesen einer 20 Byte langen VIN-Antwort sieht mit Normal Addressing so aus. Der Tester schickt 03 22 F1 90 55 55 55 55 (Single Frame, Padding 55). Das Steuergerät antwortet mit einem First Frame 10 14 62 F1 90 57 56 57 (0x014 = 20 Bytes), der Tester antwortet 30 00 00 (weiter, keine Blockgrenze, kein Abstand), und das Steuergerät schickt 21 ... und 22 ... mit den restlichen 14 Bytes.
Wo ist es definiert?
ISO 15765-2 definiert die Frame-Arten, die Adressierungsformate (Normal, Extended, Mixed und Normal Fixed für 29-Bit-Identifier), die Flow-Control-Parameter und die Timer N_As, N_Bs, N_Cr und weitere. Die Ausgabe 2016 brachte die CAN-FD-Unterstützung und die Escape-Sequenzen für längere Single und First Frames; aktuell ist ISO 15765-2:2024. CAN selbst ist ISO 11898-1, UDS darüber ist ISO 14229.
Was es in der Praxis bedeutet
In ISO-TP verarbeitet ein Steuergerät zum ersten Mal Bytes, die ein Tester oder ein Angreifer kontrolliert. Der Reassembly-Code legt aus der Länge im First Frame einen Puffer an, zählt Sequenznummern und lässt Timer laufen, alles bevor die UDS-Schicht irgendetwas sieht. Damit ist ISO-TP ein klassischer Ort für Speicherfehler.
Wir sehen regelmäßig Steuergeräte, die zurücksetzen oder hängen, wenn ein First Frame eine Länge ankündigt, die der Puffer nicht fassen kann, wenn die angekündigte Länge kleiner ist als die bereits gesendeten Daten, wenn Consecutive Frames außer der Reihe kommen oder wenn ein Sender STmin ignoriert. An Leistungselektronik-Steuergeräten haben wir erlebt, dass ein einziger fehlerhafter First Frame den Diagnose-Stack bis zum Neustart lahmlegt. Falsches Padding und ein unpassendes Adressierungsformat sind die anderen typischen Probleme am Prüfstand: das Steuergerät bleibt einfach stumm, was nach “keine Diagnose” aussieht, bis du das richtige Format probierst.
Wie AutoST es testet
AutoST findet ISO-TP-Endpunkte während der Enumeration, indem es Paare aus Request- und Response-Identifiern prüft, und führt dann jeden UDS-Test über diesen Transport aus. Die UDS-Fuzzing-Engine schickt Payloads bis 128 Bytes, was segmentierte Übertragungen mit First, Consecutive und Flow-Control-Frames erzwingt, und ein TesterPresent-Lebenszeichen-Check nach jeder Iteration meldet ein Steuergerät, dessen Transport nicht mehr antwortet.
Häufige Missverständnisse
ISO-TP bringt keine Sicherheit. Flow Control ist ein Takt-Mechanismus, keine Zugriffsprüfung, und ein Frame, der die Regeln bricht, soll ignoriert werden, nicht das Steuergerät abstürzen lassen. Außerdem beweist ein stummes Steuergerät nicht, dass die Diagnose abgeschaltet ist: Adressierungsformat oder Padding passen vielleicht einfach nicht.
FAQ
Häufig gestellte Fragen
Wie lang darf eine ISO-TP-Nachricht maximal sein?
Mit dem klassischen 12-Bit-Längenfeld im First Frame 4095 Bytes. Seit der Ausgabe 2016 folgt auf einen First Frame mit Länge 0 eine 32-Bit-Länge (die Escape-Sequenz), damit sind deutlich längere Nachrichten möglich, vor allem mit CAN FD und beim Flashen.
Was bedeuten Block Size und STmin?
Beide schickt der Empfänger im Flow-Control-Frame. Die Block Size sagt, wie viele Consecutive Frames der Sender schicken darf, bevor er auf die nächste Flow Control wartet (0 heißt: alle). STmin ist der Mindestabstand zwischen Consecutive Frames: 0x00 bis 0x7F sind Millisekunden, 0xF1 bis 0xF9 sind 100 bis 900 Mikrosekunden.
Wird ISO-TP nur für UDS verwendet?
Meist für UDS- und OBD-Diagnose auf CAN, aber jedes Protokoll, das auf CAN längere Nachrichten braucht, kann es nutzen. Über Ethernet ersetzt DoIP das Protokoll, weil TCP die Segmentierung schon übernimmt.
Quellen
- ISO 15765-2:2024 Straßenfahrzeuge, Diagnosekommunikation über CAN (DoCAN), Teil 2: Transportprotokoll und Netzwerkschichtdienste
- ISO 14229-1:2020 Straßenfahrzeuge, Unified diagnostic services (UDS), Teil 1: Anwendungsschicht
- ISO 11898-1:2015 Straßenfahrzeuge, Controller Area Network (CAN), Teil 1: Sicherungsschicht und physikalische Signalisierung
Passende Seiten
- GlossarCAN-Bus (Controller Area Network)CAN (ISO 11898) ist der Broadcast-Bus, den sich die meisten Steuergeräte teilen: Identifier, Arbitrierung, Fehlerbehandlung. Was das für Security-Tests bedeutet.
- GlossarCAN FD (CAN with Flexible Data Rate)CAN FD erweitert CAN auf 64 Datenbytes und eine schnellere Datenphase. Wie DLC, BRS-Bit und Bit-Timing funktionieren und was sich für Diagnose und Fuzzing ändert.
- GlossarUDS (Unified Diagnostic Services)UDS (ISO 14229) ist das Diagnoseprotokoll der meisten Steuergeräte: Sessions, Services, DIDs, SecurityAccess. Was es definiert und warum es die erste Angriffsfläche ist.
- Kostenlose ToolsISO-TP-Frame-RechnerWie viele CAN-Frames braucht eine UDS-Nachricht? Nutzlast, Classic CAN oder CAN FD und Flow Control wählen: First, Consecutive und Flow Control Frames plus Timing.
- 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.
