
Divulgation détaillée d'une vulnérabilité XSS stockée dans VaahCMS via une gestion non sécurisée du téléchargement de fichiers SVG, incluant le flux d'exploitation, les points de terminaison affectés et les stratégies d'atténuation pour les chercheurs en sécurité.
Une vulnérabilité de Cross-Site Scripting (XSS) stocké a été identifiée dans vaahcms, spécifiquement dans l'interaction entre la logique de téléchargement de fichiers dans MediaController.php et la méthode storeAvatar() dans UserBase.php, permettant à un utilisateur enregistré de bas niveau de télécharger un fichier SVG malveillant contenant du JavaScript embarqué. La vulnérabilité provient du stockage du fichier effectué avant la validation du contenu ou du type MIME, laissant les fichiers malveillants sur un chemin prévisible et accessible publiquement sur le serveur.
La vulnérabilité provient de la méthode upload() dans MediaController.php
$path = $request->file($input_file_name) ->storeAs($request->folder_path, $upload_file_name); permettant à un attaquant de spécifier le chemin du répertoire, lui permettant ainsi de placer des fichiers malveillants (comme un SVG chargé de XSS) directement dans le répertoire public/, rendant la charge utile immédiatement accessible via un navigateur web.
Une exploitation réussie permet à un attaquant de contrôler le contenu et le nom de fichier d'un fichier écrit dans un chemin de stockage public (/storage/media/YYYY/MM/<controlled-filename>.svg). Si ce SVG accessible publiquement est ensuite rendu par le navigateur d'un utilisateur via une balise ``, <object> ou un lien modifié, le script embarqué s'exécutera, entraînant un XSS persistant.
POST /backend/vaah/manage/media/upload
/storage/media/YYYY/MM/<controlled-filename>.svg.{"success": false, "errors": ["Unable to decode input"]}).POC.svg).xss.svg)./storage/media/2025/08/xss.svg.
enshrined/svg-sanitize pour PHP)Chercheur : Thaw Phone Nyo
Date de divulgation : 2025/10/8