Trouver et corriger des failles n’est jamais une partie de plaisir pour les développeurs. Début décembre, Microsoft a présenté à la conférence NeurIPS (Neural Information Processing Systems) 2021, un « modèle d'IA prometteuse », appelé BugLab. Celui-ci pourrait aider et alerter le développeur lors de la détection d’une erreur et l'aider à la corriger par la suite. « L'objectif de notre travail est de développer la meilleure IA capable de trouver et de réparer automatiquement des dysfonctionnements qui semblent simples mais sont souvent difficiles à trouver. En libérant les développeurs de cette tâche, on leur laisse plus de temps pour travailler sur les éléments plus critiques (et plus intéressants) du développement » expliquent Miltos Allamanis et Marc Brockschmidt, deux chercheurs de Microsoft. Ces derniers ont explicité leurs recherches dans un article intitulé « Self-Supervised Bug Detection and Repair » (Détection et réparation auto-supervisées des bugs)

Actuellement, la formation des machines à la reconnaissance automatique des brèches reste limitée par le manque de données d'apprentissage. Alors que de grandes quantités de code source de programmes sont disponibles sur des sites tels que GitHub, « il n'existe que quelques petits ensembles de données de bugs explicitement documentés », ajoutent-ils. De fait, BugLab pourrait résoudre ce problème, en utilisant deux modèles concurrents : un qui cache les bugs dans des extraits de code corrects, et un autre qui déniche et corrige ces failles. Les deux modèles apprennent ainsi l’un de l’autre, le but étant de voir ces deux modèles deviennent meilleurs au fur et à mesure de leur entraînement. Les résultats sont jusqu'à 30 % plus efficaces par rapport à d'autres alternatives, notamment les détecteurs formés avec des vulnérabilités insérées aléatoirement.

BugLab fonctionne grâce à un système de deux modèles concurrents. (Crédit : BugLab)

Des résultats encourageants

Les chercheurs expliquent se pencher sur un ensemble de dysfonctionnements courants plutôt qu’apprendre à une machine à identifier des vulnérabilités arbitrairement complexes. « Il s'agit notamment de comparaisons incorrectes (par exemple, l'utilisation de "<=" au lieu de "<" ou ">"), d'opérateurs booléens incorrects (par exemple, l'utilisation de "and" au lieu de "or" et vice versa), de mauvais usages de variables (par exemple, l'utilisation incorrecte de "i" au lieu de "j") et de quelques autres ». Ils précisent se concentrer sur le code Python pour tester leur système. Une fois BugLab suffisamment entraîné, l’objectif est de l’utiliser « pour détecter et réparer des bogues dans du code réel ».

Les résultats prouvent que 26 % des bogues peuvent être trouvés et corrigés automatiquement. « Parmi les faiblesses trouvées par BugLab, il y avait auparavant 19 failles inconnues dans du code GitHub. Cependant, les résultats ont également montré de nombreux faux positifs, ce qui suggère que des progrès supplémentaires sont nécessaires avant que de tels modèles puissent être déployés en pratique » concluent les chercheurs de Microsoft.