Skip to main content

Angular vs React : duel de sécurité 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.

Téléchargez le rapport ici.

Commençons par examiner les différentes vulnérabilités de sécurité découvertes dans les projets principaux Angular et React. Nous passons ensuite en revue le niveau de gravité de chaque vulnérabilité et examinons les différences entre les deux. Enfin, pour les deux projets, nous étudions le délai entre la divulgation d’une vulnérabilité et sa correction, ainsi que le délai jusqu’à la publication d’une mise à niveau (délai de correction et délai de publication) pour chaque cas.

Projet Angular principal : aperçu des vulnérabilités de sécurité

Pour étudier les projets Angular principaux, nous nous sommes intéressés plus particulièrement aux vulnérabilités de sécurité de la branche v1.x, également appelée AngularJS. AngularJS est la version obsolète d’Angular la plus utilisée. Elle a été officiellement prise en charge et maintenue jusqu’au 30 juin 2021 — AngularJS 1.7 LTS.

Nous avons représenté graphiquement le nombre mensuel de téléchargements des packages npm angular et @angular/core, qui correspondent respectivement à Angular v1.x et à Angular v2.0 et versions ultérieures. D’après les données examinées, Angular v1.x reste un acteur important de la part de marché d’Angular, représentant 28 % de tous les téléchargements d’Angular, toutes versions confondues. Bien qu’Angular ait connu depuis la version 1.x de nombreuses versions majeures, les utilisateurs continuent, dans les faits, à télécharger chaque mois des millions de fois cette ancienne version.

Graphique linéaire montrant que les téléchargements d’Angular v1.x se situent autour de 1,5 à 2 millions et que ceux des versions plus récentes passent de 3 à 5,3 millions, de juin 2018 à juillet 2019.

Le graphique ci-dessus montre à quel point les versions Angular 1.x sont populaires par rapport aux autres options Angular : les versions Angular 2.0 et ultérieures sont représentées ensemble par la ligne jaune. On constate sur le graphique qu’Angular v1.x à lui seul représente environ un tiers (28 % exactement) de tous les téléchargements d’Angular (versions récentes et anciennes) à ce jour.

Nous pouvons supposer que l’utilisation persistante des versions Angular 1.x s’explique par la présence d’applications existantes, toujours maintenues par des entreprises de taille moyenne et de grande taille. Pour ces organisations, les évolutions technologiques et les parcours de migration sont très coûteux, mais les applications doivent tout de même être maintenues et mises en production régulièrement.

Cette hypothèse souligne encore davantage la nécessité critique de suivre les vulnérabilités de sécurité dans les composants open source, comme le framework Angular, y compris dans les anciennes versions. Cela permet de corriger rapidement les vulnérabilités détectées dans les applications déployées en production et d’éviter qu’elles ne s’aggravent et ne détériorent la posture de sécurité d’une entreprise au fil du temps.

Compte tenu de ces problèmes, nous avons relevé au total 19 vulnérabilités dans six branches de versions différentes d’Angular v1.x, réparties entre les versions mineures comme indiqué dans le graphique ci-dessous.

Diagramme à barres des vulnérabilités d’Angular 1.x par version : 1.1 en compte 1, 1.2 en compte 4, 1.3 en compte 3, 1.4 en compte 1, 1.5 en compte 7 et 1.6 en compte 3.

Angular et React : des bases de données de vulnérabilités fiables sont essentielles pour détecter les problèmes de sécurité

Bien que Snyk ait suivi vingt-trois vulnérabilités de sécurité d’Angular v1.x, aucune ne possède de référence CVE, car elles n’ont pas été divulguées dans le cadre d’un programme CVE officiellement reconnu. Il ne s’agit pas nécessairement d’une lacune d’Angular, mais plutôt d’une pratique courante : les CVE ont été conçues pour les éditeurs commerciaux, et leur attribution exige beaucoup de temps et d’expertise — ce qui n’est pas toujours adapté aux projets open source.

Sans CVE, seules des personnes spécialisées peuvent suivre les vulnérabilités, en surveillant l’activité open source à l’aide de méthodes personnalisées. Peu de solutions proposent cette possibilité.

Des outils comme npm audit assurent un certain suivi, mais passent eux aussi à côté de nombreuses vulnérabilités sans CVE. Par exemple, npm audit, intégré par défaut au client npm, ne détecte malheureusement aucune des vingt-trois vulnérabilités d’Angular v1.x ni aucune des vulnérabilités de React. Se fier à npm audit peut donc donner aux développeurs un faux sentiment de sécurité.

