Cyber Resilience Act – Automatisierte Erzeugung von Daten für Software-Stücklisten (SBOM)

Der Cyber Resiliance Act

Der Cyber Resiliance Act (CRA) ist eine EU-Verordnung für Mindestanforderungen an vernetzte Produkte mit Softwareanteil, die darauf abzielt diese Art von Produkten widerstandsfähig gegen zum Beispiel Cyberangriffe zu machen. Der CRA wurde am 23. Oktober 2024 verabschiedet und die darin definierten Anforderungen müssen schrittweise immer weiter erfüllt werden. Ende 2027 müssen spätestens alle Anforderungen bei neuen Produkten eingehalten werden. Abbildung 1 zeigt die Meilensteine bei der Umsetzung des CRA.

Abbildung 1: Meilensteine des CRA (Quelle: BSI)

Schwachstellen in Softwarekomponenten müssen auffindbar sein

Eine wichtige Anforderung des CRA ist es, dass Schwachstellen in Softwarekomponenten entdeckt und bei Bedarf behoben werden können. Dafür muss bekannt sein aus welchen Komponenten eine Softwareanwendung besteht bzw. von welchen Komponenten die Anwendung abhängig ist. Es existieren bereits heute eine Reihe von so genannten Sicherheitslücken-Datenbanken (vulnerability data base). Diese enthalten Informationen über bereits bekannte Sicherheitslücken in Softwarekomponenten, die möglicherweise einen Cyberangriff begünstigen. Eine Softwareanwendung, die eine Komponente mit einer bekannten Sicherheitslücke verwendet gilt dann auch als potenziell gefährdet.

Softwarestücklisten unterstützen die Sicherheitsanalysen

Um die Schwachstellenanalyse automatisiert durchzuführen gibt es den Ansatz in Zusammenhang mit der Erfüllung der Anforderungen das CRA eine Softwarestückliste (SBOM) zu erstellen und mit dem Produkt mitzuliefern. Diese Softwarestückliste enthält möglichst alle Informationen über die im Produkt eingesetzten Softwarekomponenten und deren Version. Solch eine SBOM liegt dann als digitalisierte Datei in standardisierten Formaten vor und kann damit von Analysewerkzeugen automatisch verarbeitet und analysiert werden. Ein bekanntes Format für eine SBOM ist zum Beispiel das CycloneDX-Format (https://cyclonedx.org/specification/overview/).  

Daten aus bestehenden (Windows-)Anwendungen generieren

Viele Softwareanwendungen existieren bereits und eine SBOM ist nicht vorhanden. Oftmals ist das Einzige, was zur Verfügung steht die installierte Anwendung selbst.

Wenn es sich um eine Windows-Anwendung handelt, dann besteht diese aus ausführbaren Dateien (EXE = executable) und genutzen Bibliotheken (DLL = Dynamic Linked Library). Schaut man sich die Eigenschaften einer solchen Datei mit Windowss-Boardmitteln an, dann sieht man, dass in einer solchen Datei eine Reihe von Informationen stecken, die hilfreich für die Erstellung einer SBOM sein könnten (Abbildung 2).

Abbildung 2: Eigenschaften der Datei msedge.exe

Auslesen der Dateieigenschaften durch C#-Code

Es kam nun die Idee auf, die Dateieigenschaften der EXE- und DLL-Dateien mit einem selbstgeschriebenen Programm auszulesen und abzuspeichern. Die Basis für eine Umsetzung war ein Eintrag auf Stack Overflow: https://stackoverflow.com/questions/7861886/how-to-get-file-properties

Zusätzlich zu dieser FileInfo gibt es bei mit .NET erstellten Komponenten außerdem noch zusätzliche Informationen wenn es sich um so genannte .NET-Assemblies handelt. Diese können auch noch ausgelesen und verarbeitet werden.

Der Code zur Analyse der Softwarekomponenten stellt sich folgendermaßen dar:

In der Hilfsmethode FillDependenciesRecursively wird aktuell bewusst auf den rekursiven Aufruf verzichtet, da normalerweise alle Bibliotheken, die zum Funktionieren einer Anwendung notwendig sind im Ordner der Anwendung enthalten sind und sowieso alle Dateien in diesem Ordner berücksichtigt werden – mal abgesehen von Bibliotheken an globaler Stelle. Für deren Sicherheit ist aber normalerweise z.B. der Hersteller Microsoft verantwortlich.

Ein kleine Benutzerschnittstelle erleichtert den Einsatz der Software

Um den Code möglichst einfach nutzbar zu machen, habe ich eine kleine grafische Benutzeroberfläche mit Windows Forms realisiert. Abbildung 3 zeigt die Anwendung. Hier lässt sich der Ordner auswählen, in dem sich die Anwendungsdateien befinden. Außerdem der Zielordner für die Analyseergebnisse.

Abbildung 3: Die Benutzeroberfläche der Analysesoftware

Die Anwendung ist als Open-Source-Software über GitHub zu erhalten. Wenn man einen GitHub-Zugang hat, kann man diese als Ergebnis eines Build-Skripts hier herunterladen, entpacken und starten: https://github.com/oalt/MDD4All.DependencyAnalysis.Apps.WinForms/actions

Weitere Infos findet man auch auf der Readme-Seite des Projekts: https://github.com/oalt/MDD4All.DependencyAnalysis.Apps.WinForms

Schreibe einen Kommentar