Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/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
Injection is unauthenticated via network (AV:N, PR:N, AC:L); operator must click poisoned link (UI:R); scope changes because unauth write into the store affects the authenticated operator session (S:C); no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Fathom Lite through 1.3.1 contains a stored cross-site scripting vulnerability in the analytics collection endpoint that allows unauthenticated attackers to inject a javascript: URI into the Top Pages dashboard by supplying a crafted hostname and pathname to the unauthenticated /collect endpoint. The parseHostname and parsePathname functions perform no URI scheme validation, allowing a javascript: hostname combined with a newline-prefixed pathname to be stored and later rendered as an anchor href in the authenticated dashboard without sanitization, enabling session hijacking and full account takeover when an operator clicks the poisoned entry.
AnalysisAI
Stored cross-site scripting in Fathom Lite through 1.3.1 permits unauthenticated attackers to poison the operator's Top Pages dashboard by submitting a crafted javascript: URI to the public /collect analytics endpoint, ultimately enabling session hijacking and full account takeover. The parseHostname and parsePathname functions perform no URI scheme validation, so a javascript: hostname combined with a newline-prefixed pathname is stored verbatim and later rendered as an unsanitized anchor href in the authenticated dashboard. A publicly available exploit demonstrates the full attack chain; while no CISA KEV listing is present, the zero-authentication injection barrier and realistic operator-click trigger make real-world impact materially higher than the CVSS 4.0 score of 5.1 suggests.
Technical ContextAI
Fathom Lite is a self-hosted, privacy-focused web analytics platform (CPE: cpe:2.3:a:usefathom:fathom:*:*:*:*:*:*:*:*) that exposes an unauthenticated /collect endpoint for recording page-view telemetry from visitor browsers. The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation - Stored XSS): the parseHostname and parsePathname functions accept arbitrary hostname and pathname values without validating the URI scheme or stripping dangerous protocol prefixes such as javascript:. A newline character injected at the start of the pathname value is used to defeat any naive prefix-based check on the combined string, allowing the full javascript: URI to survive storage. When the operator subsequently loads the Top Pages view, the stored value is rendered as an anchor href without HTML encoding or Content Security Policy blocking, causing the payload to execute in the operator's authenticated browser session on click.
RemediationAI
No vendor-released patch version is independently confirmed from the available references; operators should monitor the Fathom Lite upstream repository and apply any fix immediately upon release, referencing the VulnCheck advisory at https://www.vulncheck.com/advisories/fathom-lite-stored-xss-via-collect-endpoint for patch guidance. As a compensating control, deploy a WAF or reverse-proxy rule that rejects requests to the /collect endpoint where the hostname parameter contains a javascript: scheme prefix or embedded newline characters (note: overly broad rules may produce false positives for unusual but legitimate hostnames, so test against production traffic before enforcing in blocking mode). Alternatively, restrict network-level access to /collect to known trusted IP ranges, accepting the trade-off that analytics collection from general internet visitors will be disabled. Operators should also audit the existing Top Pages database table for stored entries containing javascript: in the hostname column and purge any poisoned records directly. Adding a Content Security Policy header with script-src directives that exclude unsafe-inline on the dashboard route would limit javascript: URI execution as a defense-in-depth measure, but this requires application-level changes.
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-48311
GHSA-4fpj-4rcv-h3hf