Bundesamt für Sicherheit in der Informationstechnik

M 4.491 Verhindern von Debugging-Möglichkeiten bei eingebetteten Systemen

Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT

Verantwortlich für Umsetzung: Administrator, Entwickler

Verbreitete Vorgehensweisen zum Debugging von eingebetteten Systemen sind In-Circuit-Emulation ( ICE ) und On-Chip-Debugging (OCD). ICE - Geräte ersetzen den eigentlichen Controller auf dem Zielsystem durch eine Hardware, in der die notwendigen Analysefunktionen eingebaut sind. Das später eingesetzte Zielsystem besitzt diese Zusatzfunktionen nicht und stellt somit keine ungewollten Debugging-Möglichkeiten bereit. Aufgrund zeitlicher, technischer oder finanzieller Zwänge kommt allerdings vermehrt OCD zum Einsatz. Dabei werden Debugging-Möglichkeiten auf den Serienbausteinen selbst implementiert. OCD kann somit in den Programmablauf eingreifen, z. B. um Werte aus Registern oder einem Trace-Speicher auszulesen oder zusätzliche kleine Monitoring-Programme auszuführen, die Debug-Informationen sammeln und nach außen geben.

Bei eingebetteten Systemen befindet sich die zu untersuchende Software meist nicht auf demselben Rechner wie der Debugger. Daher wird Remote Debugging verwendet, d. h. der Entwickler startet auf dem eingebetteten System eine Applikation, mit der sich der Debugger auf dem Entwicklungssystem z. B. über Ethernet oder RS232 verbindet.

Wird z. B. der GNU Debuggers (GDB) genutzt, führt das eingebettete System einen GDB-Server aus, bei dem sich der GDB-Client auf dem Entwicklungssystem anmeldet. Der Client bzw. der Programmierer übergeben dem Server auf dem eingebetteten System Anweisungen zum Untersuchen der Applikation. Der Server setzt die Anweisungen um und schickt die Resultate an das Entwicklungssystem zurück.

Soweit möglich, sind die aus der Hard- und Softwareentwicklung im System oder der Software installierten Hilfsmittel zum Debugging vollständig aus dem Entwurf für die Serie zu entfernen. Aus dem Produktionscode von Software sind alle Codeelemente zu entfernen, die nicht Bestandteil der Systemfunktionalität sind. Dazu zählen z. B. Breakpoints und nicht genutzter Code. Wird On-Chip-Debugging genutzt, ist sicherzustellen, dass Debugging-Funktionen nicht durch Unberechtigte genutzt oder aktiviert werden können. Im Bereich der Hardware ist sicherzustellen, dass keine Eingabeschnittstellen für Testsignale und Messpunkte zum Anschluss von Analysatoren aktiviert bzw. für Unberechtigte nutzbar sind.

Prüffragen:

  • Sind, soweit möglich keine Debugging-Komponenten auf dem Zielsystem installiert?

  • Ist im Falle von On-Chip-Debugging sichergestellt, dass Debugging-Funktionen nicht durch Unberechtigte genutzt oder aktiviert werden können?

  • Sind alle Hardware-Debugging-Schnittstellen deaktiviert?

Stand: 15. EL Stand 2016