CVE-2024-8372

Usurpation de contenu
Affectations
AngularJS
>=1.3.0-rc.4
en
AngularJS
Aucun élément n'a été trouvé.
Icône de cercle d'exclamation
Patch disponible
Cette vulnérabilité a été corrigée dans la version Never-Ending Support (NES) proposée par HeroDevs.

Aperçu

AngularJS est un framework JavaScript pour le développement d'applications web dynamiques. Il vous permet d'utiliser HTML comme langage de gabarit et vous permet d'étendre la syntaxe de HTML pour exprimer les composants de votre application de manière claire et succincte.

Une vulnérabilité(CVE-2024-8372) a été identifiée dans AngularJS, qui permet aux attaquants de contourner les restrictions de source d'image normalement appliquées à la valeur de l'attribut HTML [srcset]. Ce contournement peut en outre conduire à une forme d'usurpation de contenu (Content Spoofing).

Selon l'OWASP: L'usurpation de contenu, également appelée injection de contenu, "injection de texte arbitraire" ou défiguration virtuelle, est une attaque visant un utilisateur et rendue possible par une vulnérabilité d'injection dans une application web. Lorsqu'une application ne traite pas correctement les données fournies par l'utilisateur, un pirate peut fournir un contenu à une application web, généralement par le biais d'un paramètre, qui est renvoyé à l'utilisateur. L'utilisateur se retrouve alors avec une page modifiée dans le contexte du domaine de confiance.

Ce problème affecte les versions 1.3.0-rc.4 et supérieures d'AngularJS.

Détails

Informations sur le module

Informations sur les vulnérabilités

Cette vulnérabilité de gravité moyenne a été découverte dans le paquet principal angular d'AngularJS dans les versions supérieures ou égales à 1.3.0-rc.4.

La logique utilisée dans les directives ngSrcset, ngAttrSrcset et ngPropSrcset pour assainir les URLs des sources d'images présente une vulnérabilité qui permet de contourner les restrictions établies par certains modèles courants, comme le fait de n'autoriser que les images provenant d'un domaine spécifique. Avec une entrée spécialement conçue, la vérification peut être contournée et des images provenant d'un domaine arbitraire peuvent être affichées, ce qui peut également conduire à une forme d'usurpation de contenu.

Note :
Ce problème affecte également la définition de valeurs interpolées via l'attribut HTML srcset, ce qui n'est de toute façon pas recommandé dans AngularJS.

<img srcset="{{ 'some-malicious-input' }}" />

Étapes de la reproduction :

  • Créez une application AngularJS et configurez $compileProvider pour n'autoriser que les images provenant d'un domaine spécifique. Par exemple :
angular
    .module('app', [])
    .config(['$compileProvider', $compileProvider => {
      $compileProvider.imgSrcSanitizationTrustedUrlList(
          // Only allow images from `angularjs.org`.
          /^https:\/\/angularjs\.org\//);
    }]);

  • Use a specially-crafted value in the ngSrcset directive on an <img> element to bypass the domain restriction and show an image from a disallowed domain. For example:
<img ng-srcset="https://angularjs.org/favicon.ico xyz,https://angular.dev/favicon.ico" />

  • Vous pouvez même afficher une image SVG arbitraire en utilisant le format data:image/svg+xml. Par exemple, vous pouvez afficher une image SVG arbitraire au format data:image/svg+xml : 
<img ng-srcset="https://angularjs.org/favicon.ico xyz,data:image/svg+xml;base64,..." />

Preuve de concept

Une reproduction complète avec un code similaire à celui décrit ci-dessus est disponible ici :
ngSrcsetsanitization bypass vulnerability POC

Atténuation

Le projet AngularJS est en fin de vie et ne recevra aucune mise à jour pour résoudre ce problème. Pour plus d'informations, voir ici.

Les utilisateurs des composants concernés doivent appliquer l'une des mesures d'atténuation suivantes :

  • Migrer les applications concernées hors d'AngularJS.
  • Faites appel à un partenaire commercial comme HeroDevs pour l'assistance à la sécurité après la fin de vie.

Détails de la vulnérabilité
ID
CVE-2024-8372
PROJET concerné
AngularJS
Versions concernées
>=1.3.0-rc.4
Date de publication
9 septembre 2024
≈ Date fixe
21 mai 2024
Sévérité
Moyen
Catégorie
Usurpation de contenu