Universität Bremen 18.10.2022, 09:12 Uhr

KI erkennt Programmierfehler

KI-Methoden zur Erkennung von Programmierfehlern: Die Uni Bremen und die Bremer Firma Team Neusta haben die Möglichkeiten von Künstlicher Intelligenz bei der Codeanalyse untersucht. Bis Ende dieses Jahres soll ein Best-practice-Prototyp verfügbar sein.
Die besten Verfahren der automatisierten Codeanalyse können verschiedene Abhängigkeiten innerhalb eines Programms erkennen und diese zwecks weiterer Untersuchungen in Graphen übersetzen.
(Quelle: Illustration: Lorenz Hüther / TZI)
Softwarehersteller untersuchen ihre Programme 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.
Die Ergebnisse fassten sie in einer Studie zusammen. 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.
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.
Die Studie "Machine Learning in the Context of Static Application Security Testing – ML-SAST" kann unter diesem Link abgerufen werden:


Das könnte Sie auch interessieren