Skip to main content

Countly Server EUVDEUVD-2026-102917

| CVE-2026-41582 HIGH
Path Traversal (CWE-22)
2026-10-16 GitHub_M
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send request to public image/screenshot route
  2. Exploit
    Inject ../ traversal in wildcard path
  3. Execution
    Bypass absent containment validation in countlyFs
  4. Impact
    Disclose arbitrary readable server files

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitable only on Countly deployments configured to use the local filesystem backend of countlyFs (api/utils/countlyFs.js); installs using the GridFS/database backend are not reachable through these routes. No authentication, user interaction, or special privileges are required (CVSS PR:N/UI:N) - the affected public routes (/appimages/*, /memberimages/*, */screenshots/*, /star-rating/images/*, and /dashboards/images/screenshots/*) accept unauthenticated requests. The primary limiting factor is the storage-backend configuration; the impact is limited to disclosure of readable files (no write/integrity or availability effect), and only files readable by the Countly server process can be exfiltrated.

Impact

This is a genuine, actionable medium-to-high priority for affected deployments, though not an emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N, base 7.5) is internally consistent with the description: an unauthenticated, network-reachable path traversal yielding arbitrary readable-file disclosure (confidentiality High; no integrity or availability impact). The key tempering signal is NOT in the CVSS vector but in the description - exploitation only works 'on deployments using the local filesystem backend' of countlyFs, so environments using the GridFS/database backend are not reachable via these routes, meaning the real-world exploitable population is a subset of installs. No EPSS score, CISA KEV listing, or public POC was provided, so exploitation status is 'no public exploit identified at time of analysis'; however, the fix commits are public and the diff clearly shows the missing containment check, which lowers the effort for an attacker to reverse-engineer a working traversal. There is no conflict between the signals - CVSS, CWE-22, and the source diff all agree this is a real unauthenticated arbitrary-file-read. The main uncertainty is deployment-backend configuration, which determines whether a given instance is actually vulnerable.

Exploit ScenarioDerived

An unauthenticated attacker sends a crafted HTTP request to a public image or screenshot route such as /appimages/ or /dashboards/images/screenshots/, embedding directory-traversal sequences in the wildcard portion of the path. Because the routes concatenate the attacker-controlled path without containment validation, the request resolves outside the intended asset directory and countlyFs reads an arbitrary server-side file (for example configuration files or credentials), returning its contents in the response. No public exploit is identified at time of analysis, but the public fix commits reveal the vulnerable concatenation and make the flaw straightforward to reproduce against local-filesystem-backend deployments.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 16, 2026

Unauthenticated path traversal in Countly Server before 24.05.50 and 25.03.44 lets remote attackers read arbitrary files that are readable by the server process, by abusing wildcard routes that serve public images and screenshots. The flaw affects deployments configured with the local filesystem backend of countlyFs (api/utils/countlyFs.js) - installs using the GridFS/database backend cannot be reached through these routes - and carries a CVSS 3.1 score of 7.5 (AV:N/AC:L/PR:N/UI:N/C:H/I:N/A:N), so no credentials, privileges, or user interaction are required. Impact is limited to file disclosure (no integrity or availability effect); vendor-released patches exist in 24.05.50 and 25.03.44, and no public exploit identified at time of analysis.

RemediationAI

Upgrade to Countly Server 24.05.50 (24.05 branch) or 25.03.44 (25.03 branch), which introduce the safeStaticPath() containment check in frontend/express/app.js and the star-rating and dashboards plugins - vendor-released patch versions 24.05.50 and 25.03.44; release artifacts and the advisory are at https://github.com/Countly/countly-server/releases/tag/24.05.50, https://github.com/Countly/countly-server/releases/tag/25.03.44, and https://github.com/Countly/countly-server/security/advisories/GHSA-fqgp-6rm9-8696. If upgrading immediately is not possible, the most effective compensating control is to reconfigure countlyFs to use the database/GridFS backend, since these routes cannot traverse outside the asset directories in that mode - the trade-off is a storage migration and potentially different performance/operational characteristics for asset serving. Alternatively, block or filter requests matching /appimages/, /memberimages/, /screenshots/, /star-rating/images/, and /dashboards/images/screenshots/ that contain encoded or literal dot-dot traversal sequences at the reverse proxy or WAF, accepting that legitimate image delivery may be degraded if the filtering is too broad. Because only files readable by the Countly server process can be exfiltrated, running the service under a least-privilege account with no access to configuration secrets, database credentials, or system files reduces the blast radius, though it does not remove the vulnerability. Restricting network access to the Countly web interface to trusted networks or authenticated reverse-proxy users limits unauthenticated exposure but does not help if the route itself remains publicly reachable. Note that applying the upstream commit patches (405cb229ed37c744f6d61c42bf86fee5a7ee3530 and 8004d29d3c789b70a79bf6e0380f0d546dbf42a9) manually is possible but should be treated as an upstream fix (PR/commit) rather than a substitute for the tagged patched releases 24.05.50 and 25.03.44.

Affected VersionsENISA

countly-server 25.03, < 25.03.44
countly-server < 24.05.50

Affected Packages

euvd countly_server fix: 24.05.50, 25.03.44

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

The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory), introduced by string concatenation of attacker-controlled wildcard path segments in frontend/express/app.js, plugins/star-rating/frontend/app.js, and plugins/dashboards/frontend/app.js. Express wildcard captures (req.params[0] and req.path) were appended directly to a base directory such as __dirname + '/public/appimages/' or plugin-public paths and then passed to countlyFs.getStats and countlyFs.getStream in api/utils/countlyFs.js without verifying that the resolved path stayed inside the intended asset root, so sequences like ../ could climb out of the asset directory. The upstream fix (commits 405cb229ed37c744f6d61c42bf86fee5a7ee3530 and 8004d29d3c789b70a79bf6e0380f0d546dbf42a9) adds a safeStaticPath() helper that normalizes backslashes, strips leading slashes, resolves the path against the base directory, and rejects the result unless it equals the base directory or begins with baseDir + path.sep, returning a default icon or a false response on rejection. The vulnerable surface is the set of public asset routes /appimages/*, /memberimages/*, */screenshots/*, /star-rating/images/*, and /dashboards/images/screenshots/*; because these routes serve static content, they were not protected by authentication, which is why the assessed vector is PR:N/UI:N. Exploitability hinges on the countlyFs storage backend: only local-filesystem deployments pass the user-influenced path to the filesystem layer, whereas database/GridFS-backed deployments resolve assets through the database and are not reachable this way.

Know when Countly Server 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

Vendor (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 7.5 HIGH

Unauthenticated network path traversal (AV:N/PR:N/UI:N) with simple crafted requests (AC:L); arbitrary file read gives C:H, with no integrity or availability impact and no scope change.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch available
Oct 16, 2026 - 17:17 EUVD
CVE Published
Oct 16, 2026 - 16:03 cve.org
HIGH 7.5

DescriptionCVE.org

countly-server is the server-side part of Countly, a product analytics solution. Prior to 24.05.50 and 25.03.44, public image and screenshot routes implemented in frontend/express/app.js, plugins/star-rating/frontend/app.js, and plugins/dashboards/frontend/app.js concatenate attacker-controlled wildcard paths without containment validation. On deployments using the local filesystem backend, an unauthenticated request can traverse outside the intended asset directories and reach getStats or getStream in api/utils/countlyFs.js, allowing arbitrary readable server files to be disclosed. The affected routes include /appimages/*, /memberimages/*, */screenshots/*, /star-rating/images/*, and /dashboards/images/screenshots/*. This issue is fixed in versions 24.05.50 and 25.03.44.

Technical POC Analysis

CWE-22 (Improper Limitation of a Pathname to a Restricted Directory); the GitHub advisory also tags CWE-23 (Relative Path Traversal).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Countly Server deployments configured with the local filesystem storage backend expose any file readable by the Countly service process to unauthenticated remote attackers via wildcard image- and screenshot-serving routes. Because the flaw requires no credentials or user interaction, an internet-facing instance could leak configuration files, database credentials, or other secrets that enable further intrusion. Leadership should prioritize this as a credential-exposure risk affecting externally reachable analytics infrastructure, even though it causes no data modification or service outage.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
Low
self-hosted analytics product with niche, non-ubiquitous enterprise footprint
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

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