CVE-2026-111048
Publiée le 2026-11-02 · Dernière modification le 2026-11-02
Les versions 0.1.0 à 0.8.8 de FOSSBilling sont affectées par une faille de cross-site scripting (XSS) stockée. Cette plateforme open source de facturation et de gestion de clients ne nettoie pas correctement les données envoyées au point de terminaison des notes de tickets d'assistance. Comme la liste des tickets d'administration affiche ces notes via `innerHTML` au lieu d'utiliser un échappement sécurisé, du code malveillant peut être enregistré directement dans la base de données.
Un attaquant disposant de privilèges de base de personnel d'assistance peut injecter un script qui s'exécute dans le navigateur de tout membre du personnel consultant la liste des tickets. Cela permet à l'attaquant de voler des jetons de session ou d'effectuer des actions administratives de haut niveau en utilisant les permissions de la victime, y compris celles d'un Super Administrateur. L'attaque nécessite un accès réseau et une interaction de l'utilisateur, car l'administrateur ciblé doit ouvrir la page spécifique pour déclencher la charge utile.
DÉTAIL DU VECTEUR CVSS
RÉFÉRENCES
Description officielle du NVD (en anglais)
FOSSBilling is an open source billing and client-management platform. From 0.1.0 until 0.8.9, the admin/support/note_create endpoint stores the note parameter without sanitization in the support_ticket_note table, and src/modules/Support/templates/admin/mod_support_tickets.html.twig renders each stored support ticket note through innerHTML in the admin ticket list. A staff user with only the support.manage_tickets permission can store HTML or JavaScript that executes when another staff member opens the ticket notes. The script runs with the viewing staff member's session and privileges, can read a CSRF token and accessible client or invoice data, and can perform administrative actions available to the viewer, including a Super Administrator. The ticket detail page is not affected because its Twig rendering uses autoescaping. This issue is fixed in version 0.8.9.