Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend request to public image/screenshot route
-
ExploitInject ../ traversal in wildcard path
-
ExecutionBypass absent containment validation in countlyFs
-
ImpactDisclose 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
More in Countly Server
View allStored cross-site scripting in the Countly Server star-rating plugin allows an authenticated, non-global application adm
Arbitrary file and directory deletion in Countly Server (versions prior to 24.05.50 and 25.03.44) allows an authenticate
countly-server is the server-side part of Countly, a product analytics solution. Rated high severity (CVSS 8.1), this vu
Unauthenticated denial of service in Countly Server prior to 24.05.50 and 25.03.44 lets any remote network attacker cras
Authorization bypass in Countly Server's DBViewer plugin allows authenticated low-privilege users to read data from rest
EUVD-2026-102917
NVD
CVE.org
GitHub
Exploit-DB