Terminal affichant l’installation de angular@1.2.32 avec npm, l’audit d’un package et la détection de zéro vulnérabilité.

Tout cela contraste avec la base de données des vulnérabilités de Snyk pour Angular 1.x, qui, par exemple, signale onze vulnérabilités de sécurité pour Angular v1.2.32 :

Version

Publié le

Licence

Vulnérabilités directes

angular 1.6.0-rc.1


(version préliminaire)


21 nov. 2016

MIT

3 modérées


angular 1.6.0-rc.0


(version préliminaire)


27 oct. 2016


MIT


3 modérées


11 oct. 2016


MIT


6 modérées


11 oct. 2016


MIT

3 élevées
7 modérées
1 faible

Examinons les résultats de l’analyse Snyk suivante pour un projet Angular :

Terminal affichant un rapport npm audit pour Angular, qui met en évidence une vulnérabilité de script intersites de gravité élevée et des conseils pour y remédier.

Ces vulnérabilités sont signalées dans l’interface utilisateur de Snyk ou avec l’outil Snyk CLI. De plus, l’interface utilisateur de Snyk crée automatiquement des PR de correction pour mettre à niveau les packages vulnérables, grâce à des intégrations avec des systèmes comme GitHub.

La situation est similaire pour React : npm audit ne détecte aucune des trois vulnérabilités qui lui sont liées. Parmi les trois vulnérabilités connues du public (deux affectant la bibliothèque principale react et une affectant la bibliothèque principale react-dom), seule cette dernière possède un identifiant CVE suivi dans la National Vulnerability Database (https://nvd.nist.gov).

Sortie du terminal montrant l’installation de packages React par npm, l’audit de 29 packages et la détection de 0 vulnérabilité

Projet React principal : aperçu

Pour ce rapport, nous avons considéré les bibliothèques react, react-dom et prop-types comme les modules « principaux » de React, car elles constituent souvent ensemble le socle des applications web développées avec React.

Pour ces modules principaux, nous avons relevé trois vulnérabilités au total : deux dans react et une dans react-dom.

Les trois sont des vulnérabilités de type cross-site scripting (XSS). Les deux vulnérabilités XSS du package npm React sont assez anciennes : elles concernent les versions 0.5.x datant de 2013 ainsi que les versions antérieures à 0.14, divulguées en 2015.

En revanche, la vulnérabilité XSS de la branche de versions v16.x de react-dom est assez récente : elle a été divulguée il y a un peu plus d’un an, en août 2018. Cette vulnérabilité ne se produit toutefois que si d’autres conditions sont réunies, par exemple lorsque la bibliothèque react-dom est utilisée dans un contexte de rendu côté serveur. Il est néanmoins toujours recommandé d’appliquer rapidement les correctifs de sécurité et de mettre à niveau vos composants open source afin d’éviter tout risque inutile.

À la une : Preact, une alternative à React

Outre ces trois vulnérabilités du projet React principal, nous avons également suivi une vulnérabilité de sécurité liée à la désérialisation de données non fiables dans Preact, de gravité modérée. De nombreux développeurs préférant Preact à React pour sa légèreté et sa rapidité, nous avons jugé utile de l’examiner de plus près. Cette vulnérabilité Preact de gravité modérée affecte les versions préliminaires de la branche 10.0.0 publiées en mars et avril 2019.


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 :

Lire la suite

blog feature ai violet
Blog

VulnBump : les agents IA peuvent-ils corriger les dépendances vulnérables sans casser le build ?

VulnBump évalue des agents IA sur 307 mises à niveau de dépendances réelles. Une correction n’est comptabilisée que si la vulnérabilité disparaît et que la compilation et les tests restent au vert.

blog feature snyk container custom base recommendations
Blog

Découvrez Evo Agentic AppSec : une sécurité au rythme du développement de l’IA

Le développement piloté par l’IA dépasse les workflows de sécurité traditionnels. L’AppSec agentique de Snyk s’appuie sur des agents de sécurité pour détecter, corriger et vérifier les vulnérabilités en continu, tandis que les équipes définissent les exigences.

Blog

Les modèles de pointe ont trouvé les vulnérabilités. Seul l’attaquant a trouvé les chaînes d’exploitation.

L’analyse statique a détecté les failles, mais seuls des tests d’attaque en conditions réelles ont prouvé comment elles pouvaient être enchaînées pour provoquer des compromissions. Comparaison d’Evo COS, de Claude Security et de Claude Code Security.