Projekte in AVSV

Automatic Vulnerability Scanner for Mobile Applications

Im Rahmen dieses Projekts wird der Schwachstellenscanner VUSC entwickelt, der vollautomatisch Sicher­heits­lücken in mobilen Apps und den zugehörigen Backend-Diensten identifizieren kann. Mit VUSC können Unternehmen nicht nur ihre eigenen Ent­wicklungen prüfen, sondern auch eingekaufte Anwendungen oder Module, für die sie keinen Quellcode besitzen. Für die Analyse ist nur die binäre Anwendung erforderlich, wie sie auf dem Zielgerät installiert wird. Somit müssen sich Anwender nicht mehr auf die Aussagen der jeweiligen Hersteller verlassen, sondern können diese effizient überprüfen. Kern von VUSC ist die Verwendung plattformspezifischer semantischer Modelle. Statt einfache Muster zu erkennen, soll der Scanner die spezifische Semantik einer Android-App, einer iOS-App, eines Java EE-Webservices erkennen, und auf dieser Grundlage den Code beurteilen. Dieser Ansatz ermöglicht es, die Falschmeldungen des Scanners zu minimieren. Statt hunderte Meldungen zeitaufwendig manuell nachvollziehen und überprüfen zu müssen, können sich Analysten mit VUSC auf die realen Probleme konzentrieren. Zudem extrahiert der Scanner zu jeder Schwachstelle Detailinformationen: Mit welchem Server wird kommuniziert, welche Daten werden übertragen, welcher Algorithmus wird für die Transportverschlüsselung eingesetzt? Das Projekt stellt einen wichtigen Schritt dar, um von Coding Practices und Fehlermustern zu einer Risikobewertung zu gelangen. Mit den von VUSC ermittelten Detaildaten kann der Analyst viel leichter einschätzen, welche Schwachstellen relevant sind und priorisiert behoben werden müssen.

Mehr Informationen zum Codescanner VUSC


Automatic Vulnerability Verification

Automatisierte Schwachstellenscans bedeuten derzeit trotz aller damit einhergehenden Vorteile einen signifikanten zusätzlichen Aufwand für Entwicklungsteams. Die vom Scanner gefundenen potentiellen Lücken müssen manuell überprüft werden, um Falschmeldungen und auszusortieren und die Relevanz des Problems für eine priorisierte Behebung einzuschätzen. Viele gemeldete Lücken erweisen sich als irrelevant, z.B. wenn sich eine Lücke in einer Funktion befindet, die nur mit umfangreichen Benutzerberechtigungen überhaupt zur Verfügung steht. In diesem Fall würde ein Angreifer durch die Lücke keine zusätzlichen Zugriffsmöglichkeiten gewinnen, die er nicht ohnehin schon besitzt. In diesem Projekt sollen Verfahren entwickelt werden, um Lücken automatisch einzuschätzen. Dazu soll der Scanner versuchen, den betroffenen Code auszuführen und die Lücke auszulösen. Gelingt dies, wird die entsprechend Lücke für die sofortige Behebung priorisiert. Andernfalls ist zwar nicht ausgeschlossen, dass die Lücke dennoch existiert, doch sollten die nachweisbar vor­handenen und relevanten Lücken bei begrenzten Ressourcen Vorrang genießen. So lässt sich das Sicherheitsniveau steigern, ohne Entwicklungsprozesse zusätzlich zu verlangsamen.


User-centric visualization of security problems

Heutige Softwaresysteme werden durch Soft­ware­ent­wicklungs­prozesse erstellt, die nicht vor Fehlern gefeit sind, welche von Angreifern ausgenutzt werden können. Automatische Softwarescanner ermöglichen es Entwicklern, Sicherheitsanalysten und Datenschutzbeauftragten, ihre Anwendung zu analysieren, um Schwachstellen oder Datenschutzverstöße zu erkennen. Dennoch können diese Benutzergruppen nicht als homogene Gruppe betrachtet werden, da sie über unterschiedliches technisches Wissen verfügen. Auch sind Sicherheitsberichte von Softwarescannern durch viele False-Positive Meldungen oder die schiere Anzahl von Sicher­heits­lücken oft schwer zu verstehen.
Das Ziel dieses Projekts ist daher die Entwicklung von Visualisierungen in einem benutzerzentrierten Ansatz für diese Benutzergruppen. Damit ist es möglich auf den genauen Nutzungskontext sowie die Anforderungen und Ziele der Benutzergruppen einzugehen. Dazu gehören beispielsweise die Ermittlung des Sicherheitszustands einer Applikation, der Überblick über Software-Schwachstellen oder der Triage Prozess. Interaktive Visualisierungen ermöglichen es Nutzern auf diese Weise, fundiertere Entscheidungen für Privatsphäre und Cybersicherheit zu treffen.


Machine Learning for Vulnerability Detection

