6 janvier 2021

[CVE-2020-29041] Vulnérabilité de divulgation de code source identifiée au sein de l’application Web-Sesame de TIL TECHNOLOGIES

Introduction

Quelques mois auparavant, BSSI a effectué un test d’intrusion interne chez l’un de ses clients. Dans ce périmètre figurait une application web attachée à un équipement appelé MICRO-SESAME dont l’éditeur est TIL TECHNOLOGIES (société française).

Cet équipement permet la supervision unifiée de toutes les informations et commandes électroniques du bâtiment. Plus précisément, il est composé d’un logiciel (application web notamment) et d’un matériel (avec plusieurs modules spécifiques) connecté à des lecteurs de contrôle d’accès, détecteurs d’intrusion, barrières, etc.

Durant l’audit de sécurité, les auditeurs de BSSI étaient confrontés à une ancienne version non à jour (v2015.3.x) de MICRO-SESAME. Néanmoins ils ont pu identifier une vulnérabilité de type DOM-XSS[1] sur le formulaire d’authentification (en préauthentification, par conséquent). Malheureusement, l’éditeur ne met pas à disposition publiquement les notes de mise à jour de sécurité, c’est pourquoi les auditeurs ont contacté le support afin de voir s’ils été possible de leur fournir une version mise à jour de ce produit (pour vérifier l’absence de la vulnérabilité identifiée). L’éditeur a été très réactif et nous a fourni une instance de démonstration complètement mise à jour (iso-production) pour vérifier cela.

Peu de temps après, il est apparu que la vulnérabilité DOM-XSS n’était plus présente. En effet, entre 2015 et 2020, l’éditeur a migré vers des technologies plus récentes (React & NodeJS).

Cet article décrit la nouvelle vulnérabilité identifiée par l’équipe d’audit de BSSI sur la dernière version stable de l’application (2020.1.1.3375).

La mire d’authentification de l’application Web-Sesame ressemble à ceci :

Mire d’authentification de l’application Web-Sesame

Lors de l’analyse du flux HTTP, il est apparu que l’application utilise React et NodeJS :

Fichier .map accessible et montrant la technologie utilisée (React/NodeJS)

Néanmoins, l’application web a été packagée avec un outil permettant de compresser et d’organiser / classer correctement tous les fichiers (bundles et sources générés par le webpack). Mais les équipes de développement ont laissé les « sourcemaps » (cartographie de sources) JavaScript dans la configuration Webpack de production. Cela facilite grandement la compréhension de l’application par les attaquants (avec peu de revue du code).

De plus, la cartographie de sources (source maps) contient les sources utilisées pour générer ce bundle (avec les paramètres de configuration ou les clés API par exemple dans certains cas). Il peut également contenir les commentaires des développeurs.

Avec le fichier .map (illustré ci-dessus), l’attaquant est désormais en mesure de télécharger automatiquement tous les fichiers (code source) depuis le serveur grâce aux chemins révélés dedans.

La capture ci-dessous illustre le fait que l’attaquant est en mesure de récupérer tout le code source de l’application et de lire les commentaires des développeurs :

Divulgation du contenu du fichier de configuration config.ts

Pour davantage illustrer la vulnérabilité, voici les différents points terminaux (« endpoints ») accessibles depuis l’application web une fois l’utilisateur authentifié (note : pour télécharger le code source, il n’est pas nécessaire qu’un attaquant soit authentifié) :

Divulgation du fichier Routes.tsx (comportant les différents endpoints)

Conclusion

Lors de l’identification de la vulnérabilité, l’équipe d’audit de BSSI a contacté et signalé la vulnérabilité à l’équipe de TIL TECHNOLOGIES (responsable du produit). Un correctif est disponible (la version 2020.1.5.5462 corrige la vulnérabilité identifiée).

Cette vulnérabilité est désormais identifiée comme CVE-2020-29041.

Chronologie

23/09/2020 – Découverte de la vulnérabilité initiale (DOM-XSS)
06/10/2020 – Contact établi avec l’équipe support de TIL TECHNOLOGIES
13/10/2020 – Relance au support
20/10/2020 – Contact établi avec le directeur technique de TIL TECHNOLOGIES
04/11/2020 – Appel avec le directeur technique
17/11/2020 – Mise à disposition de l’instance de démonstration (iso-production)
19/11/2020 – Constat de l’absence de la DOM-XSS et découverte de la nouvelle vulnérabilité décrite ci-dessus
20/11/2020 – Rapport et recommandation transmis
23/11/2020 – Correction de la vulnérabilité (version : 2020.1.5.5462)
06/01/2021 – Divulgation de la vulnérabilité (+90j après notification à TIL TECHNOLOGIES)

[1] DOM-XSS : Les vulnérabilités XSS basées sur le DOM surviennent généralement lorsque JavaScript prend des données d’une source manipulable par un attaquant, telle que l’URL, et les transmet à un récepteur prenant en charge l’exécution de code dynamique (exemple : eval () ou innerHTML). Cela permet aux attaquants d’exécuter du code JavaScript malveillant, ce qui leur permet généralement de dérober la session des victimes (source: https://portswigger.net/web-security/cross-site-scripting/dom-based).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *