Detailseite
Projekt Druckansicht

Finden und Bezeugen unerwünschten Programmverhaltens

Fachliche Zuordnung Softwaretechnik und Programmiersprachen
Förderung Förderung von 2015 bis 2021
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 275488084
 
Vorherzusagen, wie sich Software verhält, war schon immer schwierig. Tests können wichtiges Verhalten und somit auch Probleme übersehen: Sie decken nur einen Teil der möglichen Programmausführungen ab, und geben keinerlei Garantie über andere potenzielle Ausführungen. Statische Codeanalyse andererseits ist bekannt für Präzisionsprobleme auf realistisch großen Programmen, welche oft zu falschen Problemmeldungen führen.Diese Probleme werden dann besonders gravierend, wenn man sich an der Analyse von bösartigem Schadcode versucht, welcher oftmals gerade mit dem Ziel geschrieben wurde, Programmanalysen in die Irre zu führen: Zur Laufzeit kann der Code beispielsweise unter Umständen feststellen, wenn er gerade analysiert wird, und sein schadhaftes Verhalten temporär einstellen. Das dynamische Laden und Entschlüsseln von Code hingegen kann statische Codeanalysen unbrauchbar machen.Das Projekt TESTIFY setzt es sich zum Ziel, die präzise und effektive Verhaltensanalyse auch für solche Software zu erlauben. Die Schlüsselidee, die TESTIF zugrunde liegt, ist eine neuartige Kombination von statischer Codeanalyse, automatischer Testfallgenerierung sowie dynamischer Programmanalyse:1. POTENZIELLE INTERESSANTES VERHALTEN DURCH TESTFALLGENERIERUNG DEMONSTRIEREN. Wir benutzen statische Codeanalyse, um potenziell interessantes Programmverhalten, beispielsweise auffällige Informationsflüsse, zu entdecken. Die aus dieser Analyse gewonnenen Informationen erlauben dann die präzise und dennoch automatische Generierung von Testfällen, die dazu genutzt werden können, um das jeweilige Programmverhalten zur Laufzeit zu bezeugen. Handelt es sich bei dem interessanten Programmverhalten um eine Sicherheitslücke, dann ist der Testfall im Prinzip ein Exploit dieser Lücke.2. STATISCHE ANALYSE DURCH DYNAMISCHE INFORMATIONEN UNTERSTÜTZEN. Die automatische Testfallgenerierung hat primär zum Ziel, möglichst viel Programmverhalten zu explorieren. Während der dynamischen Ausführung können wir jedoch zusätzlich über dynamische Analysen beobachten, wie die Applikation ggf. Programmcode dynamisch nachlädt und entschlüsselt. Dieser Code kann TESTIFY dann wiederum statisch analysieren, und daher auch für diesen Code Stellen potenziell interessanten Programmverhaltens finden. Weitere generierte Testfälle für diese werden dann auch für diesen Code wiederum Klarheit schaffen.TESTIFY zielt speziell auf Android ab, da diese Plattform für interessante Schadecodevarianten bekannt geworden ist. Mittels TESTIFY können Sicherheitsspezialisten, App-Entwickler, App Store-Betreiber, aber im besten Fall auch Endnutzer selbst Apps auf ungewünschtes Verhalten hin untersuchen. TESTIFY demonstriert hierbei das gefundene Verhalten durch eine reale Programmeingabe und liefert hiermit genau die nötigen Informationen, die für die Reproduktion des Verhaltens nötig sind, z.B.: "Wenn der Server malwarecontrol.io die Nachricht 'RECORD' sendet, schneidet die App Mikrofoneingaben mit."
DFG-Verfahren Sachbeihilfen
 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung