Si on parle beaucoup de la sécurité de la supply chain logicielle, la question du choix du langage de programmation reste plus discrète. Et pourtant, ce point est important selon la NSA qui a publié des recommandations sur les langages les plus sûrs notamment sur la mémoire. En résumé, le C et C++ sont sur la sellette et C#, Rust, Go, Java, Ruby ou Swift sont à privilégier. « La NSA recommande aux organisations d'utiliser des langages sûrs pour la mémoire lorsque cela est possible et de renforcer la protection par des moyens de défense tels que les options du compilateur, des outils et les configurations du système d'exploitation », souligne l’agence de renseignement.
La principale préoccupation de la NSA est que des pirates puissent se servir d failles dans un code qui gère mal la mémoire, ce qui se produit plus fréquemment dans les langages offrant plus d’options et de flexibilité au développeur. L’agence donne l’exemple d’un cybercriminel qui s’introduit dans un système par le biais d’un dépassement de mémoire tampon ou en exploitant des faiblesses logicielles en matière d’allocation mémoire. Dans le document, la NSA précise que les pirates, « peuvent exploiter ces vulnérabilités pour exécuter du code à distance ou obtenir d'autres effets néfastes, ce qui peut souvent compromettre un dispositif et constituer la première étape d'une intrusion à grande échelle dans un réseau ».
Une dette technique et une courbe d’apprentissage plus importantes
Clouer au pilori C et C ++ sur les questions de sécurité est une opinion qui prend de l’ampleur. Ainsi, Mark Russinovich, directeur technique de Microsoft Azure, a expliqué en septembre qu'il était temps d'arrêter tout nouveau projet dans ces deux langages éprouvés. Le responsable expliquait alors qu’il s’orientait vers des langages comme Rust.
Reste deux écueils, la gestion de la dette technique. La quantité de code écrit en C et C++ au fil des ans est importante. Par ailleurs, le passage à des langages comme Rust et Go nécessite une courbe d’apprentissage plus importante. Deux défis qui prendront du temps, mais les recommandations de la NSA devraient accélérer cette migration.
Dire que Go a une courbe d'apprentissage plus importante (comprenez, plus longue) que C et C++ c'est un peu du n'importe quoi. Il est bien plus simple. Rust, par contre, est très intéressant niveau sécurité mais effectivement plus difficile.
Signaler un abus