BSI, Fraunhofer 07.10.2020, 11:57 Uhr

Codyze: Tool zur automatisierten Sicherheitsanalyse

Das Fraunhofer AISEC hat gemeinsam mit dem Bundesamt für Sicherheit in der Informationstechnik (BSI) das Analysetool Codyze entwickelt, das sowohl Entwickler als auch Auditoren bei der Programmierung und Evaluierung sicherheitskritischer Software unterstützt.
(Quelle: codyze.io/docs/)
Die Einhaltung von Sicherheitsanforderungen und deren Dokumentation stellt viele Entwickler vor Herausforderungen. Durch die zunehmende Dynamik in der Softwareentwicklung und Ansätze wie CI/CD, also der agilen und kontinuierlichen Weiterentwicklung von Software, wird der Zeitaufwand für manuelle Code-Überprüfungen für Unternehmen eine immer größere Hürde. Zwar verwenden viele Software-Hersteller heutzutage bereits Werkzeuge für die Code-Analyse, doch diese dienen in erster Linie dazu, typische Programmierfehler und sogenannte "Code Smells" zu identifizieren. Der Entwickler gewinnt damit zwar einen ersten Eindruck über mögliche Sicherheitslücken in der Software, die Einhaltung von Compliance-Vorgaben, wie beispielsweise die korrekte Verwendung von Kryptografie, kann damit allerdings nicht gewährleistet werden.
Hier setzt das Analysetool Codyze an, das in Zusammenarbeit zwischen dem Fraunhofer AISEC und dem BSI entwickelt wurde. Ziel des gemeinsamen Projekts war es, ein Tool zu entwickeln, um Auditoren bei der Zertifizierung und Zulassung sicherheitskritischer Software zu unterstützen. "Um die technologische Souveränität zu gewährleisten, ist es wichtig, die Sicherheit von Produkten und Lösungen beurteilen zu können", sagt Christian Banse, Abteilungsleiter Service and Application Security am Fraunhofer AISEC. "Codyze ermöglicht es, die Sicherheit bereits während des Entwicklungsprozesses einzuschätzen. Es überprüft beispielsweise die Einhaltung von Compliance-Vorgaben, wie die Verwendung geeigneter Verschlüsselungsalgorithmen." Dafür verwendet Codyze Techniken der statischen Analyse auf Basis von Quelltext. Anders als bisher verfügbare Analysetools ermöglicht Codyze auch die Überprüfung von Ausschnitten des Quellcodes. So können Nutzer beispielsweise auch dann entwicklungsbegleitende Überprüfungen durchführen, wenn noch keine lauffähigen beziehungsweise noch nicht fertiggestellte Programmteile vorliegen.

Manuelle Code-Analysen und automatische Compliance-Prüfung

Codyze erstellt aus dem Quelltext eine sprachunabhängige Repräsentation in Form eines so genanntes "Code Property Graphen", die auf zwei Arten genutzt wird. Einerseits können – ähnlich wie bei Datenbanken – Abfragen an den Quelltext gestellt werden, um den Code explorativ zu untersuchen. Mit Hilfe einer interaktiven Konsole und einer Query-Sprache können sowohl Entwickler als auch Auditoren Quelltext-Strukturen durchsuchen und so schnell Anti-Patterns, also risikobehaftete Programmierlogik, und etwaige Verwundbarkeiten entdecken.
Andererseits ermöglicht Codyze auch eine automatische Prüfung, welche mittels statischer Code-Analyse erfolgt und den Quelltext auf die Einhaltung von Sicherheitsanforderungen untersucht. Die Anforderungen können vorher in Form von Regeln in der dafür spezifisch entwickelten Modellierungssprache MARK hinterlegt werden. Sie beschreiben die korrekte und erwartete Verwendung von sicherheitskritischen APIs und Bibliotheken. Durch die Integration in gängige IDEs über eine LSP (Language Server Protocol)-Schnittstelle, informiert Codyze den Entwickler durch Verweise in der Dokumentation bereits früh in der Entwicklungsphase über mögliche Schwachstellen; die Integration in CI-Prozesse ermöglicht darüber hinaus eine kontinuierliche Überprüfung.

Korrekter Einsatz von kryptografischen Bibliotheken

Eine häufige Schwachstelle in der Programmierung von sicherheitskritischer Software entsteht durch die fehlerhafte Verwendung von kryptografischen Bibliotheken, zum Beispiel durch die Auswahl von ungeeigneten Algorithmen. Aus diesem Grund hat das BSI die sogenannte Technische Richtlinie TR 02102-1 mit Empfehlungen zu Krypto-Verfahren und Schlüssellängen publiziert und zuletzt im Jahr 2020 aktualisiert.
Um Entwickler bei der korrekten Umsetzung und Auditoren bei der Überprüfung von Applikationen zu unterstützen, wurden im Rahmen des BSI-Projekts die Anforderungen der TR 02102-1 in MARK-Regeln für die weit verbreiteten Bibliotheken Bouncycastle (Java) und Botan2 (C++) abgebildet. Codyze überprüft hierbei nicht nur, ob die Auswahl der Algorithmen und deren Konfiguration korrekt erfolgt ist, sondern auch, ob die richtige Reihenfolge der Operationen wie beispielsweise Verschlüsselung oder Initialisierung eingehalten wurde.
In einem weiteren Schritt untersuchte das Fraunhofer AISEC die korrekte Umsetzung von Kryptografie in Open-Source-Projekten: Bei einer Überprüfung von 5.554 GitHub-Repositories, die diese Bibliotheken verwenden, wurden in 1.188 Dateien Verletzungen festgestellt. Die häufigsten Fehlerquellen waren dabei die fehlerhafte Reihenfolge von API-Aufrufen, was im Bereich der Kryptografie sehr schnell zu Verwundbarkeiten führen kann, und die Verwendung von unsicheren Krypto-Verfahren. An insgesamt 4.143 Programmen wurden Bouncycastle und Botan2 hingegen korrekterweise so verwendet, wie es die Technische Richtlinie erfordert.
Codyze ist als Open Source-Projekt unter der Apache 2.0-Lizenz verfügbar und wird in Zusammenarbeit mit der Software-Industrie kontinuierlich weiterentwickelt. Ziel ist es, zukünftig MARK-Regeln für weitere Frameworks und Bibliotheken zu modellieren, welche über das Anwendungsfeld der Kryptografie hinausgehen. Somit wird es in Zukunft möglich mit Codyze sein, weitere Anforderungen aus Regularien automatisiert abprüfen zu können.
Das Fraunhofer AISEC will Codyze am 27.Oktober 2020 im Rahmen der Fraunhofer Solution Days präsentieren.


Das könnte Sie auch interessieren