News

Verbesserte KI-Methoden zur Erkennung von Programmierfehlern

Im Auftrag des Bundesamts für Sicherheit in der Informationstechnik (BSI) haben Forschende der Uni Bremen und Mitarbeitende der Bremer Firma Team Neusta die Möglichkeiten des Einsatzes von Künstlicher Intelligenz bei der Codeanalyse untersucht. Die Studie kann beim BSI kostenlos abgerufen werden.

Softwarehersteller untersuchen ihre Programme oft bereits in der Entwicklungsphase, um Fehler frühzeitig zu entdecken. Durch den Einsatz sogenannter SAST-Werkzeuge (Static Application Security Testing) lässt sich dieser Prozess teilweise automatisieren. Auch wenn sich der Nutzen solcher Tools in der Praxis gezeigt hat, übersehen sie oft Fehler oder melden viele Fehlalarme, sodass der Nutzen eingeschränkt wird. Maschinelles Lernen (ML), also automatisches Lernen aus Daten, kann dazu beitragen, die Fehlerraten solcher SAST-Werkzeuge zu reduzieren.

In einer großangelegten Studie wurde jetzt die Wirksamkeit des Einsatzes maschineller Lernverfahren in diesem Kontext untersucht, wobei auch die bestmögliche Umsetzung anhand der neuesten Forschungsansätze im Blickpunkt stand. Die AG Softwaretechnik am Technologie-Zentrum Informatik und Informationstechnik (TZI) der Universität Bremen sowie die Firmen neusta software development und neusta mobile solutions haben im Auftrag des Bundesamts für Sicherheit in der Informationstechnik (BSI) den Stand der Technik ermittelt. Im Rahmen des Projekts „Machine Learning im Kontext von Static Application Security Testing (ML-SAST)“ führten sie Umfragen, Experteninterviews und eine systematische Literaturrecherche durch. Darüber hinaus untersuchten sie am Markt erhältliche SAST-Tools bezüglich ihrer ML-Funktionalitäten und Fehlererkennungsraten.

Größtes Potenzial beim „unüberwachten Lernen“

Die Ergebnisse fassten sie in einer umfangreichen Studie zusammen, wobei sie insbesondere die erfolgversprechendsten Ansätze sowie den Forschungsbedarf in diesem Umfeld herausarbeiteten. Eine zentrale Erkenntnis besteht darin, dass in den meisten Fällen überwachte Ansätze des maschinellen Lernens („supervised learning“) genutzt werden, obwohl diese mit erheblichen Nachteilen einhergehen. „Wenn man überwachte Lernansätze verwenden möchte, braucht man gute Datensätze für das Training der Werkzeuge, und die gibt es zurzeit nicht“, erklärt TZI-Mitarbeiter Lorenz Hüther. Die Entwicklung der benötigten Datensätze sei zumindest kurzfristig „eher unrealistisch“ und auch längerfristig nur mit erheblichem Aufwand realisierbar.

Darüber hinaus erfordere das überwachte Lernen ein hohes Maß an Erklärbarkeit der Ergebnisse – sowohl die Entwickelnden als auch die Anwendenden der Werkzeuge müssen erkennen können, ob die Entscheidungskriterien des Systems sinnvoll sind.

Das größte Potenzial sieht das Projektteam daher aktuell bei unüberwachten Lernverfahren („unsupervised learning“) mit Hilfe des sogenannten Clusterings. Dabei erkennt das System zunächst alle ähnlichen Funktionen des Programms und bündelt sie, um sie zu vergleichen. Wird an einer Stelle eine Abweichung entdeckt, erkennt das Werkzeug dies als potenziellen Fehler.

Prototyp wird bis Ende des Jahres veröffentlicht

Allerdings ist weiterer Forschungs- und Entwicklungsbedarf notwendig, um das Potenzial dieser Methoden für den Einsatz in der Praxis zu steigern. Die Projektbeteiligten wollen bis Ende des Jahres einen Prototyp entwickeln, der die besten aktuell verfügbaren Verfahren im Bereich ML-SAST nutzt. Der Prototyp wird als Open-Source-Projekt umgesetzt, sodass alle interessierten Hersteller ihn für ihre Produktentwicklung verwenden können. Das BSI finanziert die Entwicklung des Prototyps.


Weitere Informationen:

Die Studie „Machine Learning in the Context of Static Application Security Testing – ML-SAST“ kann beim BSI unter diesem Link abgerufen werden: https://www.bsi.bund.de/DE/Service-Navi/Publikationen/Studien/ML-SAST/ml-sast_node.html

 

Fragen beantwortet:

Lorenz Hüther
Technologie-Zentrum Informatik und Informationstechnik (TZI)
Universität Bremen
Telefon: +49 421 218-64476
E-Mail: lorenz1uni-bremen.de

 

Die besten Verfahren der automatisierten Codeanalyse können verschiedene Abhängigkeiten innerhalb eines Programms erkennen und diese zwecks weiterer Untersuchungen in Graphen übersetzen.