Elektroniknet Logo

Debugging von Zephyr-Applikationen

Verifizieren auf Sicherheit und Zuverlässigkeit


Fortsetzung des Artikels von Teil 1

Auf Sicherheit überprüfen

Die deterministische Verarbeitung, die entscheidend für die Prüfbarkeit sowie die Sicherheit – im Sinne von Security und Safety – ist, setzt voraus, dass die Timing-Variationen der Software minimiert werden und sich nicht auf die Reihenfolge wichtiger Ereignisse auswirken. Anderenfalls könnte sich eine astronomische Anzahl möglicher Ausführungs-Szenarien ergeben, die sich unmöglich alle testen lassen.

Anbieter zum Thema

zu Matchmaker+
visuelle Trace-Diagnose
Bild 1. Ähnlich wie eine Überwachungskamera, verfolgt die visuelle Trace-Diagnose das Verhalten der Embedded-Software, um etwaige Anomalien für eine eingehendere Analyse auf einer visuellen Zeitachse zu markieren.
© Percepio

Auch wenn es mehrere Methoden zum Verifizieren der Security-Eigenschaften gibt, lassen sich nicht alle potenziellen Schwachstellen mit einer einzigen Verifikations-Software abdecken. Um die deterministische Verarbeitung in einem RTOS-System sicherzustellen, bedarf es einer Analyse des Laufzeitverhaltens unter Einbeziehung der Timing-Variationen und Muster im Kernel-Scheduling und den API-Aufrufen.

Ein Weg, das Laufzeitverhalten einer auf dem Zephyr-RTOS laufenden Multithreaded-Software zu untersuchen, ist die Verwendung eines Software-Tracing-Tools. Solche Tools nutzen sogenannte »Hooks« an strategischen Punkten im Kernel-Code, um Ereignisse aufzuzeichnen und ein Trace der auf Zephyr laufenden Applikation zu erstellen. Für den Einsatz solcher Werkzeuge ist keine manuelle Modifikation des Zephyr-Quellcodes erforderlich, sondern nur ein Rebuild zum Aktivieren der Hooks.

In Zephyr 2.6.0 wurde das Trace-Subsystem um zusätzliche Hooks und Tool-Unterstützung erweitert, um bessere Voraussetzungen zum Analysieren der Programmausführung zu schaffen. Tracing-Tools können eine visuelle Zeitachse darstellen, um das Debugging zu vereinfachen und ein Profil der CPU-Zeit sowie der Stack- und Heap-Nutzung der einzelnen Tasks zu erstellen. Zusätzlich haben Tracing-Tools die Fähigkeit zum Detektieren von Timing-Variationen und anderen Ursachen für nicht-deterministisches Verhalten, woraus eine stabilere, messbar zuverlässigere und sicherere Applikation resultiert.

visuelle Trace-Darstellung
Bild 2. Diese visuelle Trace-Darstellung zeigt Scheduling, API-Aufrufe sowie Blockierungen in Zephyr.
© Percepio

Das Software-Tracing kann ebenfalls für API-Aufrufe und zum Aufzeichnen anwenderdefinierter Ereignisse in der Applikation genutzt werden. Hierfür gibt es zahllose Anwendungsmöglichkeiten, wie etwa die Aufdeckung von Deadlocks, Speicherlecks und Pufferüberläufen, die häufig zum Einschleusen von Malware genutzt werden.

Die ausgefeilte, durch Tools unterstützte Analyse und Visualisierung von Trace-Daten lässt sich mit einer Überwachungskamera für Embedded-Software vergleichen. Bei der visuellen Trace-Diagnose können sich Entwickler zunächst mit einem geringen Zoomfaktor einen Überblick über die Programmverarbeitung verschaffen und anschließend näher heranzoomen, um die Einzelheiten zu untersuchen. Die Trace-Daten lassen sich auf diese Weise aus vielen Blickwinkeln und auf unterschiedlichen Abstraktionsebenen visualisieren. Hierdurch wird eine Top-Down-Vorgehensweise ermöglicht, in deren Verlauf Anomalien zunächst in den Gesamtübersichten identifiziert und danach in detaillierteren Ansichten untersucht werden.

