2 pièce(s) jointe(s)
Quel langage de programmation comporte le plus de vulnérabilités en matière de sécurité ?
Quel langage de programmation comporte le plus de vulnérabilités en matière de sécurité ?
Une étude de WhiteSource
On peut affirmer sans aucun doute qu’aucun des langages de programmation qui existe n’est sans vulnérabilité qu’il s’agisse du C/C++, du Java, du Ruby, du PHP ou encore le JavaScript. Et bien, WhiteSource s’est penché sur le sujet et a publié récemment un rapport présentant quelques-uns des langages qu’il juge les plus vulnérables selon des informations recueillies au sein de la communauté open source.
L’un des débats les plus récurrents entre les développeurs et les ingénieurs porte sur le langage de programmation le plus rapide parmi tous, mais la question de savoir lequel d’entre eux offre le plus de sécurité ne se pose pas souvent. Cependant, à la limite de la rapidité, les entreprises recherchent aujourd’hui également plus de sécurité qu’autrefois. Les menaces sur les systèmes informatiques et les applications métiers des entreprises sont grandissantes et même si, les langages de programmation ne cessent d’être régulièrement mise à jour, les pirates et les experts en sécurité parviennent toujours à trouver des failles de sécurité dans leur conception.
Vous avez sûrement votre idée du langage le plus sécuritaire, mais qu’en est-il du moins sécurisé d’entre eux ? Pour cela, WhiteSource, une plateforme de gestion de la sécurité et de la conformité des licences open source fondée en 2011 par Ron Rymon, Azi Cohen et Rami Sass, a mené récemment une étude visant à collecter pour les 7 langages de programmation les plus utilisés, le nombre de vulnérabilités signalées par la communauté open source pour chacun d’entre eux et ainsi, présenter un index de ceux ayant un nombre de vulnérabilités plus élevé.
L'étude s’est appuyée sur une base de données regroupant des informations provenant de sources diverses telles que la base de données nationale sur les vulnérabilités des USA (NVD), les avis de sécurité, GitHub et d’autres projets populaires liés au suivi des problèmes. WhiteSource a souligné le fait que le rapport tient en compte seulement les sept langages les plus populaires utilisés ces dix dernières années dans la communauté open source notamment le C, le Java, le JavaScript, le Python, le Ruby, le PHP et le C++.
Ensuite, WhiteSource a précisé que l’étude a vérifié pour chaque langage de programmation quelles étaient ses CWE les plus courantes. Cela a révélé que les vulnérabilités les plus courantes dans la plupart de ces langages sont le Cross-Site Scripting (XSS), la validation des entrées, les autorisations, les privilèges, les contrôles d'accès, etc. Il faut noter cependant que CWE fait référence à une liste mise au point par la communauté qui recense les faiblesses courantes en matière de sécurité des logiciels. Il sert de langage commun ou de jauge pour les outils de sécurité logicielle et de base pour les efforts d'identification, de réduction et de prévention des failles.
C’est donc sur la base de tout ceci que la plateforme a présenté son index. WhiteSource indique qu’en dix ans, C a montré un nombre de vulnérabilités très important. Il arrive donc en tête de liste des langages les plus vulnérables avec une faiblesse reconnue à 47 % de toutes les vulnérabilités signalées. Pour former le trio des langages présentant le nombre de vulnérabilités le plus élevé, le PHP et le Java suivent respectivement 17 % et 12 %. Le JavaScript vient en quatrième place avec 11 %, le Python et le C++ restent en cinquième place avec 6 % chacun et le Ruby ferme le podium avec un nombre de vulnérabilités open source connu de 5 %. Il est donc le moins vulnérable parmi ces sept langages de l’étude.
Cela dit, un nombre de vulnérabilités élevé pour un langage signifie-t-il que le langage est moins sécurisé que les autres ? WhiteSource semble avoir répondu non. Il explique que plus le volume de code écrit dans un langage est élevé et plus le nombre de vulnérabilités est susceptible d’être élevé pour ce dernier ou cela peut également dépendre d’autres facteurs. « Le nombre élevé de vulnérabilités dans C peut s’expliquer par plusieurs facteurs. Pour commencer, l’utilisation de C remonte à plus longtemps que n’importe lequel des autres langages que nous avons recherchés. Il possède le volume de code écrit le plus élevé et c'est l'un des langages derrière des infrastructures majeures telles que OpenSSL et le noyau Linux. Cette combinaison gagnante de volume et de centralité explique le nombre élevé de vulnérabilités Open Source connues en C », précise WhiteSource à propos du langage C.
Selon l’analyse de WhiteSource, le nombre de vulnérabilités reconnu pour chaque langage de programmation a augmenté très rapidement au cours des dix dernières années avec une augmentation particulière en 2017. Cet état de choses résulterait de la popularité croissante de l’open source qui a permis de découvrir plus de problèmes au sein des logiciels. De plus, énonce le rapport, les outils de sécurité automatisés et les investissements croissants dans les programmes de bug bounty ont largement contribué à faire grandir les bases de données des vulnérabilités des langages.
Source : WhiteSource
Et vous ?
:fleche: Que pensez-vous des résultats de cette analyse ?
:fleche: Selon vous, quel est le langage de programmation le moins sécurisé ? Pourquoi ?
Voir aussi
:fleche: Quel langage de programmation pour le Web est-il plus sécurisé ? Selon une étude, les langages populaires ont presque le même degré de sécurité
:fleche: Internet aurait de sérieux problèmes à cause de langages comme C et C++ favorisant la survenue de failles mais peu de développeurs s'en soucieraient
:fleche: Rust 1.21 est disponible en téléchargement le langage de programmation centré sur la sécurité et la vélocité
Et mes 2 cents en plus pour plomber l'article
Super étude sur rien du tout d'exploitable. Il n'y a rien sur la qualité des langages de programmation parce que l'étude porte sur les défauts des logiciels créés avec les langages et pas les langages eux-même. Qui imagine que le C, périmètre Kernighan & Ritchie, ait la moindre faiblesse ?
Et pourtant c'est là qu'est le langage C et pas dans les librairies et les programmes réalisés avec. Donc ce n'est pas le langage qui est en faiblesse et le titre est menteur.
Ensuite, comment est comparé un langage comme le C, tout "nu", face à un langage compilé avec des extensions nombreuses par défaut comme le PHP ? Ah, oui, il s'agit d'une étude sur le code fait avec ces langages, rien à voir.
Bon, reste à imaginer ce que les chiffres valent dans l'absolu. Peut-être est-ce que certains langages, par les développeurs qui s'en servent, est plus susceptible de provoquer des erreurs ? Facile, comparons le nombre de problèmes signalés avec le nombre de ligne codées / le nombre de codeurs en activité / n'importe quoi lié à l'activité autour du langage. Et bien non, il y a des pourcentages (c'est joli, hein ?) mais rien lié à l'activité autour du langage, juste un ratio entre bugs d'applications développée entre les langages sans aucune considération pour leur popularité. Bref, si Ruby a deux fois plus de bugs que PHP mais qu'il est utilisé vingt fois moins, il apparaîtra plus sûr dans ces stats.
Ok, mes raisonnements ont une faiblesse majeure: l'étude initiale est peut-être bien plus soutenue que l'article qui la résume. Alors allons directement voir à la source ... mais il n'y a pas de liens.
Bref, c'est pas la joie parce que la base de cet article n'est vraiment pas au top.
Encore des stats inutiles...
Si cette étude recense les personnes créant des vulnérabilités dans leurs développements, ça ne rend pas les langages vulnérables...
Voilà une étude qui ne sert à rien du tout, si ce n'est mettre l'accent sur l'inconscience de certains quand ils codent.
On le sait bien que de très nombreuses personnes apprennent les rudiments d'un langage en zappant totalement l'aspect sécurité, copiant/collant de ci de là sur le net des rustines de code peu ou pas comprises. Pas besoin d'étude pour ça.
J'aurais préféré une étude qui pointe du doigt les faiblesses et vulnérabilités des langages, pas celles de leurs utilisateurs. :calim2:
encore une étude juste pour faire le buzz...
il est normale qu'un langage de bas niveau (pas nul, mais qui inclus peu de fonction) comme le C obtient une mauvaise note à ce type d'étude lorsque l'on regarde les produit finaux généré. (Moins de fonction = refaire le monde ; fonction résultante moins testé....)
A l'inverse, si on fessait une étude sur chaque commande de base d'un langage, le C serait grand gagnant ! (peux de fonction = moins de problème !)