Skip to content

CVE-2026-73431: CIRCL Vulnerability-Lookup Stateless Token Replay Account Takeover

HERMES

HERMES THREAT SCORE & OPERATIONAL EXPLOITABILITY

Target: CIRCL Vulnerability-Lookup (vulnerability-lookup <= 5.5.1)
Confidence: 96%
82 / 100
HIGH

Measures real-world operational relevance, exploit weaponization, and active threat posture.

Dimension Breakdown
Exploitability 19 / 20
Threat Activity 14 / 20
Weaponization 16 / 20
Exposure 17 / 20
Prevalence 14 / 20
Impact 18 / 20
Exploit Maturity 16 / 20
Attack Chain Potential 17 / 20
βš–οΈ Divergence & Operational Rationale

Both CVSS v3.1 (8.8 High) and Hermes Threat Score (82 High) indicate severe exposure. Notably uncovered during automated AI-assisted red-team audits conducted jointly by ENISA and CERT-EU, this flaw illustrates how lack of single-use token invalidation converts transient network eavesdropping into persistent account takeover.

πŸ•ΈοΈ Connected Knowledge Graph & Provenance

CVE-2026-73431: CIRCL Vulnerability-Lookup Stateless Token Replay Account TakeoverVULNERABILITY

Connected Nodes: 1
Active Relationships (Outgoing)
→ affectsPRODUCTMicrosoft Office & 365 Apps
98% VERY_HIGH

Software platform affected by security vulnerabilities and agentic attack patterns.

πŸ” Why is this related? (Evidence & Provenance)

“Confirmed security vulnerability in Microsoft Office & 365 Apps documented in Hermes dossier.”

Supporting Verified Evidence:

1. Technical Root Cause: Stateless Tokens & Missing Purpose Binding

Section titled β€œ1. Technical Root Cause: Stateless Tokens & Missing Purpose Binding”

In vulnerability-lookup <= 5.5.1, user registration and password recovery workflows generated stateless signed tokens (using cryptographic timestamp signers):

sequenceDiagram
autonumber
actor User as Legitimate Analyst
actor Attacker as Eavesdropping Adversary
participant App as Vulnerability-Lookup Server
participant DB as Backend Database
User->>App: Requests password reset (/reset_password)
App-->>User: Dispatches email with signed token T
Attacker->>User: Intercepts token T via proxy/eavesdropping
User->>App: Submits token T with NewPassword_User
App->>DB: Updates password (Token T NOT marked as consumed)
Note over App,DB: Token T remains valid for 24-72h!
Attacker->>App: Replays token T with AttackerPassword
App->>DB: Overrides password again - Account successfully hijacked!

The flaw results from two core architectural oversights:

  1. No Single-Use Invalidation: The server verified the cryptographic signature and timestamp of the token against TOKEN_VALIDITY_PERIOD, but maintained zero persistent state tracking used tokens. Once generated, a token could be submitted arbitrarily many times until its absolute expiration.
  2. Missing Purpose Binding: Tokens lacked explicit intent scoping (action="activation" vs action="reset"), allowing token type confusion across different endpoints.

CIRCL remediated the vulnerability in commit bef837242657acf680832be56b94428df130ed67 by introducing:

  • Random Cryptographic Nonces: A high-entropy random nonce is generated per token request.
  • SHA-256 Nonce Hashing: The SHA-256 digest of the active nonce is recorded in the user’s database document.
  • Atomic Single-Use Invalidation: When a password change or activation completes, the stored nonce is immediately rotated or cleared, rendering the token instantly invalid.
  • Explicit Action Scoping: Tokens must explicitly declare and match the targeted action.

Identify tokens submitted more than once to authentication endpoints:

Terminal window
grep -E "POST /(activate|reset_password)" /var/log/nginx/access.log \
| grep -o "token=[^ &]*" \
| sort | uniq -c | sort -nr | awk '$1 > 1'

(Any token appearing multiple times with successful 200 OK or 302 Found responses from distinct client IP addresses indicates an active replay attack).

Examine application logs for rapid successive password_reset_success events for identical account handles within short timeframes.


  1. Upgrade Immediately: Upgrade your vulnerability-lookup deployment to version 6.0.0 or later.
  2. Temporary Mitigation (Pre-Patch): Shorten TOKEN_VALIDITY_PERIOD in your application configuration to a minimal window:
    TOKEN_VALIDITY_PERIOD = 300 # 5 minutes instead of 86400s
  3. Session Invalidation: Upon applying the patch, revoke all active sessions and force password resets across analyst accounts if proxy logs show token reuse.