visuelles Trace-Tool
Bild 3. Ein visuelles Trace-Tool kann eine breite Auswahl an Analysen für das Zephyr-RTOS liefern, ohne dass irgendwelche manuellen Modifikationen am Quellcode notwendig sind.
© Percepio

Ein wichtiger Aspekt ist die Tatsache, dass die hier beschriebene Art von Tracing rein softwaremäßig erfolgen kann, indem entweder die neuesten Ereignisse in einem zyklischen Puffer im RAM vorgehalten werden oder die Ereignisse fortlaufend über eine TCP/IP-Verbindung oder einen Debugger übertragen werden. Entwicklungsteams erhalten dadurch die Möglichkeit, ein System über lange Zeitspannen hinweg zu beobachten und somit auch sehr sporadisch auftretende Probleme zu erfassen. Dieses softwarebasierte Tracing eignet sich für praktisch alle Embedded-Prozessoren und Toolchains.

Probleme schnell lokalisieren

Bei einem RTOS, das für die schnelle und effiziente Entwicklung sowie den sicheren Betrieb von Anwendungen konzipiert ist, ist es besonders wichtig, das sich potenzielle Probleme schnell und einfach aufdecken lassen, damit das Projekt auf Kurs bleibt und letztlich ein qualitativ hochwertiges Produkt entsteht.

Zuverlässigkeit und Sicherheit sind wichtige Anforderungen an Embedded-Systeme. Die erweiterte Unterstützung für das Software-Tracing in Zephyr 2.6.0 macht das Debugging einfacher und schafft dadurch die Voraussetzungen für mehr Zuverlässigkeit, Security und Safety. Die visuelle Trace-Diagnose erleichtert das Detektieren von chaotischem, nicht-deterministischem Software-Verhalten, das die Prüfbarkeit beeinträchtigen und schwer erfassbare Bugs und Schwachstellen verbergen kann.

Die mit der visuellen Trace-Diagnose geschaffenen Einblicke sorgen dank zügigerem Debugging für mehr Produktivität sowie für eine Verbesserung der Prüfbarkeit und damit auch der Zuverlässigkeit – allesamt entscheidende Faktoren für den Erfolg von Softwareentwicklungsprojekten.

Literatur

[1] The Zephyr Project strives to deliver the best-in-class RTOS for connected resource-constrained devices, built to be secure and safe. The Linux Foundation, Website, https://www.zephyrproject.org/.

[2] ICS Advisory (ICSA-21-119-04) – Multiple RTOS (Update C). Cybersecurity & Infrastructure Security Agency, 17. August 2021, https://us-cert.cisa.gov/ics/advisories/icsa-21-119-04.

 

Der Autor

Dr. Johan Kraft von Percepio
Dr. Johan Kraft von Percepio.
© Percepio

Dr. Johan Kraft

ist CEO und Gründer von Percepio AB. Dr. Kraft ist der ursprüngliche Entwickler von Percepio Tracealyzer, einem Werkzeug zur visuellen Trace-Diagnose, das tiefen Einblick in Laufzeitsysteme bietet und dadurch die Entwicklung von eingebetteter Software beschleunigt.

Seine angewandte akademische Forschung, die er in Zusammenarbeit mit der Industrie betreibt, konzentrierte sich auf die Timing-Analyse von eingebetteter Software. Vor der Gründung von Percepio im Jahr 2009 war Dr. Kraft bei ABB Robotics in der Entwicklung eingebetteter Software tätig. Dr. Kraft verfügt über einen Doktortitel in Informatik.

johan.kraft@percepio.com


  1. Verifizieren auf Sicherheit und Zuverlässigkeit
  2. Auf Sicherheit überprüfen

Verwandte Artikel

Percepio AB