CVE-2026-103651

MISP HOTP Token Replay via Stale Session-Cached Counter Allows Second-Factor Authentication Bypass

Published Oct 1, 2026 CVSS 4.0 · 7.6 High EPSS < 1% KEV · Not listed
Description
MISP contains a vulnerability in its one-time password (OTP) authentication flow that allows replay of a consumed HOTP (paper) token and rewinding of the token counter.

The HOTP verification logic compared the submitted token against a counter value that was cached in the user's session at the time the password was entered, rather than against the authoritative counter stored in the database. Because the session-cached counter is not updated after a token is successfully consumed, an attacker who holds a valid session (password already submitted) can reuse a previously burned HOTP token. The stale cached counter still matches the replayed token, granting a second successful authentication and effectively rewinding the counter state.

Preconditions:

- The target user has HOTP (paper token) second-factor authentication enabled.

- The attacker possesses a valid session in which the password step has already been completed (the OTP step is pending).

- The attacker has access to at least one HOTP token value (e.g., a paper token list).

Security impact:

- Bypass of the second authentication factor, allowing unauthorized access to a user's MISP account.

- Corruption of the HOTP counter state, potentially invalidating subsequent legitimate tokens or enabling further replays.

Affected versions: <2.5.48.

Remediation

Vendor Solution

The fix replaces the session-cached HOTP counter lookup with a direct read of the authoritative counter from the database, performed under a Redis-based distributed lock scoped to the user. The token is verified against the current stored counter, the counter is incremented and persisted atomically within the locked section, and the lock is released in a finally block. Additionally, the cached OTP user session entry is deleted immediately after a successful login (for both TOTP and HOTP paths), preventing the stale session state from being reused.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description MISP contains a vulnerability in its one-time password (OTP) authentication flow that allows replay of a consumed HOTP (paper) token and rewinding of the token counter. The HOTP verification logic compared the submitted token against a counter value that was cached in the user's session at the time the password was entered, rather than against the authoritative counter stored in the database. Because the session-cached counter is not updated after a token is successfully consumed, an attacker who holds a valid session (password already submitted) can reuse a previously burned HOTP token. The stale cached counter still matches the replayed token, granting a second successful authentication and effectively rewinding the counter state. Preconditions: - The target user has HOTP (paper token) second-factor authentication enabled. - The attacker possesses a valid session in which the password step has already been completed (the OTP step is pending). - The attacker has access to at least one HOTP token value (e.g., a paper token list). Security impact: - Bypass of the second authentication factor, allowing unauthorized access to a user's MISP account. - Corruption of the HOTP counter state, potentially invalidating subsequent legitimate tokens or enabling further replays. Affected versions: <2.5.48.
Title MISP HOTP Token Replay via Stale Session-Cached Counter Allows Second-Factor Authentication Bypass
First Time appeared Misp
Misp misp
Weaknesses CWE-287
CWE-362
CPEs cpe:2.3:a:misp:misp:*:*:*:*:*:*:*:*
Vendors & Products Misp
Misp misp
References
Metrics cvssV4_0

{'score': 7.6, 'vector': 'CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
CIRCL
Published
Updated
Oct 1, 2026, 3:32 PM
Reserved
Oct 1, 2026, 7:34 AM
Status
Deferred
Published
Oct 1, 2026, 8:16 AM
Modified
Oct 1, 2026, 4:17 PM