Goran Piskachev promoviert zur statischen Codeanalyse
Die effektive und sichere Softwareentwicklung ist das Steckenpferd von Goran Piskachev. Am 9. Dezember 2022 schloss der ehemalige Wissenschaftler des Fraunhofer IEM erfolgreich seine Promotion zum Thema „Adapting Taint Analyses for Detecting Security Vulnerabilities“ ab. Wir gratulieren herzlich!
Goran Piskachev war von 2015 bis 2022 Wissenschaftlicher Mitarbeiter am Fraunhofer IEM. Zuletzt leitete er die Gruppe Entwicklungswerkzeuge in der Abteilung Sichere Services & Apps. Heute ist er Applied Scientist bei Amazon Webservices. Das Thema statische Codeanalyse entwickelt er hier im Tool CodeGuru Reviewer weiter.
Sicherheitslücken im Programmcode erkennen
Wie erkennen Programmier:innen Fehler in ihrem Code möglichst frühzeitig in der Entwicklung? Und mit welchen Hilfsmitteln können sie sie schnell und effektiv beheben? Um diese Fragen dreht sich die Promotion zum Thema „Adapting Taint Analyses for Detecting Security Vulnerabilities“:
Die ersten Anwendungen der statischen Codeanalyse bildeten die Grundlage für Compiler-Optimierungstechniken. In den letzten Jahren haben Anwendungen zum Aufspüren von Sicherheitslücken an Aufmerksamkeit gewonnen, vor allem in der Industrie – wo die Sicherheit für die meisten digitalen Unternehmen an Bedeutung gewonnen hat. Damit haben sich die statischen Analysewerkzeuge, die zunächst vor allem für Code-Refactoring und Code-Smell-Erkennung bekannt waren, zu so genannten Static-Analysis-Security-Testing-Werkzeugen (SAST) entwickelt. Viele bestehende SAST-Tools verwenden als Kern eine Taint-Analyse, die so konfiguriert werden kann, dass sie verschiedene Sicherheitslücken erkennt.
Herausforderung Usability
Frühere empirische Studien über statische Analysewerkzeuge berichteten, dass Benutzer:innen aufgrund einer hohen Anzahl falscher Warnungen, fehlender wichtiger Ergebnisse oder langer Laufzeiten Probleme mit der Benutzerfreundlichkeit haben. Wenn sie die Werkzeuge richtig konfigurieren, können diese Probleme vermieden werden. Viele Tool-Anbieter ermöglichen die Tool-Konfiguration über die Spezifikation eines benutzerdefinierten Taint-Flows in domänenspezifischen Sprachen. Diese Konfiguration ist jedoch ein manueller Schritt, den nur hochqualifizierte Benutzer:innen mit (1) Kenntnissen in statischer Analyse, (2) einem guten Verständnis des zu analysierenden Zielprogramms und (3) einem soliden Verständnis von Sicherheitslücken durchführen können.
In der Praxis haben die Benutzer:innen unterschiedliche Hintergründe (z.B. Softwareentwickler, Softwarearchitektin, Sicherheitsexperte, Managerin) und ihnen fehlt mindestens eine dieser Voraussetzungen. Daher laufen die Tools bei ihrer Verwendung meist in ihren Standardkonfigurationen, was zu den bereits erwähnten Problemen mit der Benutzerfreundlichkeit führt und eine geringe Akzeptanz und Beliebtheit bei den Benutzern zur Folge hat.
Die Promotionsarbeit schlägt Methoden und Werkzeuge vor, die die Anpassung der Taint-Analyse an die Zielprogramme (halb-)automatisieren und es einem breiteren Benutzer:innenkreis ermöglichen, die Werkzeuge nach ihren Bedürfnissen zu konfigurieren. Insbesondere konzentriert sich die Arbeit auf Softwareentwickler:innen als primäre sowie auf Sicherheitsingenieur:innen als sekundäre Nutzer:innen. Zunächst führt sie eine empirische Studie durch, um ihre Bedürfnisse der Personen besser zu verstehen, die bereits Erfahrung mit Taint-Analyse oder SAST-Tools im Allgemeinen haben. Die Studie bestätigt, dass ihre Hintergründe unterschiedlich sind. Meist sind sie jedoch motiviert, mit den SAST-Tools zu interagieren, um sie zu konfigurieren und an das Zielprogramm anzupassen.
Verbesserte Anwendung durch Maschinelles Lernen
Auf dieser Grundlage schlägt die Promotionsarbeit SWAN vor, einen vollautomatischen maschinellen Lernansatz zur Ableitung sicherheitsrelevanter Methoden aus dem Zielprogramm, die für die Spezifikation von Taint-Flows erforderlich sind. Unsere experimentellen Ergebnisse zeigen, dass SWAN eine hohe Präzision und Wiedererkennung für eine Reihe von populären Sicherheitslücken erreicht. Seine Grenzen können durch SWAN Assist, einen halbautomatischen Ansatz für aktives maschinelles Lernen, verbessert werden, der das Feedback des Benutzers einbezieht, um die Ergebnisse von SWAN zu verbessern. Schließlich schlägt die Arbeit fluentTQL vor, die erste entwicklerorientierte, domänenspezifische Sprache zur Spezifikation von Taint-Flows, um die Taint-Analyse mit neuen Sicherheitsschwachstellen zu konfigurieren. In einer Nutzerstudie hat sich fluentTQL im Vergleich zu einer kommerziellen State-of-the-Art-DSL, CodeQL, als exzellent benutzbar erwiesen. fluentTQL ist unabhängig von der zugrundeliegenden Taint-Analyse und wird als Teil von SecuCheck implementiert, unserem Taint-Analyse-Tool, das in mehreren integrierten Entwicklungsumgebungen läuft.
Die erzielten Ergebnisse bringen das Design und den Einsatz von Taint-Analyse-Tools voran. Die Promotionsarbeit zeigt, dass durch maschinelles Lernen und benutzerzentriertes Design die Anpassung der Werkzeuge für die Endbenutzer:innnen verbessert werden kann.
Hier gibt es Informationen zur statischen Codeanalyse am Fraunhofer IEM: Safety & Security by Design am Fraunhofer IEM