Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid API token
-
DeliverySend token to /api/v1/tokens/refresh.json
-
ExploitServer skips token-type check
-
ExecutionReceive 30-day session token
-
ImpactBypass expiry and IP allowlist
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the attacker to already possess a valid ezBookkeeping API token (a short-lived and/or IP-restricted token); with that token, a single authenticated request to the /api/v1/tokens/refresh.json endpoint returns a full normal session token because TokenRefreshHandler in versions 1.2.0 through 2.0.0 does not validate that the refreshed token is of type USER_TOKEN_TYPE_NORMAL. Limiting factors: the attacker must obtain an API token first (PR:L, not unauthenticated), and the issue is fully remediated in v2.0.1 where the handler rejects non-normal token types; no user interaction is required and attack complexity is low. The impact is confined to the compromised account's own token scope - escalating an API token to a longer-lived, allowlist-bypassing session token. |
| Impact | This is a medium-severity authorization flaw (CWE-863) rated CVSS 5.3 via the vendor's CVSS 4.0 vector AV:N/AC:L/AT:N/PR:L/UI:N with only Low vulnerable-system confidentiality and integrity impact and no availability or subsequent-system impact. The PR:L metric confirms exploitation requires the attacker to already hold a valid (API) token, so this is an authenticated privilege/scope escalation rather than an unauthenticated compromise. No EPSS score, CISA KEV listing, or public POC was provided in the intelligence, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The practical risk is bounded: an attacker must first obtain an API token (which is itself a credential), and the gain is escalation from a short-lived/IP-restricted API token to a 30-day normal session token that bypasses API-token expiry and IP allowlists. This is a real defense-in-depth weakness confirmed by vendor source code (the patch adds token-type checks to TokenRefreshHandler and many sibling handlers), but the modest CVSS, the need for a pre-existing token, and the absence of KEV/EPSS/POC signals indicate this is a patch-soon issue rather than an emergency. No conflicting signals were observed; the CVSS vector and the description are consistent (network-reachable endpoint, low complexity, requires an existing low-privilege token). |
| Exploit ScenarioDerived | An attacker who has obtained an ezBookkeeping API token - for example a short-lived or IP-restricted token meant only for automation - sends it to the /api/v1/tokens/refresh.json endpoint, which fails to verify the token type and returns a full 30-day normal session token. The attacker now holds a long-lived session credential that ignores the original token's expiry and IP allowlist restrictions. No public exploit code was identified in the provided intelligence, but the flaw is trivially reproducible given a valid API token and low attack complexity. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 04, 2026
Privilege escalation in ezBookkeeping 1.2.0 through 2.0.0 lets an attacker who already holds a short-lived and/or IP-restricted API token exchange it for a full 30-day normal session token by calling POST /api/v1/tokens/refresh.json, because TokenRefreshHandler never verifies the token type before minting a replacement. The resulting session token outlives the original API token's expiry and its IP allowlist, though impact stays within the compromised account's own scope (low confidentiality and integrity impact). Rated CVSS 5.3 (CVSS:4.0 AV:N/AC:L/AT:N/PR:L/UI:N), it requires a prior valid API token (authenticated) and is fully remediated in v2.0.1; no public exploit code or confirmed active exploitation was identified at time of analysis.
RemediationAI
Upgrade to ezBookkeeping 2.0.1, the vendor-released patch version, which adds the missing USER_TOKEN_TYPE_NORMAL checks to TokenRefreshHandler and the other affected handlers; the exact fix is commit 9a92b07 (https://github.com/mayswind/ezbookkeeping/commit/9a92b07be8a7034665abfdb35b036210a1d57bf9) and the release is at https://github.com/mayswind/ezbookkeeping/releases/tag/v2.0.1, with the coordinated advisory at https://github.com/mayswind/ezbookkeeping/security/advisories/GHSA-wq25-mpcf-2mfc. If immediate upgrade is not possible, remember the flaw only grants escalation to a party who already holds a valid API or MCP token, so the practical compensating controls are to revoke and stop issuing such tokens where they are not operationally required, rotate any tokens believed exposed, and - with a normal session token - use the token-revocation endpoints to invalidate existing API tokens (a revoke-all action terminates all sessions for the account, including the administrator's own, so it should be scheduled accordingly). Blocking or tightly restricting inbound access to /api/v1/tokens/refresh.json at a reverse proxy or WAF to trusted networks/clients reduces exposure, at the cost of breaking legitimate client refreshes from other locations, since API tokens are often used specifically for remote automation. Monitoring for refresh calls originating from API-token principals (the fixed code logs token-type warnings) can detect attempts during the upgrade window.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ezBookkeeping is a Go web application whose API layer issues JWTs carrying a Type claim distinguishing a normal user session token (USER_TOKEN_TYPE_NORMAL) from API/MCP tokens that are meant to be short-lived and optionally bound to an IP allowlist. CWE-863 (Incorrect Authorization) is the root cause: the TokenRefreshHandler in pkg/api/tokens.go (lines ~327-380 in v2.0.0) validated signature/expiry but never asserted that the incoming token's Type was USER_TOKEN_TYPE_NORMAL, so any structurally valid token - including a narrowly scoped API token - could be refreshed into a 30-day normal session credential. The upstream fix (commit 9a92b07) adds explicit claims.Type checks to TokenRefreshHandler and, in the same pass, to a broader set of sensitive handlers (TokenGenerateAPIHandler, TokenGenerateMCPHandler, TokenRevokeHandler, TokenRevokeAllHandler, ClearAllDataHandler, ClearAllTransactionsHandler/ClearAllTransactionsByAccountHandler, OAuth2 login/callback authorization, and two-factor status), indicating the same missing-type-check class was present across multiple endpoints. Data is stored per user account, so any escalated token remains bounded by that account's data.
Know when Ezbookkeeping gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Network endpoint with low complexity but requires a pre-existing API token (PR:L); impact limited to upgrading the attacker's own token scope, so C:L/I:L and A:N.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
ezBookkeeping 1.2.0 before 2.0.1 contains a privilege escalation vulnerability that allows attackers holding an API token to obtain a full session token via /api/v1/tokens/refresh.json. Because TokenRefreshHandler never checks token type, attackers can exchange short-lived or IP-restricted API tokens for 30-day normal session tokens that bypass API token expiry and allowlists.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
More in Ezbookkeeping
View allAn issue in MaysWind ezBookkeeping 0.7.0 allows a remote attacker to escalate privileges via the token component. Rated
mayswind ezbookkeeping versions 1.2.0 and earlier contain a critical vulnerability in JSON and XML file import processin
An issue in MaysWind ezBookkeeping 0.7.0 allows a remote attacker to escalate privileges via the lack of rate limiting.
EUVD-2026-92060
GHSA-983g-gj75-pg7f
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB