Onderzoekers van Microsoft hebben de AI-tool BugLab ontwikkeld, waarmee fouten in programmeercode kunnen worden opgespoord. Op die manier zijn securityincidenten te voorkomen. Het model is niet getraind met bestaande programmeerfouten en geheel autonoom is.

BugLab is volgens een paper een ‘autonome tool voor het opsporen van programmeerfouten en het repareren van de fouten’. Het ‘autonome’ slaat op het model dat voor de training van de tool is gebruikt. Dit model is niet gebaseerd op al bestaande data van programmeerfouten, maar de tool traint zichzelf zonder toezicht.

Reden voor het gebruik van het niet-trainen van het model voor de tool was het gebrek aan echte fouten met opmerkingen. Hoewel er veel broncode beschikbaar is voor het trainen van modellen voor bugtools, is deze code vaak niet van opmerkingen voorzien.

Zelftraining met opmerkingen programmeurs

In plaats van het trainen met bestaande fouten, traint de tool zichzelf met het uitvoeren van zogenoemde ‘hide and seek-spelletjes’ of via natural language hints die programmeurs in codecommentaren achterlaten. Denk daarbij aan variabele namen. Vervolgens gebruikt de tool twee concurrerende modellen, computer vision en natural language processing (NLP). De tool BugLab gebruikt ook, of ‘wordt geïnspireerd door’ general adversarial networks (GAN’s). Dit zijn de neurale netwerken die soms door deep fakes worden gebruikt.

De twee modellen van de BugLab-tool omvatten een bug selector en een bug detector. Het bug selector-model bepaalt daarbij of het een fout moet ‘aanmaken’, waar deze wordt aangemaakt en in welke vorm. Op basis van deze keuzes wordt de code bewerkt voor het aanmaken van de fout. Het bug detector-model probeert vervolgens te bepalen of in de onderzochte code een fout is aangemaakt, waar in code dit is en repareert het.

Meer concreet richt deze speciale op AI gebaseerde tool voor het ontdekken van programmeerfouten zich op het ontdekken van moeilijk te ontdekken fouten. De tool richt zich niet op al bekende fouten, aangezien daarvoor al traditionele programmeeranalytische tooling beschikbaar is.

Resultaten testcase

In een testcase onderzochten de onderzoekers een dataset van 2.374 real-life Python package fouten. Ongeveer 26 procent van deze fouten kon worden gevonden en automatisch gerepareerd. Daarnaast ontdekten zijn 19 nieuwe onbekende bugs.

Helaas ontdekten de experts dat deze nieuwe modellen ook veel false positives creëren. Er is dus nog wel wat werk aan de winkel.