Code Annotation

Warum ist die sichere Gestaltung von Software auch für kleine und mittelständische Unternehmen (KMU) wichtig?

Hilfreiche Strukturierung für sichere Software: Warum ist die sichere Gestaltung von Software auch für kleine und mittelständische Unternehmen (KMU) wichtig?

Die sichere Gestaltung von Software gewinnt immer mehr an Bedeutung. Das gilt nicht nur für große Unternehmen, sondern betrifft auch KMUs. Hierbei gibt es unterschiedliche schützenswerte Güter (Assets), die ein Unternehmen vor Cyberkriminellen schützen sollte. Diese Assets sind zum Beispiel Services, die nicht ausfallen sollten, vertrauliche Daten oder Algorithmen, oder auch Konfigurationsdateien, die vor Manipulation geschützt werden sollen. Dabei handelt es sich um softwarebezogene Assets, die entweder in den Infrastrukturen der KMUs zum Einsatz kommen oder in Produkten, die diese Firma herstellt. Diese Assets können das Ziel von unterschiedlichen Angriffen sein. Aus diesem Grund wird es für Unternehmen zunehmend wichtiger, ihre Produkte bereits von der Designphase an hinsichtlich IT-Sicherheit zu prüfen und zu härten. Ansonsten können hohe Verluste für Unternehmen drohen. Allerdings fehlen KMUs häufig die Ressourcen zur Umsetzung der notwendigen Schritte, die für eine umfängliche IT-Sicherheit notwendig sind.

Neben dem anfänglichen Identifizieren von Assets und möglicher Schwachstellen, stellt besonders die kontinuierliche Überwachung und Korrektur der stetig wachsenden Code-Basis eine zentrale Belastung dar.

Das Projekt Höhere IT-Sicherheit durch Sichere Software Entwicklung (HITSSSE) unterstützt KMUs unter anderem dabei, ihre Ressourcen ausschließlich auf kritische Code-Segmente zu konzentrieren.

Ziele unseres Projektes

Konkret wollen wir Softwareentwickler:innen dabei unterstützen,  Aufwand für Sicherheitsmaßnamen nur an den Stellen im Code aufzuwenden, die eine gewisse Kritikalität aufweisen bzw. sehr wahrscheinlich Bedrohungen ausgesetzt sind – das gilt sowohl bei neuen als auch bereits bestehenden Software-Projekten. Dafür wollen wir eine Annotation für Source Code etablieren, die auf verschiedene Arten verwertet werden kann:

Dokumentation sicherheitskritischer Stellen im Code

Zum einen soll diese Annotation die Entwickler:innen direkt unterstützen, indem sie kritische Stellen im Code dokumentiert und so eine Orientierungshilfe für andere Programmierer:innen schafft, um z.B. Erweiterungen der Code-Basis zu erleichtern.

Awareness für sicherheitskritische Stellen im Code schaffen

Zum anderen soll durch die Annotation auch eine Verbindung zwischen identifizierten Assets und den dafür verantwortlichen Segmenten im Code geschaffen werden. Diese kann sowohl direkt durch die Programmierer:innen genutzt, als auch durch Drittsoftware ausgewertet werden. Durch diese Verbindung sollen Code Reviews oder automatisierte Tests fokussiert auf die relevanten Code-Stellen beschränkt werden.

Dabei soll die Annotation auch so gestaltet sein, dass sie durch Drittsoftware verwertet werden kann. Beispielsweise könnte eine CI/CD Pipeline diese nutzen, um eine kontinuierliche Überwachung in inkrementellen Schritten über den Fortschritt des Projekts zu erlauben. Diese CI/CD Pipeline könnte außerdem automatisiert Entscheidungen darüber treffen, ob Reviews und/oder Tests notwendig sind (falls eine kritische Codestelle verändert wurde) um so den unnötigen Einsatz von Ressourcen zu reduzieren.

Aktuelle Tools

Um diese Ziele zu realisieren und KMU bei der Entwicklung sicherer Software zu unterstützen, arbeiten wir bei HITSSSE an vier verschiedenen Bereichen: (1) die Code-Annotation an sich, (2) ein IDE Plugin zum Annotieren von Code, (3) eine CI/CD Pipeline und (4) ein Demonstrator Projekt.

Annotation von Code

Die Annotation selbst soll schlussendlich in allen Programmiersprachen gleichermaßen einsetzbar sein. In einer ersten Version wird eine Unterstützung für Java angeboten. Diese soll dann schrittweise auf weitere Sprachen ausgeweitet werden. Die Annotation besteht aus zwei verschiedenen Formaten. Das erste Format ist eine direkte Annotation innerhalb des Quellcodes (siehe Abbildung 1) und das zweite ist ein JSON-Format, das auf Basis der Quellcode-Annotation generiert wird (siehe Abbildung 2). Ersteres garantiert Stabilität und Fehlertoleranz während das Zweite die Annotation zugänglicher für die Auswertung durch Drittsoftware macht, und so auch die Entwicklung eigener Features und Use-Cases ermöglicht.

Abbildung 1: Beispiel einer direkten Annotation in JavaScript

Abbildung 2: Beispiel einer JSON File

Intellij IDE Plugin

Das zweite Tool ist ein Intellij IDE Plugin, mit dem Entwickler komfortabel und intuitiv Code-Segmente annotieren können. Ein erster Prototyp des Plugins steht bereits unter folgendem Link zum Download bereit:

https://plugins.jetbrains.com/plugin/17541-code-annotation-tool

Dieser umfasst bis jetzt die Sprachen Java, JavaScript und PHP. Der aktuelle Prototyp kann dazu genutzt werden, Annotationen zu setzen und annotierte Code Segmente hervorzuheben.

CI/CD Pipeline

Als drittes Tool befindet sich derzeit eine exemplarische CI/CD Pipeline in Entwicklung. Diese wird ein Programm enthalten, das basierend auf Änderungen an annotierten Code-Segmenten automatisch wichtige Code-Reviews veranlasst, Tests ausführt und Programmierer darauf hinweist sollten mehrere Entwickler:innen simultan kritische Stellen bearbeiten.

Demonstrator Projekt

In Kürze wird es im Rahmen von HITSSSE ebenfalls ein Demonstrator Projekt geben. Anhand diesem kann der empfohlene Einsatz der Annotation und deren Vorteile selbst getestet werden.

 

Die oben genannten Tools sollen den Arbeitsalltag von KMUs erleichtern, indem diese den Softwareentwicklungsprozess vereinfachen. Während das Demonstrator Projekt zur Veranschaulichung der Code Annotation dient, sollen die weiteren Tools zur kontinuierlichen und sicheren Codeverwaltung beitragen.

 

Für Fragen und Anmerkungen stehen Ihnen Ihre Ansprechpartner im Projekt zur Verfügung:

Daniel Haak, E-Mail: daniel.haak@hs-augsburg.de

Raphael Mayr, E-Mail: raphael.mayr@hs-augsburg.de

Alle Projekte der Initiative IT-Sicherheit in der Wirtschaft finden Sie hier.