Qualitätsmängel in Softwarecodes automatisiert finden und bewerten
Sind die Apps und Webdienste, die wir täglich verwenden, wirklich unbedenklich? Natürlich gehen wir davon aus, dass Entwickler*innen und anbietende Unternehmen das sicherstellen. Andererseits aber sind Security-Analysen äußerst aufwendig. Im Prinzip kann in jeder Zeile des Quellcodes ein Programmierfehler stecken. Und manchmal öffnet erst das Zusammenspiel der Softwarebausteine eine Schwachstelle. Moderne, automatisierte Codescans aber können derartige Sicherheitslücken schnell finden. Und sie helfen den Programmierer*innen auch dabei, die Fehler auszumerzen – bevor sie Schaden anrichten.
Ein einziges, falsch gesetztes Zeichen kann weitreichende und langfristige Auswirkungen haben. Zu weltweiter Berühmtheit hat es zum Beispiel die Mär vom besonders gesunden, weil ausgesprochen eisenreichen Spinat gebracht. Der vor rund einhundert Jahren fälschlicherweise um eine Zehnerpotenz zu hoch dokumentierte Eisengehalt des Gemüses wurde zigfach kopiert oder zitiert und erst Jahrzehnte später als irrtümlich entstandene Erkenntnis entlarvt. Gut, dass sich weder Popeye noch sein Zeichner sonderlich für die Wissenschaft interessiert haben.
Dass es mitunter schwer oder gar unmöglich ist, »schwarz auf weiß« festgehaltene Fehler oder Mängel wieder aus der Welt zu schaffen, ist ein Phänomen, dass nicht nur Historiker kennen. Längst hat es sich – wenn auch weniger augenfällig – auf die digitale Welt übertragen. Auch hier werden einmal erstellte Programmcodes von Softwareentwickler*innen immer wieder kopiert beziehungsweise als Softwarebaustein vielzählige Male und in unterschiedlichstem Gesamtzusammenhang eingesetzt – mögliche Mängel inklusive. Im günstigsten Fall ist es lediglich ein Zahlendreher oder ein falsch gesetztes Komma in einer Codezeile, die als Bug »nur« für Ärger sorgen, weil sich das Programm in bestimmten Anwendungssituationen aufhängt. In anderen Fällen kann ein Programmierfehler in einer kleinen Subroutine aber auch zu einem gefährlichen Einfallstor für Cyberkriminelle werden. Zum Beispiel, wenn die Einstellung einer Berechtigung für Zugriffe und Bearbeitungsschritte an bestimmten Daten zwar passwortgeschützt ist, dieses jedoch inmitten der langen Zeichenketten des Quellcodes auslesbar hinterlegt ist. »Besonders fatal dabei ist, dass solch ein Lapsus zwar schnell passiert. Ihn im Nachhinein aber aufzuspüren, ist wie die Suche nach der Nadel im Heuhaufen«, sagt Steven Arzt vom Fraunhofer-Institut für Sichere Informationstechnologie SIT.
Manuelle Sicherheitschecks reichen nicht
Auch über Jahre bewährte Softwarebausteine können sich also auch heute noch als Sicherheitsrisiko erweisen. Auslöser für diesen Wandel vom Paulus zum Saulus seien dabei vor allem die Kriterien »Kontext« und »Zeit«, erklärt Arzt. So ist etwa ein Zufallszahlengenerator, bei dem die gezogenen Zahlen nicht ganz so zufällig sind, wie sein Name verspricht, kein Problem, solange seine Ergebnisse lediglich dazu dienen, die Quests in einem Computerspiel zu berechnen. Ganz anders aber ist das mangelhafte Zufallssystem zu bewerten, wenn es im Kontext einer Banking-Anwendung verwendet wird. Zudem kann es sein, dass ältere Codes zwar fehlerfrei programmiert sind, aber in einer neueren Programmumgebung zu Mängeln führen. Typische Beispiele dafür sind integrierte Softwarebausteine, die ihre Kommunikation mit einem Server durch einen Kryptoalgorithmus absichern, der nicht mehr den modernen Sicherheitsstandards entspricht. »Im Grunde muss jedes Mal, wenn die App oder der Webdienst ein kleineres oder größeres Update erhält, eine umfangreiche Schwachstellenanalyse durch erfahrene Security-Spezialistinnen und -spezialisten gestartet werden«, sagt Arzt. Das aber sei weder zeitlich noch finanziell realistisch. In vielen Fällen würden die Qualitätstest länger dauern als die Zeitspanne bis zur nächsten Programmversion.
Ist es also unmöglich, dass Unternehmen für die von ihnen verwendeten oder angebotenen Apps und Webdienste ein hohes Maß an IT-Security gewährleisten können? »Nein!« konstatiert Arzt. Allerdings sollten Unternehmen dann Schwachstellenscanner nutzen, die immer leistungsfähiger werden: Im Projekt »VUSC« (Vulnerability Scanner) beispielsweise haben die Software- und Sicherheitsexpert*innen des Fraunhofer SIT einen Codescanner entwickelt, der umfangreiche Schwachstellenanalyen für Apps und Webdienste voll automatisiert durchführen kann.
Der von Fraunhofer SIT entwickelte Codescanner VUSC (hier in der Expertenansicht) durchsucht den Softwarecode von Apps nach Schwachstellen und erstellt zu jedem Fund eine detaillierte Analyse zu Gefährdungspotenzial und Lösung des Problems.
Bild: Fraunhofer SIT | bearbeitet durch Fraunhofer-Verbund IUK-Technologie
400 Schwachstellen auf einen Streich
VUSC ist sowohl für die Überprüfung von Apps für Android oder iOS geeignet, als auch für viele Webdienste. Unter anderem für solche, die auf einer Java-Engine beruhen. Die Anwendung des Analysetools ist denkbar einfach. Um eine App oder einen Webdienst untersuchen zu lassen, wird die Anwendung einfach in den Codescanner geladen – in der Form wie sie Nutzer*innen als Download oder über eine Webplattform zur Verfügung gestellt wird. VUSC benötigt keinerlei Wissen oder Daten aus dem Entwicklungsprozess der Programme, sondern arbeitet ausschließlich mit dem finalen Binärcode der Anwendung. Ihn durchforstet der Codescanner bis ins Detail. Im Gegensatz zu einer manuellen Prüfung arbeitet er dabei nicht nur stichprobenartig, sondern überprüft den kompletten Code – und dies innerhalb von Minuten: In der Anfang des Jahres 2023 verfügbaren Version sucht er dabei bereits mehr als 380 verschiedene Qualitätsmängel, die sicherheitsrelevante Auswirkungen haben können. Und jedes Mal, wenn der Scanner fündig wird, startet er weitere, tiefer gehende Analyseroutinen. Dazu zählen insbesondere auch solche Verfahren, die die Auswirkungen einer Schwachstelle während des Programmablaufs überwachen. »Erst dieses Beobachten einer potenziellen Gefährdung über die Programmlaufzeit hinweg erlaubt uns Aussagen darüber zu treffen, ob eine im Code bestehende Schwachstelle in der spezifischen Gesamtanwendung zur Gefahr werden kann«, betont Arzt. Dank der dynamischen Codeanalysen sei es dann möglich, vor konkreten Gefährdungen zu warnen oder auch Entwarnung zu geben.
Das Ergebnis der automatisierten Schwachstellenanalyse zeigt aber nicht nur, welches und an welcher Stelle im Binärcode ein Problem festgestellt wurde. Zusätzlich erhalten die Nutzer*innen zu jedem Fund umfangreiche Detailinformationen. Zum Beispiel in welchen Staaten rund um den Globus die Server stehen, mit denen eine Subroutine kommuniziert. Und sie erhalten konkrete Tipps, wie sich der jeweilige Softwaremangel beheben lässt sowie weiterführende Links zu Veröffentlichungen und Forschungsarbeiten zu dem jeweiligen Themenbereich.
Produkt und Forschungsplattform
VUSC ist zum einen ein einsatzfertiges Produkt, das Programmentwickler*innen und Unternehmen über eine Jahreslizenz nutzen können. Sie können das Programm dann auf ihren eigenen Rechnern installieren und Apps und Webdienste nach Fehlern scannen. Zum anderen ist VUSC aber auch eine Forschungsplattform, die es den Wissenschaftler*innen von Fraunhofer SIT ermöglicht, neue Methoden zur Erkennung und Behebung von Sicherheitslücken in Softwareprodukten in der praktischen Anwendung zu erproben. »Im Rahmen des Nationalen Forschungszentrums für Angewandte Cybersicherheit ATHENE sind wir maßgeblich daran beteiligt, kontinuierlich die aktuellen Gefährdungen der Cyberkriminalität zu erforschen und geeignete Gegenmaßnahmen beziehungsweise Vorkehrungen zu entwickeln«, so Arzt. Dazu zähle aber auch die Aufgabe, die dabei und im Rahmen weiterer Forschungen am Institut gewonnenen Erkenntnisse und Maßnahmen möglichst schnell in die breite Anwendung zu bringen. »Mit VUSC haben wir eine agile Infrastruktur aufgebaut, in die sich die neuesten Entwicklungen im Bereich Cyber-Security schnell integrieren lassen, sodass Unternehmen unmittelbar davon profitieren können«, so Arzt. Und auch in umgekehrter Richtung würden die Erfahrungen aus der breiten Anwendung des Codescanners den Wissenschaftler*innen wichtige Erkenntnisse und Hinweise für die weitere Security-Forschung.
Der Codescanner selbst ist so gestaltet, dass sämtliche Daten und Analysen ausschließlich auf den Rechnern der jeweiligen Nutzer*innen ablaufen. »Trotzdem hoffen wir auf freiwillige Rückmeldungen zu Erfahrungen mit unseren Schwachstellenanalysen«, betont Arzt. Jede Verbesserung oder Erweiterung der Analyseleistung aber liege ja auch im Interesse der VUSC-Nutzer*innen. Deshalb sei ein reger Erfahrungs- und Wissensaustausch mit den Wissenschaftler*innen des Fraunhofer SIT nicht nur vom Prinzip her wichtig, sondern mittlerweile täglich gelebte Realität.
Vom Auftragsbearbeiter zum Antwortgeber
Noch bedeutet allerdings jedes Softwareproblem, das der VUSC-Scanner zusätzlich analysieren soll, einen erheblichen Forschungsaufwand. Die Dimension der dafür eingesetzten Ressourcen zeigt beispielhaft die Handy-Wall, die das Team von Fraunhofer SIT betreibt: Einhundert Smartphones sind hier über ein leistungsstarkes und komplexes Rechner- und Steuerungssystem miteinander verschaltet. So lässt sich eine App simultan in einhundert verschiedenen Situationen testen. Solch ein Aufwand aber ist notwendig. Denn die Security-Spezialist*innen im Labor müssen geeignete Verfahren und Tools entwickeln und ausgiebig testen. Erst wenn hier robuste Ergebnisse erzielt werden konnten, wird eine neue Analyseroutine in den Codescanner integriert.
Parallel zu dieser zwar bewährten, aber eben sehr aufwendigen Vorgehensweise forschen wir bereits an der nächsten Generation der Schwachstellenanalyse, erklärt Arzt: »Durch den Einsatz von Künstlicher Intelligenz und eigenständigem Erfahrungslernen durch die Algorithmen, wollen wir erreichen, dass die Software nicht mehr nur die Probleme lösen kann, die wir ihr dezidiert als Analyseaufgabe mitgeben«. Perspektivisch solle es genügen, dem Codescanner mitzuteilen, welche allgemeinen Sicherheitskriterien eine App oder ein Webservice erfüllen muss. Das Programm sucht dann selbst nach Problemen, die dafür ursächlich sein könnten, wählt die dafür geeigneten Analysetools und entwickelt Lösungsvorschläge, die das Problem beseitigen.
(ted)
Expert*in
Dr. Steven Arzt
Fraunhofer-Institut für Sichere Informationstechnologie SIT