L’été est souvent propice à la réflexion et au lancement de grands projets. Dans ce cadre, la Darpa (Defense Advanced esearch Projects Agency) vient d’annoncer sa volonté d’« éliminer les vulnérabilités liées à la sécurité mémoire, une bonne fois pour toute ». Pour être plus précis, l’organisme veut réécrire son code historique en C vers le langage Rust jugé plus sécurisé pour la mémoire.

Elle suit ainsi les recommandations récentes de la Maison Blanche qui a exhorté les développeurs à abandonner C et C++ au profit de langages sans risque de vulnérabilités pour la mémoire. Elle fait référence à ceux qui sont protégés contre les débordements de mémoire tampon, les lectures hors-limites (out-of-bounds reads ) et les fuites de mémoire. La NSA en 2022 avait déjà soulevé le problème en proposant de migrer vers les langages Rust, C#, Go, Java, Ruby et Swift.

Tractor, un outil de conversation basée sur l'IA

Dans le cadre de la Darpa, cette migration va s’effectuer à travers un projet nommé Tractor, acronyme de « TRanslating All C TO Rust ». Cet outil de conversation de code va s’appuyer sur la puissance de l’IA pour automatiser ce travail. Dan Wallach, directeur du programme Tractor indique dans un communiqué, « vous pouvez aller sur n’importe quel site web d’un LLM, commence à chatter avec l’un des chatbots d’IA et tout ce que vous avez à dire est « voici du C, veuillez traduire en code idiomatique Rust sûr », couper, coller et quelque chose en sort et c’est souvent très bon, mais pas toujours ».

Il ajoute, « le défi de la recherche est d’améliorer considérablement la conversation automatique de C en Rust en particulier pour la construction plus pertinente des programmes ». Dans ce travail, Dan Wallach s’attend à ce que les propositions comprennent des combinaisons inédites d’analyses logicielles (statique et dynamique) et de LLM. La Darpa va organiser des concours publics pour tester les capacités de Tractor. Ce dernier doit s’efforcer de créer la même qualité et le même style qu'un développeur Rust compétent produirait.