Zum Inhalt springen
AutoST by Zyberum GmbH
Menü
GlossarUDS

NRC (Negative Response Code)

Eine negative UDS-Antwort besteht aus 7F, dem abgelehnten SID und einem Negative Response Code (NRC) wie 0x11, 0x33 oder 0x7F. Was die Codes aus ISO 14229-1 bedeuten.

Aktualisiert Diese Seite als Markdown

Kurz gesagt

Ein Negative Response Code (NRC) ist das dritte Byte einer negativen UDS-Antwort, 7F <SID> <NRC>, und sagt dem Tester, warum das Steuergerät einen Request abgelehnt hat: 0x11 serviceNotSupported, 0x12 subFunctionNotSupported, 0x13 incorrectMessageLengthOrInvalidFormat, 0x22 conditionsNotCorrect, 0x31 requestOutOfRange, 0x33 securityAccessDenied, 0x35 invalidKey, 0x7E und 0x7F für die falsche Session, 0x78 für Response Pending. ISO 14229-1 Anhang A listet sie alle. Für einen Tester sind NRCs die Landkarte des Steuergeräts.

Was ist ein NRC?

Wenn ein Steuergerät einen UDS-Request nicht ausführen kann oder will, antwortet es negativ: 7F, der Service Identifier des abgelehnten Requests und ein Negative Response Code. 7F 27 35 sagt, SecurityAccess wurde mit einem ungültigen Key aufgerufen, 7F 22 31 sagt, ReadDataByIdentifier wurde nach einer DID außerhalb des Bereichs gefragt, 7F 10 12 sagt, die gewünschte Session-Sub-Funktion wird nicht unterstützt.

Die Codes, die am Prüfstand am meisten zählen, sind 0x10 generalReject, 0x11 serviceNotSupported, 0x12 subFunctionNotSupported, 0x13 incorrectMessageLengthOrInvalidFormat, 0x14 responseTooLong, 0x21 busyRepeatRequest, 0x22 conditionsNotCorrect, 0x24 requestSequenceError, 0x31 requestOutOfRange, 0x33 securityAccessDenied, 0x34 authenticationRequired, 0x35 invalidKey, 0x36 exceedNumberOfAttempts, 0x37 requiredTimeDelayNotExpired, 0x70 uploadDownloadNotAccepted, 0x72 generalProgrammingFailure, 0x73 wrongBlockSequenceCounter, 0x78 requestCorrectlyReceived-ResponsePending, 0x7E subFunctionNotSupportedInActiveSession und 0x7F serviceNotSupportedInActiveSession.

Wo ist es definiert?

ISO 14229-1:2020 Anhang A listet jeden Negative Response Code mit Name und Bedeutung; Kapitel 7.5 legt fest, wann ein Server negativ antwortet und in welcher Reihenfolge er einen Request prüft (Service, Länge, Sub-Funktion, Session, Security, Bedingungen). Die Codes 0x81 bis 0x8F und 0x92 bis 0x94 beschreiben Fahrzeugzustände wie Drehzahl-, Temperatur- und Spannungsbereiche. 0x50 bis 0x5D kamen für den Authentication-Service (0x29) hinzu. Jedes Service-Kapitel listet die Teilmenge der NRCs, die der Service zurückgeben darf, und das suppressPosRspMsgIndicationBit unterdrückt nie eine negative Antwort.

Was es in der Praxis bedeutet

NRCs sind das reichhaltigste Signal, das ein Steuergerät kostenlos preisgibt. Ein Sweep über alle Service Identifier in einer Session ergibt ein Muster: 0x11 für Services, die fehlen, 0x7F für Services, die in einer anderen Session warten, 0x33 für die Oberfläche hinter SecurityAccess, 0x13 für Services, die existieren und mit der richtigen Länge laufen würden. Dasselbe gilt für Sub-Funktionen (0x12 gegenüber 0x7E) und für Identifier (0x31). Diese Codes sorgfältig zu lesen ist Enumeration.

Beim SecurityAccess-Test zeigt die Folge 0x35, 0x35, 0x36, dann 0x37 einen funktionierenden Versuchszähler mit Verzögerung. Wir sehen regelmäßig Steuergeräte, die endlos 0x35 antworten, also unbegrenzt Key-Versuche zulassen, und Steuergeräte, die auf alles Unverstandene 0x10 generalReject schicken, was die Struktur vor dem flüchtigen Blick versteckt, nicht aber vor dem statistischen. Ein weiteres wiederkehrendes Finding: 0x78 gefolgt von Stille, was jeden Tester hängen lässt, der sich an P2* hält.

Wie AutoST es testet

Die Enumerations-Engine von AutoST klassifiziert jede Antwort in jeder Session anhand ihres NRC: supported, security access denied, not supported in this session, conditions not correct oder not supported. Die SecurityAccess-Engine zählt 0x35, 0x36 und 0x37, um den Lockout zu beurteilen, und die Fuzzing-Engine wertet ausbleibende Antworten und Transportfehler nach einem Payload als Absturz-Indikator. Der kostenlose NRC-Decoder auf dieser Seite erklärt jeden einzelnen Code.

Häufige Missverständnisse

Eine negative Antwort ist kein fehlgeschlagener Test. Das Steuergerät tut seine Arbeit, und der richtige NRC in der richtigen Situation ist genau das, wie eine sichere Implementierung aussieht. Das Finding ist der falsche Code: eine positive Antwort, wo 0x33 hingehört hätte, oder 0x35, wo 0x36 fällig war.

FAQ

Häufig gestellte Fragen

Was ist der Unterschied zwischen 0x11 und 0x7F?

serviceNotSupported (0x11) heißt, der Service existiert auf diesem Steuergerät in keiner Session. serviceNotSupportedInActiveSession (0x7F) heißt, er existiert, aber nicht in der aktuellen, meist weil er die Extended oder Programming Session braucht. Dasselbe Paar gibt es für Sub-Funktionen: 0x12 und 0x7E.

Ist 0x78 ein Fehler?

Nein. requestCorrectlyReceived-ResponsePending sagt dem Tester, dass das Steuergerät mehr Zeit braucht und er bis P2* auf die endgültige Antwort warten soll. Ein Steuergerät, das 0x78 schickt und dann nichts mehr, ist ein Finding, weil der Tester hängt. Mehrere 0x78 hintereinander sind erlaubt.

Warum bekomme ich gar keine Antwort statt eines NRC?

Bei funktional adressierten Requests schreibt ISO 14229-1 dem Steuergerät vor, statt 0x11, 0x12, 0x31, 0x7E oder 0x7F zu schweigen, damit ein Broadcast des Testers keine Flut negativer Antworten auslöst. Bei physisch adressierten Requests heißt Schweigen meist: das Steuergerät ist abgestürzt, die ISO-TP-Adresse ist falsch oder der Request ist nie angekommen.

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