Le premier impliquait un problème de sécurité panique dans l’implémentation de MapWindows :: clone de Rust. La fonction a créé un tampon avant d’initialiser complètement son contenu, puis a appelé une opération de clonage fournie par l’utilisateur pour le remplir. Si cette opération déclenchait une panique, le mécanisme de déroulement de Rust pourrait invoquer le destructeur du tampon, qui tenterait d’accéder à la mémoire non initialisée. Microsoft a déclaré que le correctif signalé empêche la destruction du tampon partiellement initialisé avant la fin de l’initialisation.

Une autre découverte impliquait str::replace. Les chercheurs ont découvert que la fonction pouvait faire une hypothèse incorrecte concernant une implémentation personnalisée du trait Pattern nocturne. Une implémentation personnalisée pourrait fournir un octet non-ASCII là où le code attendait un caractère ASCII, ce qui entraînerait la production de données UTF-8 non valides par l’opération de remplacement. Les opérations de chaîne ultérieures pourraient alors déclencher un comportement indéfini, a déclaré Microsoft.

Les bugs au niveau du système affectent la stabilité de Rust

Microsoft a indiqué que les deux premières catégories de faiblesses étaient déjà étudiées en 2021 grâce à Rudra, un analyseur statique développé par des membres de l’équipe de recherche. La bibliothèque standard avait également résolu des problèmes de sécurité anti-panique dès 2015, mais des faiblesses similaires continuent d’apparaître dans ses implémentations.

A lire également