Skip to main content

Comparaison côte à côte des vulnérabilités de sécurité d’Angular et React en 2019

Écrit par
JavaScript Report feature

30 octobre 2019

0 minutes de lecture

Bienvenue dans le rapport 2019 de Snyk sur l’état de la sécurité des frameworks JavaScript.

Dans cette section, nous examinons l’impact des vulnérabilités de sécurité en étudiant leur gravité, leurs scores CVSS et leur évolution au fil des ans pour Angular et React. Nous nous penchons également sur le délai nécessaire pour corriger les vulnérabilités de chaque framework et publier les correctifs, et sur l’évolution de ces délais au fil des ans.

Téléchargez le rapport ici !

Angular et React : comparaison de la gravité des vulnérabilités

Pour mieux comprendre le risque global posé par les problèmes de sécurité détectés dans les projets frontend basés sur React et Angular, nous pouvons examiner leurs scores de gravité.

Qu’est-ce que le CVSS ?

Pour cela, commençons par revoir brièvement le système de notation (CVSS). Tout comme les bogues généraux dans le code source sont associés à un niveau de gravité, par exemple élevé ou moyen, les bogues de sécurité, que nous appelons vulnérabilités de sécurité, sont eux aussi associés à un niveau de gravité qui contribue à déterminer le risque potentiel pour une organisation.

Les vulnérabilités de sécurité se voient attribuer un niveau de gravité selon le Common Vulnerability Scoring System (CVSS), utilisé comme norme de facto par l’organisation FIRST et largement employé pour évaluer les vulnérabilités et expositions courantes, souvent désignées par l’acronyme CVE.

Pour faciliter la comparaison des vulnérabilités, le CVSS répartit les scores numériques en plages et associe chacune à un niveau de gravité.

Une explication approfondie du CVSS et de ses limites est disponible à l’adresse https://snyk.io/blog/scoring-security-vulnerabilities-101-introducing-cvss-for-cve/

Dans ce rapport, nous utilisons la notation CVSS v2, présentée dans le tableau suivant :

Gravité

Score

0.1 - 3.9

faible

4.0 - 6.9

moyenne

7.0 - 10.00

élevée

Angular et React : résultats CVSS

Bien que très peu de vulnérabilités aient été découvertes dans les packages de base de React, elles relèvent toutes du cross-site scripting et ont été divulguées régulièrement, tous les deux ans environ. Leurs scores CVSS se situent entre 6,5 et 7,1 — autrement dit, il s’agit de vulnérabilités de gravité moyenne à élevée.

Le graphique suivant présente l’évolution de la gravité des vulnérabilités du projet React Core :

Chronologie des vulnérabilités du projet React Core : XSS avec un score de 7,1 en décembre 2013, puis divulgations de vulnérabilités XSS avec un score de 6,5 en mars 2015 et en août 2018.

En examinant les vulnérabilités de sécurité d’Angular v1.x, nous constatons qu’Angular v1.5 en compte le plus, avec sept vulnérabilités au total : trois de gravité élevée et quatre de gravité moyenne. Heureusement, les vulnérabilités diminuent à mesure que la version évolue, tant en gravité qu’en nombre. En 2019, aucune nouvelle vulnérabilité n’avait encore été divulguée pour les versions d’Angular !

Le graphique suivant présente le nombre de vulnérabilités d’Angular v1.x par année et par niveau de gravité :

Graphique à barres montrant les vulnérabilités d’Angular V1.x par année et par niveau de gravité, de 2013 à 2018 ; les vulnérabilités de gravité moyenne atteignent un pic de quatre en 2015.

La diversité des types de vulnérabilités divulguées pour l’ensemble des versions d’Angular 1.x est peu préoccupante ; les risques de sécurité se manifestent plutôt sous d’autres formes. Le plus notable est la gravité du type de vulnérabilité le plus courant, divulgué à plusieurs reprises dans différentes versions. En effet, les vulnérabilités de type cross-site scripting (XSS) représentent un risque majeur pour la sécurité du frontend, et Angular ne fait pas exception. Les données que nous avons recueillies le confirment : les différentes versions d’Angular 1.x comptent au total dix vulnérabilités XSS.

Diagramme en barres présentant les vulnérabilités d’Angular 1.x par type, dominées par les scripts intersites (XSS), au nombre de 10, et deux catégories comptant chacune 2 vulnérabilités.

Délai de correction et de publication

Pour évaluer le niveau de sécurité des projets open source, il est important de tenir compte de la rapidité avec laquelle les responsables de la maintenance et les contributeurs corrigent les vulnérabilités de sécurité et publient les versions correspondantes. Nous avons étudié ces indicateurs pour les projets Angular Core et React Core, en retraçant l’historique des vulnérabilités connues qui ont déjà été prises en charge afin de représenter ces données.

Pour commencer, le graphique consacré à Angular v1.x est classé par ordre chronologique, de juin 2013 — date de la première vulnérabilité d’AngularJS — à juin 2018. Il indique le nombre de jours écoulés entre le signalement public d’une vulnérabilité au projet et sa correction, puis jusqu’à la publication d’une version intégrant le correctif, que les utilisateurs en aval peuvent installer. Un délai de correction faible signifie que l’équipe de développement a pu réagir rapidement à un signalement de sécurité ; un délai de publication faible indique que l’équipe a rapidement publié un correctif officiel que les utilisateurs peuvent installer.

Graphique linéaire montrant le délai moyen de publication et de correction par année, de 2013 à 2018, en jours.

Comme nous pouvons le constater, la première vulnérabilité signalée pour Angular a été corrigée dans le dépôt de code en une seule journée, mais il a fallu 74 jours pour publier un correctif officiel que les utilisateurs pouvaient installer.

Pour les versions d’Angular v1.x, nous avons observé un délai moyen de correction des vulnérabilités de sécurité de 7,47 jours, et un délai moyen de publication d’une version intégrant un correctif de sécurité de 20,5 jours.

Une exception aux données présentées à la page précédente est une vulnérabilité d’attaque par rappel JSONP, qui a nécessité 570 jours pour être corrigée, puis 64 jours entre l’intégration du correctif au dépôt de code source et sa publication officielle.

React compte nettement moins de vulnérabilités : seulement trois affectent le projet principal. Deux d’entre elles ont été signalées et traitées en interne par l’équipe React ; le délai de correction est donc de 0 jour, et il n’a fallu qu’un jour pour publier une version officielle. La troisième est une vulnérabilité de type cross-site scripting, qui remonte à React v0.4 et v0.5. Elle a nécessité un délai de correction important (176 jours), suivi d’un délai de 27 jours avant la publication d’un correctif de sécurité.


Nous vous recommandons vivement de télécharger la version complète du rapport au format numérique. Nous avons également publié les sections générales suivantes sous forme d’articles de blog :