Zum Inhalt springen
AutoST by Zyberum GmbH
Menü
GlossarUDS

RequestDownload (0x34)

UDS RequestDownload (0x34) öffnet einen Download in den ECU-Speicher. Request-Bytes, maxNumberOfBlockLength, NRCs und warum 0x34 ohne Sperre ein Top-Finding ist.

Aktualisiert Diese Seite als Markdown

Kurz gesagt

RequestDownload (0x34) ist der UDS-Service, der eine Datenübertragung vom Tester in den Speicher des Steuergeräts startet, typischerweise einen Firmware-Download. Der Request nennt Format, Adresse und Größe; die positive Antwort 0x74 liefert die maximale Blocklänge für die folgenden TransferData-Nachrichten (0x36). ISO 14229-1 sieht den Service in der Programming Session hinter SecurityAccess vor. Überall sonst erreichbar, ist er eines der schwersten Findings an einem Steuergerät.

Was ist RequestDownload (0x34)?

RequestDownload ist der UDS-Service, mit dem ein Tester ankündigt, dass er einen Datenblock in den Speicher des Steuergeräts schreiben will, meist neue Firmware. Er eröffnet die Download-Sequenz: 34 RequestDownload, dann ein oder mehrere 36 TransferData-Blöcke, dann 37 RequestTransferExit. Das Steuergerät antwortet auf 0x34 mit der maximalen Blockgröße, die es akzeptiert, und ab dann liefert der Tester die Daten in Blöcken dieser Größe.

Der Request trägt vier Parameter: den dataFormatIdentifier (hohes Nibble Kompressionsverfahren, niedriges Nibble Verschlüsselungsverfahren, 00 heißt Rohdaten), den addressAndLengthFormatIdentifier (hohes Nibble: Anzahl Bytes von memorySize, niedriges Nibble: Anzahl Bytes von memoryAddress), die memoryAddress und die memorySize. 34 00 44 08 00 00 00 00 02 00 00 fordert einen Download von 0x20000 Byte Rohdaten an Adresse 0x08000000 an. Die positive Antwort 74 20 0F FA sagt: Der lengthFormatIdentifier 20 kündigt eine zwei Byte lange maxNumberOfBlockLength an, und 0F FA (4090) ist die maximale Länge jeder TransferData-Nachricht, inklusive SID und blockSequenceCounter-Byte.

Wo ist es definiert?

ISO 14229-1:2020, Kapitel 14 (Upload download functional unit), definiert RequestDownload (0x34) zusammen mit RequestUpload (0x35), TransferData (0x36), RequestTransferExit (0x37) und RequestFileTransfer (0x38). Die Negative Response Codes speziell für diese Sequenz sind 0x70 uploadDownloadNotAccepted, 0x71 transferDataSuspended und 0x73 wrongBlockSequenceCounter, neben den allgemeinen Codes 0x13, 0x22, 0x31, 0x33 und 0x7F. Auf CAN laufen die Blöcke über ISO 15765-2, weshalb Blocklänge und ISO-TP-Empfangspuffer des Steuergeräts zusammenhängen.

Was es in der Praxis bedeutet

Ein Tester, der 0x34, 0x36 und 0x37 durchläuft, kann die Software des Steuergeräts ersetzen. Das ist der Zweck des Service, und genau deshalb erwartet ISO 14229-1 ihn nur in der Programming Session (0x02), hinter SecurityAccess (0x27) und normalerweise mit Signaturprüfung des übertragenen Images. Drei Antworten verraten dir die Konfiguration: 7F 34 7F heißt, der Service existiert, aber nicht in dieser Session; 7F 34 33 heißt, SecurityAccess sperrt ihn; 74 ... in der Default Session heißt, dass keine der beiden Hürden existiert.

Wir sehen regelmäßig 0x34 in Default oder Extended Session erreichbar, Downloads für beliebige Adressen akzeptiert (7F 34 31 requestOutOfRange wäre die korrekte Antwort auf eine Adresse außerhalb des Flash-Bereichs) und Steuergeräte, die resetten oder hängen, wenn ein TransferData-Block länger ist als die angekündigte maxNumberOfBlockLength oder der blockSequenceCounter springt. An einem Leistungselektronik-Steuergerät war eine ohne Seed/Key akzeptierte Download-Sequenz der kürzeste Weg vom Diagnosestecker zur Firmware.

Wie AutoST es testet

Die Enumeration-Engine prüft 0x34 in jeder gefundenen Session und klassifiziert die Antwort: unterstützt, durch SecurityAccess gesperrt, nicht in dieser Session oder nicht vorhanden. Im Service-Risikokatalog ist RequestDownload als riskant markiert und trägt das höchste Gewicht (5), ein Steuergerät, das ihn außerhalb einer geschützten Session akzeptiert, wird entsprechend bewertet. Der UDS-Fuzzer kann 0x34 und 0x36 mit fehlerhaften Längen und Adressen angehen, während der TesterPresent-Liveness-Check auf Hänger oder Reset achtet. AutoST flasht das Steuergerät nicht.

Häufige Missverständnisse

Der Name ist aus Sicht des Testers gewählt: “Download” heißt, Daten fließen ins Steuergerät, während RequestUpload (0x35) Speicher ausliest. Eine positive Antwort auf 0x34 ist noch kein Schreibvorgang; nichts ändert sich, bis TransferData-Blöcke ankommen und RequestTransferExit abschließt. Für den Security-Test ist die Annahme von 0x34 das Finding, nicht die Daten, die du danach senden könntest.

FAQ

Häufig gestellte Fragen

Warum enthält maxNumberOfBlockLength SID und Zählerbyte?

ISO 14229-1 definiert den Wert als Länge der kompletten TransferData-Nachricht. Ein Wert von 0x0FFA (4090) lässt also 4088 Byte Nutzdaten pro Block. Tester, die die zwei Bytes vergessen, senden zu große Blöcke und bekommen 0x13 incorrectMessageLengthOrInvalidFormat, oder sie bringen ein nachlässiges Steuergerät zum Absturz.

Darf 0x34 jemals in der Default Session antworten?

Nein. ISO 14229-1 ordnet die Reprogrammierung der Programming Session zu, und eine sichere Implementierung verlangt zusätzlich SecurityAccess. Eine positive Antwort 0x74 in der Default Session heißt, dass jeder mit Buszugang einen Flash-Download starten kann.

Flasht AutoST das Steuergerät?

Nein. AutoST prüft, ob und in welcher Session 0x34 erreichbar ist, wie das Steuergerät mit fehlerhaften Download-Requests umgeht, und bewertet die Exposition. Das Flashen selbst bleibt bei deinem Flash-Tool.

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