ZeroHour

CVE-2026-54599

niche

OIDC login CSRF in self-hosted Wallos logs victims into attacker accounts

CVSS 4.0
7.5 high
EPSS
<1%p7
Published
()
Modified
AI analysis

Wallos, an open-source, self-hostable personal subscription tracker, prior to version 4.9.4 fails to validate the OpenID Connect (OIDC) 'state' parameter on the login callback: login.php stores a state nonce in $_SESSION['oidc_state'], but checksession.php dispatches the callback without comparing the incoming state to that stored session value (CWE-352, cross-site request forgery). An attacker exploits this by tricking a victim (user interaction is required, per the CVSS 4.0 vector) into visiting a crafted URL, after which Wallos exchanges the attacker's authorization code and logs the victim into the attacker's Wallos account. The outcome is a login CSRF: the victim's browser session is bound to the attacker's account, so activity or data the victim subsequently enters in Wallos can land in and be seen from the attacker's account. Only self-hosted Wallos deployments running a version before 4.9.4 and using the OIDC login flow are affected. There is no public proof of concept, the flaw is not in CISA's KEV, and EPSS assigns a 0.2% 30-day exploitation probability (7th percentile), so no exploitation is currently known.

What to do: Upgrade Wallos to version 4.9.4 or later, which adds the missing state comparison on the OIDC callback. Until you can patch, treat untrusted links cautiously while logged in and, if your deployment allows, temporarily disable the OIDC login path. After upgrading, verify the installed version reflects 4.9.4.

Affected
Wallos (open-source project) Wallos personal subscription trackerall versions prior to 4.9.4
Estimated exposure
nichelikely on the order of thousands of self-hosted instances at most (estimate; no public adoption counts) — Wallos is a hobbyist, per-household self-hosted tracker whose deployment pattern (one instance per self-hoster, typically not internet-facing beyond the login page) caps exposure well below mainstream software; the order of magnitude is…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Wallos is an open-source, self-hostable personal subscription tracker. Prior to version 4.9.4, login.php generates an OIDC state nonce stored in $_SESSION['oidc_state'], but checksession.php dispatches the OIDC callback without comparing the incoming state against the session value. An attacker can trick a victim into visiting a crafted URL, causing Wallos to exchange the attacker's authorization code and log the victim into the attacker's account. This issue has been patched in version 4.9.4.

Weakness
CWE-352
Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:H/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

In the news

No ingested article mentions this CVE yet.