Étapes de la reproduction
À partir de la version 1.3.0 d'Angular, il est possible de mener une attaque par déni de service par expression régulière (ReDoS). Parce que le package utilise une expression régulière pour diviser la valeur de la directive ng-srcset, si un acteur malveillant compose soigneusement une expression régulière non sécurisée, cela peut provoquer un retour en arrière catastrophique et monopoliser les ressources du système. Une preuve de concept démontrant cet exploit est disponible sur StackBlitz.
Aborder la question
Le correctif pour cet exploit est disponible dans les versions 1.9.1 et 1.5.19 d'AngularJS XLTS/NES ; les propriétaires de sites doivent mettre à jour vers ces versions.
Apprentissage et prévention
Dans les attaques ReDoS, le système cible tente de résoudre une correspondance d'expressions régulières qui prendra beaucoup de temps (privant ainsi de service les utilisateurs légitimes du système). Il s'agit d'une forme d'attaque par déni de service (DDoS).
Dans l'attaque, le moteur d'expressions régulières exécute une série d'étapes pour tenter de trouver une correspondance. Certaines de ces étapes peuvent être accomplies rapidement, tandis que d'autres, en particulier celles qui échouent, prennent beaucoup plus de temps. Dans ce cas, lorsque le navigateur tente de résoudre une expression régulière soigneusement élaborée par l'attaquant, il peut passer un temps considérable à renvoyer un résultat, car il revient en arrière pour essayer d'autres correspondances.
Conclusion
Le correctif décrit dans cette vulnérabilité est présent dans la version 1.9.1 et est également disponible immédiatement pour les clients de HeroDevs AngularJS Never-Ending Support qui sont encore sur Angular 1.5. Si vous souhaitez bénéficier de la tranquillité d'esprit que procure un abonnement au support sans fin de HeroDevs, contactez notre équipe commerciale dès aujourd'hui.
Ressources
Entrée NIST 2024-21490
Soyez alerté chaque fois qu'une nouvelle vulnérabilité est corrigée dans les logiciels open source que nous soutenons.