CVE-2026-73431 : rejeu de jetons sans état et prise de contrôle de compte dans CIRCL vulnerability-lookup
SCORE DE MENACE HERMES & EXPLOITABILITÉ OPÉRATIONNELLE
Cible :CIRCL Vulnerability-Lookup (vulnerability-lookup <= 5.5.1) Le score CVSS v3.1 (8.8 Élevé) et le score Hermes HTS (82 Élevé) concordent. Révélée dans le cadre de recherches proactives menées par l'ENISA et CERT-EU à l'aide de modèles d'IA, cette faille illustre comment l'absence d'invalidation à usage unique transforme une interception réseau temporaire en prise de contrôle permanente de compte.
CVE-2026-73431: CIRCL Vulnerability-Lookup Stateless Token Replay Account TakeoverVULNÉRABILITÉ
Software platform affected by security vulnerabilities and agentic attack patterns.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in Microsoft Office & 365 Apps documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
1. Mécanisme technique : jetons sans état & absence de liaison d’usage
Section intitulée « 1. Mécanisme technique : jetons sans état & absence de liaison d’usage »Dans vulnerability-lookup <= 5.5.1, les flux d’inscription et de réinitialisation généraient des jetons signés cryptographiquement contenant l’identifiant utilisateur et un horodatage :
sequenceDiagram autonumber actor User as Analyste Légitime actor Attacker as Attaquant en Écoute participant App as Serveur Vulnerability-Lookup participant DB as Base de Données
User->>App: Demande de réinitialisation (/reset_password) App-->>User: Envoi du courriel avec jeton T Attacker->>User: Interception du jeton T (proxy / écoute réseau) User->>App: Soumission du jeton T avec NouveauMdp_User App->>DB: Mise à jour du mot de passe (Jeton T NON invalidé) Note over App,DB: Le jeton T reste valide pendant 24 à 72h ! Attacker->>App: Rejeu du jeton T avec Mdp_Attaquant App->>DB: Écrasement du mot de passe - Compte compromis !Deux faiblesses architecturales majeures sont en cause :
- Absence d’invalidation à usage unique : le serveur vérifiait la validité temporelle et la signature du jeton, mais ne conservait aucun état marquant sa consommation. Un même jeton pouvait être soumis de multiples fois jusqu’à expiration.
- Absence de ségrégation d’usage : les jetons ne portaient aucune mention d’action exclusive, rendant possible la confusion entre l’activation initiale d’un compte et la réinitialisation de mot de passe.
2. Analyse du correctif CIRCL (commit bef837242657)
Section intitulée « 2. Analyse du correctif CIRCL (commit bef837242657) »Le CIRCL a résolu la vulnérabilité dans le commit bef837242657acf680832be56b94428df130ed67 :
- Génération d’un nonce cryptographique aléatoire : chaque demande de jeton génère un nonce de haute entropie.
- Stockage du digest SHA-256 : seul le hash du nonce est conservé dans le profil de l’utilisateur.
- Consommation atomique à usage unique : dès que le mot de passe est validé, le nonce stocké est révoqué ou effacé, invalidant instantanément le jeton.
- Scellement de l’action : le jeton intègre obligatoirement l’action ciblée (
action="account_activation"vsaction="password_reset").
3. Analyse forensique & détection
Section intitulée « 3. Analyse forensique & détection »3.1 détection dans les journaux web (Nginx / Apache)
Section intitulée « 3.1 détection dans les journaux web (Nginx / Apache) »Rechercher les jetons soumis plus d’une fois aux points de terminaison d’authentification :
grep -E "POST /(activate|reset_password)" /var/log/nginx/access.log \ | grep -o "token=[^ &]*" \ | sort | uniq -c | sort -nr | awk '$1 > 1'(Tout jeton apparaissant avec un code HTTP 200/302 depuis des adresses IP distinctes caractérise une attaque par rejeu).
3.2 détection dans les journaux applicatifs
Section intitulée « 3.2 détection dans les journaux applicatifs »Surveiller les événements consécutifs de modification de mot de passe sur un même identifiant dans un court laps de temps.
4. Remédiation & durcissement
Section intitulée « 4. Remédiation & durcissement »- Mise à jour immédiate :
Migrer l’instance
vulnerability-lookupvers la version 6.0.0 ou ultérieure. - Mesure temporaire (avant mise à jour) :
Réduire drastiquement
TOKEN_VALIDITY_PERIODdans la configuration :TOKEN_VALIDITY_PERIOD = 300 # 5 minutes au lieu de 24h - Révocation des sessions : Purger les sessions actives et obliger les analystes à réinitialiser leurs accès si des anomalies de requêtes répétées ont été détectées.
5. Références croisées Hermes
Section intitulée « 5. Références croisées Hermes »- Avis amont & commit CIRCL :
bef837242657acf680832be56b94428df130ed67 - Version corrigée :
vulnerability-lookupRelease 6.0.0 - Méthodologies associées :