Microsoft trainiert eine KI, schwer entdeckbare Software-Bugs zu finden

Microsoft hat mithilfe einer Künstlichen Intelligenz einen Fehlerdetektor für Software entwickelt, der lernt, Fehler zu finden und zu beheben, ohne auf Daten von echten Fehlern trainiert zu sein. Das ist ein ganz neues Konzept.
Fehler, Bug, Bugfix, Error, Bugs bugs bugs, Windows 11 Fehler, Windows 11 Bugs Bugs Bugs, Windows 11 Troubleshoot, Windows 11 Bug
Damit kehrt Microsoft laut eigener Angabe nun das bisher übliche Lernmodell für ähnliche Bug-Finder-Tools einfach mal um: Die Microsoft-Forscher haben ein Deep-Learning-Modell erarbeitet, das darauf trainiert wurde, Softwarefehler zu finden, ohne dass die KI zuvor mit realen Fehlern zum Lernen gefüttert wurde. Es gibt bereits Dutzende von Tools für die statische Analyse von Code in verschiedenen Sprachen. Diese erkennen zum Beispiel Sicherheitslücken anhand der Vergleiche mit bekannten Sicherheitslücken. Microsoft nutzt nun maschinelles Lernen, um die Fähigkeit zu verbessern, sowohl Fehler zu erkennen als auch gleich zu beheben.

BugLab findet Zero-Day-Schwachstellen

Das Projekt nennt sich BugLab und ist von Microsoft Research UK entwickelt worden. BugLab zielt darauf ab, schwer zu entdeckende Fehler zu finden, im Gegensatz zu kritischen Fehlern, die bereits durch traditionelle Programmanalysen gefunden werden können.

Die Forscher meldeten jetzt, 19 bisher unbekannte Fehler in Open-Source-Python-Paketen von PyPI gefunden zu haben. Details dazu wurden in dem Paper "Self-Supervised Bug Detection and Repair" beschrieben. "BugLab kann beigebracht werden, Fehler zu erkennen und zu beheben, ohne dass markierte Daten verwendet werden, und zwar durch ein "Versteckspiel"", erklären Miltos Allamanis, ein leitender Forscher bei Microsoft Research und Marc Brockschmidt, ein leitender Forschungsmanager bei Microsoft. Beide sind Autoren der Studie.

Sie glauben, dass Fehler nicht nur über die Struktur eines Codes gefunden werden können, sondern auch durch das Verstehen von mehrdeutigen Hinweisen in natürlicher Sprache, die Softwareentwickler in Codekommentaren, Variablennamen und ähnlichem hinterlassen.

Kleine Fehler einbauen, erkennen, beheben

Die beiden Modelle von BugLab umfassen einen Bug-Selektor und einen Bug-Detektor: "Bei vorhandenem, vermutlich korrektem Code entscheidet ein Bug-Selektor-Modell, ob es einen Fehler einfügen soll, wo er eingefügt werden soll und in welcher genauen Form (z.B. ein bestimmtes "+" durch ein "-" ersetzen). Angesichts der Auswahl des Selektors wird der Code bearbeitet, um den Fehler einzufügen. Dann versucht ein anderes Modell, der Fehlerdetektor, festzustellen, ob ein Fehler in den Code eingefügt wurde, und wenn ja, diesen zu lokalisieren und zu beheben."

Anhand eines Testdatensatzes von 2374 realen Python-Paketfehlern zeigten die Forscher, dass 26 Prozent der Fehler automatisch gefunden und behoben werden können. Allerdings zeigte ihre Technik auch sehr viele falsch-positive Ergebnisse an, also Fehler, die eigentlich keine waren. So wurden zwar einige bekannte Fehler entdeckt, aber nur 19 der 1.000 gemeldeten Warnungen von BugHub waren tatsächlich richtige Bugs.

Von den 19 gefundenen Zero-Day-Fehlern wurden 11 auf GitHub veröffentlicht, von denen 6 zusammengeführt wurden und 5 zur Genehmigung anstehen. Einige der 19 waren zu unbedeutend um sie zu melden, so Microsoft.

Siehe auch:
Jetzt einen Kommentar schreiben


Alle Kommentare zu dieser News anzeigen
Tipp einsenden
❤ WinFuture unterstützen
Sie wollen online einkaufen? Dann nutzen Sie bitte einen der folgenden Links, um WinFuture zu unterstützen: Vielen Dank!