CVE-2025-55854 - Vulnérabilité de Cross-Site Scripting (XSS) stocké
Présentation de la vulnérabilité
Identifiant CVE : CVE-2025-55854
Type de vulnérabilité : Cross-Site Scripting (XSS) stocké
Sévérité : Élevée
Composant concerné : Champ Bio du profil utilisateur
Application concernée : FreelanceHub (https://github.com/nooncarlett/FreelanceHub)
Description
Une vulnérabilité de Cross-Site Scripting (XSS) stocké a été découverte dans la fonctionnalité de profil utilisateur de l'application FreelanceHub. La vulnérabilité existe en raison d'une désinfection insuffisante des entrées dans le champ Bio, permettant aux attaquants d'injecter du code JavaScript malveillant qui s'exécute lorsque d'autres utilisateurs consultent la page de profil concernée.
Cette vulnérabilité permet à un attaquant de :
- Exécuter du JavaScript arbitraire dans le contexte des navigateurs d'autres utilisateurs
- Voler des jetons de session et des cookies
- Effectuer des actions au nom d'utilisateurs authentifiés
- Rediriger les utilisateurs vers des sites web malveillants
- Défigurer l'interface de l'application
Versions concernées
- FreelanceHub (toutes les versions antérieures au correctif)
- Testé sur : déploiement localhost exécuté sur le port 8080
Détails techniques
Cause racine
L'application ne désinfecte pas correctement les entrées utilisateur dans le champ Bio avant de les stocker dans la base de données et de les afficher sur la page de profil. Le HTML est rendu directement sans échapper les caractères spéciaux ni supprimer les balises et gestionnaires d'événements potentiellement dangereux.
Vecteur d'attaque
- Type d'attaque : XSS stocké
- Vecteur d'entrée : Champ Bio du profil utilisateur
- Contexte d'exécution : Tout utilisateur consultant le profil de l'attaquant
- Authentification requise : Oui (l'attaquant doit disposer d'un compte valide)
Preuve de concept
Prérequis
- Instance en cours d'exécution de l'application FreelanceHub
- Navigateur web (Chrome, Firefox, Edge, etc.)
- Accès pour créer un compte utilisateur
Reproduction étape par étape
Étape 1 : Créer un nouveau compte
- Accédez à
http://localhost:8080/auth
- Inscrivez-vous pour un nouveau compte utilisateur avec des identifiants valides
- Terminez le processus d'inscription et connectez-vous

Étape 2 : Accéder à la page de profil
- Après une connexion réussie, accédez à
http://localhost:8080/profile
- Localisez le champ Bio dans le formulaire de modification du profil
Étape 3 : Injecter la charge utile XSS
- Dans le champ Bio, saisissez la charge utile suivante :
- Cliquez sur le bouton Enregistrer ou Mettre à jour le profil
- Attendez la confirmation que le profil a été mis à jour
Étape 5 : Déclencher le XSS
- Visitez ou rechargez la page de profil :
http://localhost:8080/profile
- La boîte de dialogue d'alerte JavaScript s'exécutera automatiquement
- Résultat : Le code JavaScript s'exécute avec succès, confirmant la vulnérabilité XSS stocké
Comportement attendu
L'application devrait désinfecter l'entrée et soit :
- Supprimer toutes les balises HTML du champ Bio
- Encoder les caractères spéciaux (
<, >, ", ', etc.)
- Implémenter des en-têtes de politique de sécurité du contenu (CSP)
Comportement réel
La charge utile HTML/JavaScript malveillante est stockée dans la base de données et exécutée lors du rendu de la page de profil, sans aucune désinfection ni encodage.
Évaluation de l'impact
Sévérité : ÉLEVÉE
Score CVSS v3.1 : 8,1 (Élevé)
Chaîne vectorielle : CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Impact dans le monde réel
- Détournement de session : Les attaquants peuvent voler des jetons de session et usurper l'identité des utilisateurs
- Vol d'identifiants : Des scripts malveillants peuvent créer de faux formulaires de connexion pour capturer les identifiants
- Exfiltration de données : Les données utilisateur sensibles peuvent être envoyées vers des serveurs contrôlés par l'attaquant
- Distribution de logiciels malveillants : Les utilisateurs peuvent être redirigés vers des sites web malveillants
- Attaques de phishing : Le domaine de confiance peut être utilisé pour héberger du contenu de phishing convaincant
- Prise de contrôle de compte : Combinée à d'autres vulnérabilités, cela peut conduire à une compromission totale du compte