CVE-2022-33910
01 Juillet 2022
Dernière mise à jour
01 Juillet 2022
Dernière mise à jour
Je vous propose mon analyse de la CVE-2022-33910, qui est une vulnérabilité de type Cross-Site Scripting (XSS) dans l'application de suivi de bogues MantisBT.
Vendeur : MantisBT (https://www.mantisbt.org/)
Produit : MantisBT (https://www.mantisbt.org/download.php)
Version(s) impactée(s) : < 2.25.5
Type de vulnérabilité : Stored Cross-Site Scripting (XSS) (CWE-79 - Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'))
Les versions <2.25.5 de Mantis Bug Tracker sont vulnérables à une faille de Cross-Site Scripting via l'upload d'un fichier au format SVG en tant que pièce jointe d'un rapport ou d'une note d'anomalie.
Il est possible d'attacher le fichier SVG créé pour l'occasion en déclarant une nouvelle anomalie :
ou également dans une note/commentaire d'une anomalie :
Une fois le fichier malveillant ainsi uploadé, il faudra que la victime visualise le fichier SVG, qui s'ouvrira alors dans un nouvel onglet, provoquant ainsi l'exécution du code malicieux, ou presque :
En effet, un problème de CSP vient empêcher l'exécution du script inline
:
A noter que l'attaque ne peut être réalisée directement à la visualisation de l'anomalie, car le fichier SVG est affiché grâce à une balise <img />
:
Par défaut, tous les types de fichiers peuvent être uploadés :
Les fichiers ainsi présents en tant que pièces jointes sont soit, consultés directement dans le navigateur (pour les formats jpeg
, gif
, tiff
, bmp
, svg+xml
, png
et pdf
), soit téléchargés :
A priori donc, rien n'interdit d'uploader un fichier SVG malveillant et aucun traitement d'assainissement ne semble être effectué :
En temps normal, la visualisation du fichier SVG devrait provoquer l'exécution du code Javascript mais c'est sans compter sur la configuration par défaut de MantisBT. La configuration propose un ensemble de directives CSP, dont celle concernant l'exécution de Javascript, ne permettant l'exécution de fichiers Javascript provenant seulement du même domaine (self
) :
Cette configuration est appliquée par la méthode http_security_headers()
présente dans le fichier core/http_api.php
:
Pour exploiter cette vulnérabilité il faudra donc ici espérer un relâchement de la configuration de MantisBT de la part de l'administrateur en charge du site, ou alors, identifier un moyen d'uploader un fichier javascript sur le serveur puis de l'exécuter via le fichier SVG.
La vulnérabilité a été corrigée dans la version 2.25.5 de MantisBT. Tout d'abord, la configuration par défaut évolue et interdit maintenant l'upload de fichier au format SVG :
Dans un second temps, lorsqu'un utilisateur va ouvrir une pièce jointe de type SVG (dans le cas ou l'administrateur aura modifié la configuration par défaut), le fichier ne sera plus visualisé dans le navigateur mais un téléchargement forcé sera effectué :
Cette dernière modification permet également de corriger une vulnérabilité de type Injection CSS au sein d'un fichier SVG.