Comment les hackers ont pu obtenir les données de millions de personnes ?

Le Mardi 8 Avril 2025 le site de la CNSS a subi une attaque sans précédent suite à laquelle des fichiers ont circulés sur Telegram qui contiennent les données sensibles des adhérents en particlieurs leurs salaires. Comment est-ce possible ?
Communication client serveur
Après l'authentification l'utilisateur reçoit un jeton :une longue chaine de caracteres qu'il stock dans son navigateur puis le renvoie a chaque fois qu'il envoie une nouvelle requete. Normalement ce jeton doit permettre d'avoir seulement les informations relatives au scope de la personne connectee selon son role : adherent, admin etc.
C'est exactement ce mode de fonctionnement qui presente des faille de securite et il existe plusieurs attaques connues qui permettent d'en profiter dont Cross Site Scripting (XSS):
https://owasp.org/www-community/attacks/xss/#
Le hacker va pouvoir envoyer un script js malicieux qui va s'executer cote navigateur client et recupere son jeton et pouvoir envoyer des requetes API comme suit:

Comment prévenir une telle attaque ?
Encodage des données en sortie L'encodage doit être appliqué directement avant l'écriture de données contrôlables par l'utilisateur sur une page, car le contexte d'écriture détermine le type d'encodage à utiliser. Par exemple, les valeurs d'une chaîne JavaScript nécessitent un type d'échappement différent de celles d'un contexte HTML. Dans un contexte HTML, vous devez convertir les valeurs non autorisées en entités HTML : < convertit en : < > convertit en : > Dans un contexte de chaîne JavaScript, les valeurs non alphanumériques doivent être échappées Unicode : < convertit en : \u003c > convertit en : \u003e