Le créateur de C++ a critiqué l'imposition de langages de programmation sûrs

Bjarne Stroustrup, le créateur du langage C++, a publié des objections aux conclusions du rapport de la NSA, qui recommandait aux organisations de s'éloigner des langages de programmation comme C et C++, qui laissent la gestion de la mémoire au développeur, au profit des langages ​​tels que C#, Go, Java, Ruby, Rust et Swift, qui assurent une gestion automatique de la mémoire ou effectuent des contrôles de sécurité de la mémoire au moment de la compilation.

Selon Stroustrup, les langages sécurisés mentionnés dans le rapport de la NSA ne sont en fait pas supérieurs au C++ dans les applications importantes de son point de vue. En particulier, les recommandations de base pour l'utilisation du C++ (C++ Core Guidelines), développées ces dernières années, couvrent des méthodes de programmation sûres et prescrivent l'utilisation d'outils garantissant un travail sûr avec les types et les ressources. Cela laisse la possibilité aux développeurs qui n'ont pas besoin de garanties de sécurité aussi strictes de continuer à utiliser les anciennes méthodes de développement.

Stroustrup estime qu'un bon analyseur statique qui suit les directives de base C++ peut fournir les garanties nécessaires pour la sécurité du code C++ à un coût nettement inférieur à celui d'une migration vers de nouveaux langages de programmation sécurisés. Par exemple, la plupart des directives principales sont déjà implémentées dans l'analyseur statique et le profil de sécurité de la mémoire inclus dans Microsoft Visual Studio. Certaines recommandations sont également prises en compte dans l’analyseur statique Clang Tidy.

Le rapport de la NSA a également été critiqué pour s'être concentré uniquement sur les problèmes de mémoire, laissant de côté de nombreux autres problèmes de langage de programmation qui affectent la sécurité et la fiabilité. Stroustrup considère la sécurité comme un concept plus large, dont les différentes facettes peuvent être réalisées par une combinaison de styles de codage, de bibliothèques et d'analyseurs statiques. Pour contrôler l'inclusion de règles garantissant la sécurité du travail avec les types et les ressources, il est proposé d'utiliser des annotations dans le code et les options du compilateur.

Dans les applications où les performances sont plus importantes que la sécurité, cette approche permet une application sélective de fonctionnalités qui garantissent la sécurité uniquement là où elle est nécessaire. Les outils de sécurité peuvent également être appliqués de manière fragmentaire, par exemple en commençant par des règles de vérification de plage et d'initialisation, puis en adaptant progressivement le code à des exigences plus strictes.

Source: opennet.ru

Ajouter un commentaire