CVE-2026-86041 · Package
NO FIX YET · SEE WHAT TO DO
ezBookkeeping, a self-hosted personal finance app, trusts a client-supplied X-Forwarded-For header when checking remote IP allowlists for MCP and API tokens. An unauthenticated attacker can spoof an allowlisted address to get past those IP gates, and their activity is logged under the trusted host instead of their own address.
first public Jul 19, 2026 · 1 source
Check it with your coding agent
It checks your repository and tells you if you’re affected, with the fix.
Self-hosted ezBookkeeping instances from 0.10.0 up to 1.6.0 that rely on the mcp_allowed_remote_ips or api_token_allowed_remote_ips settings to restrict access. A valid MCP or API token is still required for protected actions, so the risk is a bypassed IP gate and misattributed audit records rather than unauthenticated data access. Instances without those allowlist settings are not exposed through this path.
Not affected if no-api-token-enabled, no-ip-allowlist-configured, version-1.6.0-or-later
Who cares ezbookkeeping, gin, go, self-hosted
mcp_allowed_remote_ips or api_token_allowed_remote_ips in the ezBookkeeping configuration; their presence means the IP gate is in use.1.6.0ezBookkeeping is an open source, self-hosted personal finance application. From 0.10.0 until 1.6.0, ezBookkeeping constructs its Gin router with gin.New() without configuring SetTrustedProxies, causing c.ClientIP() to trust a spoofed X-Forwarded-For value. An unauthenticated remote attacker can supply an allowlisted address to bypass the mcp_allowed_remote_ips or api_token_allowed_remote_ips gate. A valid MCP or API token remains required for protected actions. When such actions occur, the same spoofed value is stored in Transaction.CreatedIp and the request log, attributing activity to the trusted host instead of the attacker. This issue is fixed in version 1.6.0.
Are you affected?
Tell InfraStack what you run. It checks this one, and every next one, against your stack.
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
This page as .md · .json · CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/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
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.