Tracking the Evolution of Modern Car Firmware

Allgemein

Betreuer: Moritz Contag

Beginn: as soon as possible

Dauer: 6 months

Weitere Details: [A2L] [Infineon TriCore] [32c3 Talk]

Beschreibung

Modern firmware is a piece of highly customizable software. This is especially important when considering parts like the Engine Control Unit (ECU), which needs to coordinate the various sub-systems offered by that particular engine type. Commonly, the car manufacturer buys the ECU firmware and only afterwards customizes it to his liking not by modifying code, but by modifying data by adjusting characteristic maps and other key constants. This process is known as parametrization. In some cases, .a2l files are available for a certain firmware image which exactly pinpoints address and type of a specific program variable (so-called symbol files).

Still, there is a possibility for the car manufacturer to request additional features (i.e., code) to be available in the firmware. This thesis focuses on this aspect and tries to reason about the extent to which multiple firmware images differ in code, despite commonly being used as "blueprint" only. This yields the possibility to locate uncommon features in a firmware and is especially interesting for those that impact emissions control and might implement some form of emissions cheating.

Tasks that are to be solved include:

  • Familiarizing with .a2l files and the Infineon TriCore processor/assembly,
  • Researching analyses usable for detecting the similarity of two functions,
  • Automatically comparing firmware images,
  • Building a hierarchy depicting the relation of the analyzed firmware images (e.g., if a newer firmware image has been forked off an older one, adding new functionality),
  • Optionally trying to detect related groups of functions (e.g., that implement the same sub-system or common functionality), and
  • Evaluating the prototype on a wide range of ECU firmware images.

Voraussetzungen

The student is expected to be comfortable in reading assembly code as well as programming in a language suited for the task (e.g., C/C++, Python). Knowledge of IDA Pro is a plus.