CVE-2025-63307 – Cross-site Scripting (XSS) stocké et authentifié dans laravel-file-manager v3.3.1
🧭 Vue d’ensemble
Une vulnérabilité de Cross-site Scripting (XSS) stocké et authentifié dans laravel-file-manager v3.3.1 et versions antérieures permet à des attaquants ayant accès à l’interface du gestionnaire de fichiers d’injecter et de persister du code JavaScript arbitraire dans des fichiers téléversés ou créés.
En téléversant un fichier .html ou .svg spécialement conçu contenant du code JavaScript malveillant, ou en créant et en modifiant directement un tel fichier dans le gestionnaire de fichiers, les attaquants peuvent obtenir un XSS stocké qui s’exécute lorsque tout autre utilisateur authentifié ou administrateur consulte le fichier via l’interface web.
🧱 Composant concerné
- Projet :
laravel-file-manager
- Composant : Fonctionnalités de téléversement, de création et de rendu de fichiers (par ex. FileManagerController.php)
- Version concernée : v3.3.1 et versions antérieures
🎯 Vecteurs d’attaque
- S’authentifier avec un compte disposant des permissions de téléverser, créer ou renommer des fichiers via l’interface du gestionnaire de fichiers.
- Téléverser ou créer un fichier avec une extension .svg ou .html contenant du JavaScript malveillant.
- L’application stocke ce fichier sans valider son contenu ni assainir les scripts intégrés.
- Lorsqu’un autre utilisateur (comme un administrateur ou un mainteneur de dépôt) consulte ou prévisualise le fichier dans son navigateur, le JavaScript malveillant s’exécute dans le contexte du domaine de l’application.
- Le script peut ensuite effectuer des actions telles que le détournement de session, des attaques CSRF ou le vol de données sensibles depuis le navigateur de la victime.
💥 Impact
- XSS stocké : exécution persistante de JavaScript dans l’origine de l’application.
- Détournement de session et prise de contrôle de compte : les attaquants peuvent voler les cookies ou effectuer des actions en tant que victime.
- Hameçonnage / UI Redressing : les scripts injectés peuvent usurper des éléments d’interface ou rediriger les utilisateurs vers des sites malveillants.
- Exposition de données sensibles : accès aux informations de l’application accessibles dans la session de la victime.
CVSS v3
Score de base : 8,1
Vecteur : CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Sévérité : Élevée
- Mettre en œuvre une validation et un filtrage stricts côté serveur du type de contenu des fichiers téléversés.
- Interdire ou assainir les téléversements avec les extensions .html, .svg ou tout autre format capable de contenir du contenu actif.
- Servir les fichiers téléversés par les utilisateurs avec l’en-tête Content-Disposition: attachment ou depuis un domaine/sous-domaine distinct non exécutable.
- Appliquer un encodage de sortie et un assainissement avant de rendre un contenu contrôlé par l’utilisateur dans le navigateur.
🙏 Crédits
Découvert et signalé par : Chayawat Jeamprasertboon, Thanakorn Boontem, Sahapon Kanajanothai et Theethat Thamwasin