Um auf bestimmte Schwachstellen von Softwarecode zu prüfen, werden im klassischen Ansatz Fakten extrahiert, z. B. welche API-Funktionen mit welchen Werten aufgerufen werden, welche Datenflüsse im analysierten Programm existieren oder welche Einstellungen in Konfigurationsdateien des Zielprogramms vorgenommen wurden. Ein Regel- oder Machine-Learning-Modell kann dann unerwünschte Kombinationen dieser Fakten beschreiben. Im Gegensatz dazu zielt die ATHENE-Forschung auf einen ganzheitlichen Ansatz ab, der flexibel mit heterogenen Daten aus unterschiedlichen Quellen umgehen kann. Zu diesem Zweck wird die tiefe probabilistische Programmierung eingesetzt, die es dem Benutzer erlaubt, (tiefe) generative probabilistische Modelle als High-Level-Programme zu spezifizieren und diese Modelle dann in Inferenzprozeduren "herunter zu kompilieren". Probabilistische Regeln und tiefe Netze werden verwendet, um Schwachstellen in Softwareanwendungen zu identifizieren und anspruchsvolle Beziehungen zwischen den Entitäten von Softwareanwendungen zu extrahieren sowie Inferenzen über Fakten zu machen, die diese Entitäten betreffen. Insgesamt entsteht so die erste flexible Plattform für die schnelle Erstellung, Modellierung und Verwaltung von Trainingsdaten und Machine-Learning-Modellen für die Erkennung von Anwendungsschwachstellen.


Vulnerability Detection for Hybrid Apps using Generic Analyses

Moderne Anwendungen enthalten eine Vielzahl von Sicher­heits­lücken. Solche Schwachstellen führen u. a. zu Datenlecks und legen Code so offen, dass Angreifer ihn für böswillige Zwecke ausnutzen können. Die statische Codeanalyse kann helfen, solche Bedenken zu zerstreuen, indem sie Schwachstellen aufdeckt. Tools für die statische Analyse können alle Codepfade untersuchen, sind aber anfällig für False Positives und unpräzise, was die Praxistauglichkeit beeinträchtigt. Außerdem sind sie nicht in der Lage, mit verschleiertem Code umzugehen, was laut einer früheren Studie unseres Teams weit verbreitet ist. Aktuelle statische Analyseansätze zielen auf eine Sprache ab. In der Praxis kommt es jedoch häufig vor, dass eine einzelne Anwendung gleichzeitig Java und JavaScript verwendet; JavaScript vor allem zur Erstellung von Benutzeroberflächen oder Web-Clients. Das Ziel dieses Projekts ist es, skalierbare und präzise generische statische Analysen für hybride Anwendungen zu entwickeln. Der Ansatz wird zunächst Code mit Hilfe des bestehenden Prototyps StringHound entschleiern und dann die hauseigene skalierbare Datenflussanalyse in Kombination mit modernster JavaScript-Typanalyse anwenden. Dabei wird das modulare, erweiterbare Framework OPAL als Basis verwendet.


Further development of the CogniCrypt Assistant to ensure the correct use of crypto libraries

Kryptografische APIs unterstützen Entwickler bei der Durchführung von Aufgaben, die Daten schützen, wie Verschlüsselung oder Passwortverwaltung. Frühere Forschungen haben gezeigt, dass die Verwendung solcher APIs schwierig ist. CogniCrypt, das an der TU Darmstadt entwickelt wurde, hilft Entwicklern dabei, solche Missbräuche zu vermeiden. Es hilft Entwicklern mit zwei Komponenten. Die Code-Generator-Komponente stellt Vorlagen für die Verwendung von krypto­grafischen Aufgaben zur Verfügung, die als Ausgangspunkt dienen, da sich in Online-Foren bereitgestellter Code als fehlerhaft erwiesen hat. Die Komponente zur statischen Analyse verwendet Spezifikationen, die in einer Sprache namens Crysl geschrieben sind, um auf Fehler in der API-Nutzung hinzuweisen. Das Ziel dieses Projekts ist es, CogniCrypt zu professionalisieren, indem eine Open-Source-Gemeinschaft um es herum aufgebaut wird und professionelle Praktiken wie nächtliche Builds und kontinuierliche Integrationen eingebaut werden. Als Teil des Projekts soll CogniCrypt über Java und JCA hinaus erweitert werden, um andere Sprachen und Bibliotheken zu unterstützen. Darüber hinaus werden Ansätze untersucht, wie die Spezifikationssprache Crysl die He­raus­for­de­rung­en durch sich entwickelnde APIs und Standards unterstützt werden können.


Code transformers and knowledge graphs for ​vulnerability detection

Während traditionell die Erkennung von Schwachstellen in Code durch statische oder dynamische Analysen erfolgte, verwenden moderne Ansätze Machine-Learning Methoden. Plattformen wie GitHub und Stack Overflow enthalten große Mengen an Code, welche als Datenquelle für Machine-Learning Modelle dienen. Insbesondere zeigten Deep Learning und Transformer als nützlich, um Code zu synthetisieren und sicherheitsrelevanten Missbrauch zu erkennen. Obwohl Projekte wie GitHub von Copilot das Potential von Maschine-Learning basierten Methoden demonstriert haben, zeigen jüngste Studien, dass ein erheblicher Teil des generierten Codes anfällig für Angriffe ist. Des weiteren behandeln Transformer Code als syntaktisch formatierten Text und ignorieren semantische Informationen wie Kontroll- und Datenfluss. Um diese Probleme zu lösen, wurden Knowledge Graphen adaptiert, die die Zusammenhänge textueller Daten in Programmen erfassen, welche aus Foren wie Stack Overflow und Programmdokumentation extrahiert werden.
Im Rahmen dieses Projekts werden wir eine Architektur für anpassbare Code Transformer entwickeln, in der Komponenten modular eingesetzt werden können um semantische Programminformationen in Code Knowledge Graphen einzufügen.