CODYZE: Fraunhofer AISEC entwickelt gemeinsam mit BSI Tool zur automatisierten Sicherheitsanalyse

News / 06. Oktober 2020

Die Bedeutung von Richtlinien und Regularien wie der Datenschutzgrundverordnung in der Softwareentwicklung nimmt immer weiter zu: Entwickler und Softwarehersteller stehen damit nicht nur vor der Herausforderung, sicherzustellen, dass ihre Produkte und Lösungen den Anforderungen entsprechen, gleichzeitig müssen sie auch noch Nachweise darüber erbringen, dass die Standards entsprechend umgesetzt wurden. 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.

Die Themen IT-Sicherheit und Compliance gewinnen in der Softwareentwicklung immer mehr an Bedeutung. Doch die Einhaltung von Sicherheitsanforderungen und deren Dokumentation stellt viele Entwickler vor Herausforderungen. Durch die zunehmende Dynamik in der Softwareentwicklung und Ansätze wie Continuous Integration and Deployment, 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 bzw. 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 sog. »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, z.B. 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.

Überprüfung weiterer Sicherheitsmerkmale

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.