Zum Inhalt springen
AutoST by Zyberum GmbH
Menü
GlossarUDS

TesterPresent (0x3E)

UDS TesterPresent (0x3E) hält eine Non-Default Session am Leben. Request- und Response-Bytes, das Suppress-Bit, der S3-Server-Timer und die Session-Bugs am Prüfstand.

Aktualisiert Diese Seite als Markdown

Kurz gesagt

TesterPresent (0x3E) ist der Keep-Alive von UDS: Der Tester sendet ihn periodisch, damit das Steuergerät weiß, dass noch ein Tester verbunden ist, und in der Extended oder Programming Session bleibt. Der Request ist 3E 00, die Antwort 7E 00, und 3E 80 unterdrückt die Antwort. Ohne ihn läuft der S3-Server-Timer ab, das Steuergerät fällt in die Default Session zurück und sperrt SecurityAccess. Steuergeräte, die nie in den Timeout laufen oder eine Programming Session stundenlang per TesterPresent halten lassen, sind Findings.

Was ist TesterPresent (0x3E)?

TesterPresent ist der Keep-Alive von UDS. Ein Tester sendet ihn periodisch, um dem Steuergerät zu sagen, dass er noch da ist, damit das Steuergerät in der gewählten Session bleibt, statt in die Default Session zurückzufallen. Der Request hat zwei Bytes, 3E 00 (Sub-Funktion zeroSubFunction), die positive Antwort ist 7E 00. Mit gesetztem suppressPosRspMsgIndicationBit, 3E 80, antwortet das Steuergerät gar nicht, und so senden ihn die meisten Tester.

Der Service trägt keine Daten und löst im Steuergerät nichts aus. Seine einzige Aufgabe ist, den Session-Timer zurückzusetzen.

Wo ist es definiert?

ISO 14229-1:2020 definiert TesterPresent (0x3E) in Kapitel 9 (Diagnostic and communication management functional unit), zusammen mit DiagnosticSessionControl (0x10), ECUReset (0x11), SecurityAccess (0x27) und den anderen Services auf Session-Ebene. Das Timing, das er am Leben hält, ist der S3-Server-Timer der Session-Schicht (ISO 14229-2 für das generische Timing, üblicher Default 5000 ms). Läuft S3 in einer Non-Default Session ab, muss das Steuergerät in die Default Session zurückkehren; damit enden auch ein SecurityAccess-Unlock, und ControlDTCSetting sowie CommunicationControl fallen auf ihre Defaults zurück.

Auf CAN wird TesterPresent typischerweise funktional an alle Steuergeräte am Bus gesendet, zum Beispiel auf der 11-Bit-ID 0x7DF, als einzelner ISO-15765-2-Frame 02 3E 80 00 00 00 00 00, alle zwei bis vier Sekunden.

Was es in der Praxis bedeutet

Jeder automatisierte UDS-Test hängt an diesem Service. Bei der Enumeration der Extended Session, bei einem SecurityAccess-Seed/Key-Lauf oder beim Fuzzing wirft ein fehlender TesterPresent das Steuergerät still in die Default Session zurück, und ab dann antwortet jede Probe mit 7F xx 7F serviceNotSupportedInActiveSession. Tester, die den Keep-Alive vergessen, produzieren Ergebnisse, die wie ein dicht gemachtes Steuergerät aussehen.

Am Prüfstand ist die andere Richtung interessant. Wir sehen regelmäßig Steuergeräte, bei denen TesterPresent die Programming Session unbegrenzt am Leben hält, mit entsperrtem SecurityAccess, sodass der einmalige Unlock eines Flash-Tools zum Dauerzustand wird, solange jemand 3E 80 sendet. Wir sehen auch Steuergeräte ganz ohne S3: Der Tester wird abgezogen, und das Steuergerät bleibt in der Extended Session, während CommunicationControl weiter den normalen Busverkehr abschaltet. Und manche Steuergeräte antworten während eines Resets oder Absturzes weiter mit 7E 00, was naive Crash-Erkennung täuscht. Ein Liveness-Check braucht einen Service, der die Applikation wirklich fordert, oder mindestens eine Prüfung, dass die Session noch die erwartete ist.

Wie AutoST es testet

AutoST sendet TesterPresent als konfigurierbaren Keep-Alive jedes Scans, damit Sessions während Enumeration, DID-Scan und SecurityAccess-Prüfungen nicht abfallen. In der Fuzzing-Engine läuft nach jeder Iteration ein TesterPresent-Liveness-Check, immer aktiv; ein Steuergerät, das nicht mehr antwortet, wird als Crash mit dem exakten vorangegangenen Payload festgehalten. Die Enumeration hält außerdem fest, ob eine Non-Default Session ohne Keep-Alive überlebt, was Steuergeräte mit fehlendem oder viel zu langem S3-Timer sichtbar macht.

Häufige Missverständnisse

TesterPresent entsperrt nichts, verlängert SecurityAccess nicht von sich aus und zählt nicht als Aktivität für die P2-Timer; die gehören zu einzelnen Requests. Er hält nur die Session. Und dass 3E 80 keine Antwort bekommt, ist kein Fehler: Die Antwort ist absichtlich unterdrückt. Willst du wissen, ob das Steuergerät lebt, sende 3E 00 und erwarte 7E 00.

FAQ

Häufig gestellte Fragen

Warum wird TesterPresent meist mit 0x80 gesendet?

Das Sub-Funktions-Byte 0x80 setzt das suppressPosRspMsgIndicationBit, das Steuergerät antwortet dann nicht. Bei einem funktional adressierten Request (CAN-ID 0x7DF) verhindert das, dass alle Steuergeräte am Bus alle paar Sekunden gleichzeitig antworten.

Was passiert, wenn TesterPresent ausbleibt?

Der S3-Server-Timer im Steuergerät läuft ab, typischerweise nach 5 Sekunden, und das Steuergerät kehrt in die Default Session zurück. Ein SecurityAccess-Unlock fällt dabei weg. Ein Steuergerät, das nach dem Abziehen des Testers in der Extended Session bleibt, hat einen Session-Handling-Bug.

Ist TesterPresent selbst ein Sicherheitsrisiko?

Für sich nicht; der Service trägt keine Daten und ändert keinen Zustand. Das Risiko ist, was er offen hält. Wenn ein Angreifer eine Programming Session mit entsperrtem SecurityAccess beliebig lange halten kann, fehlt dem Steuergerät jeder Mechanismus, eine Diagnosesitzung zu beenden, die niemand legitim nutzt.

Quellen

Passende Seiten

Sieh es auf deinem ECU

Ein Begriff, der für dein Steuergerät zählt?

In 15 Minuten sagen wir dir, wie AutoST ihn testet, wie ein Finding aussieht und was er für deinen ISO/SAE-21434-Nachweis bedeutet.

  • Direkte Antwort von einem ECU-Security-Engineer
  • Welcher Test den Begriff abdeckt
  • Kostenlos und unverbindlich
Tom Zaubermann

Deine Demo ist mitTom ZaubermannGründer von Zyberum, früher Leiter des VW InCar Security Testing Lab

Bereits im Einsatz bei Tier-1-, Tier-2-Zulieferern und OEMs. Referenzen auf Anfrage.

Ruf uns an: +49 176 439 17074automotive@zyberum.com

Oder schreib uns eine Nachricht

Wir antworten innerhalb eines Werktags.

Ruf uns anAutoST-Team fragen

Wähle einen Termin, der dir passt

In neuem Tab öffnen