Ceux qui figurent en tête de liste datent de plusieurs décennies, nous montrant ainsi que nous avons encore beaucoup de chemin à parcourir pour créer des logiciels de qualité.
Le projet Common Weakness Enumeration (CWE) a analysé d’importantes quantités de données de bugs provenant de la base de données Common Vulnerabilities and Exposures (CVE) dans le cadre de ses recherches. La base CVE reçoit des milliers de nouveaux bugs chaque année et la CWE les classe pour aider à guider l’analyse et les tests de logiciels.
En 2005, il a commencé à regrouper ces bugs par catégorie, en s’appuyant sur les travaux internes de MITRE (la société qui a créé la liste CVE). L’idée était de publier une liste standard des vulnérabilités de sécurité logicielles courantes, offrant aux développeurs et aux éditeurs d’outils une structure à partir de laquelle évaluer les logiciels en cas de problèmes de sécurité.
Il s’agit du premier top 25 de CWE depuis 2011, et nous espérions une analyse des facteurs déterminants du type Top-Of-Top. Malheureusement, cela n’est pas vraiment possible car CWE a changé d’approche cette fois-ci. Il a réorganisé les CVE en une liste plus large de catégories. Il a également adopté une approche davantage centrée sur les données en exploitant la base NVD (National Data Vulnerability). L’étude de 2011 avait utilisé des enquêtes et des entretiens personnels avec des développeurs, des analystes cybersécurité et des éditeurs.
Pourtant, des résultats sont tout de même intéressants. Les failles au niveau de la mémoire tampon (classées dans la catégorie “Restriction Inappropriée du Fonctionnement dans les Limites d’une Mémoire Tampon” (Improper Restriction of Operations within the Bounds of a Memory Buffer) étaient en tête de liste cette fois-ci. Elle couvre une série de problèmes, y compris les dépassements de mémoire tampon, qui peuvent conduire à l’exécution de code arbitraire, et les lectures out-of-bounds (hors-limites), qui peuvent faire planter un système ou permettre d’accéder à des données sensibles (la lecture hors-limites obtient également sa propre catégorie classée en cinquième position).
Le Cross-site Scripting était en deuxième position sur la liste. Le fait que ce terme, inventé pour la première fois par Microsoft en 2000, continue d’occuper le terrain dans le monde réel montre qu’il reste encore beaucoup à faire pour apprendre aux développeurs comment l’éviter. La liste récente de HackerOne concernant les volumes de signalements et des paiements de primes bug bounty par type de vulnérabilité indiquait que le XSS dominait, et de loin.
En troisième position nous trouvons la validation d’entrée incorrecte. Il s’agit d’un problème courant pour les développeurs qui ne pensent pas à toutes les mauvaises façons de saisir les informations dans un système afin de les manipuler (par exemple, entrer des nombres négatifs dans un panier e-commerce et créditer le compte tout de même).
En quatrième position, on trouve l’exposition de données, au cours de laquelle un programme révèle accidentellement les données sensibles d’un utilisateur. Il peut s’agir de messages privés ou de fichiers de configuration de programme supposés être privés et qui pourraient permettre à des pirates de pénétrer dans le système. Cette catégorie de bugs est arrivée troisième sur la liste Hacker One.
La liste CWE a ses propres faiblesses. Le projet de recherche omet les vulnérabilités trouvées et corrigées dans des services internes en ligne ou personnalisés avant une divulgation publique. Néanmoins, son étendue et son analyse basée sur les données en font une bonne mise à l’épreuve pour les types de bugs qui génèrent le plus de problèmes de sécurité aujourd’hui.
Billet inspiré de No surprises in the top 25 most dangerous software errors, sur Sophos nakedsecurity.