Les nouveaux contributeurs sont essentiels aux projets open source. Sans eux, le projet finira par s'atrophier et devenir inactif, ou ses contributeurs expérimentés biaiseront les orientations futures du projet. Cependant, les nouveaux contributeurs peuvent également présenter un risque plus élevé d'introduire un code vulnérable. Pour les projets qui ont besoin à la fois d'implémentations sûres et d'une communauté de contributeurs forte et diversifiée, ce conflit est une question urgente.
L'une des pistes envisagées pour atteindre cet objectif consiste à réécrire des éléments de code C ou C++ en Rust, un langage conçu pour s'appliquer aux mêmes domaines que le C et le C++, mais avec des garanties de sécurité accrues. Afin de déterminer si Rust peut contribuer à empêcher les nouveaux contributeurs d'introduire des vulnérabilités et, par conséquent, à alléger le fardeau des mainteneurs, nous examinons le projet Oxidation de Mozilla, qui a remplacé des composants du navigateur web Firefox par des équivalents écrits en Rust.
Nous utilisons les données disponibles de ces projets pour dériver les paramètres d'une nouvelle application des courbes d'apprentissage, que nous utilisons pour estimer la proportion de modifications qui introduisent des vulnérabilités de la part de nouveaux contributeurs d'une manière qui est directement comparable.
Nous constatons qu'en dépit des préoccupations relatives à la facilité d'utilisation, les nouveaux contributeurs aux projets Rust sont environ 70 fois moins susceptibles d'introduire des vulnérabilités que les nouveaux contributeurs aux projets C++.
Nous avons également constaté que le taux de nouveaux contributeurs augmentait globalement après le passage à Rust, ce qui implique que cette diminution des vulnérabilités de la part des nouveaux contributeurs ne résulte pas d'une plus petite réserve de développeurs plus compétents, et que Rust peut en fait faciliter l'arrivée de nouveaux contributeurs.
Dans le même temps, nous analysons qualitativement les vulnérabilités Rust dans ces projets, et mesurons l'efficacité de l'algorithme commun SZZ pour identifier les commits induisant des bogues à partir de leurs correctifs.
Partager