CVE-2026-94112 json
mayswind ezBookkeeping before 2.0.0 TOTP Replay Attack
published 2026-09-20 49 d ago modified 2026-09-24 45 d ago also EUVD-2026-83734
- cvss
- 6.8
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 33%
- public exploits
- 0
- none known
Summary
mayswind ezBookkeeping before 2.0.0 fails to invalidate TOTP passcodes after use, allowing attackers to replay captured codes within the acceptance window. Attackers with stolen credentials can authenticate and reuse a captured passcode against multiple authorization attempts for approximately 90 seconds without detection.
Patch / fix
- mayswind ezBookkeeping 2.0.0
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 48 d ago
Exploit prediction
0.39% chance of exploitation in the next 30 days, higher than 33% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 7.6 | CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N |
| CNA | 3.1 | 6.8 | CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N |
| CNA | 4.0 | 7.6 | CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
Affected products
- mayswind ezBookkeeping
Classification
- Weakness
-
- CWE-294 Authentication Bypass by Capture-replay
References
-
github.com
/mayswind/ezbookkeeping/commit/3dd6286d7a3ab0f980a6d36339b9c9c4df9467e4
patch
-
github.com
/mayswind/ezbookkeeping/security/advisories/GHSA-p6qr-48g6-97q3
vendor-advisory
-
github.com
/mayswind/ezbookkeeping/releases/tag/v2.0.0
release-notes
-
vulncheck.com
/advisories/mayswind-ezbookkeeping-before-2.0.0-totp-replay-attack
third-party-advisory
Sources
- CVE List CVE-2026-94112
- NVD CVE-2026-94112
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.