Skip to main content

Fathom Lite EUVDEUVD-2026-48311

| CVE-2026-65697 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-07-23 VulnCheck GHSA-4fpj-4rcv-h3hf
5.1
CVSS 4.0 · Vendor: VulnCheck
Share

Severity by source

Vendor (VulnCheck) PRIMARY
5.1 MEDIUM
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
vuln.today AI
6.1 MEDIUM

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
A
Scope
X

Lifecycle Timeline

2
Analysis Generated
Jul 23, 2026 - 17:19 vuln.today
CVE Published
Jul 23, 2026 - 16:29 cve.org
MEDIUM 5.1

DescriptionCVE.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.

Share

EUVD-2026-48311 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy