Skip to main content

Countly Server EUVDEUVD-2026-102915

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

Attack ChainAIDerived

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

  1. Access
    Authenticate with migration permission
  2. Delivery
    Call data-migration delete API with crafted exportid
  3. Exploit
    Traverse outside import directory via unvalidated path
  4. Execution
    Trigger recursive remove on target
  5. Impact
    Destroy files and disrupt service

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

Requires an authenticated Countly account possessing the data-migration permission (application administrator or a user explicitly granted migration rights) and that the data_migration plugin be enabled; the attacker then supplies a malicious exportid to the migration-deletion route in plugins/data_migration/api/api.js, which forwards it to clean_up_data in data_migration_helper.js without the path validation added in the fix. Exploitation is limited by that privileged role requirement - an unauthenticated or non-migration user cannot reach the sink - and by the deletion only affecting files/directories writable by the Countly server process; there is no confidentiality exposure, only destructive file/tree removal. Instances already upgraded to 24.05.50 or 25.03.44 (which add sanitizeFilename-based containment checks) are not affected.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H, base 8.1) describes a network-reachable, low-complexity attack that requires an authenticated account holding data-migration permission (PR:L) and no user interaction, with high integrity and availability impact but no confidentiality loss - consistent with a path-traversal-driven arbitrary file/directory deletion rather than data theft. No EPSS score, CISA KEV listing, or POC were supplied, so by the precision rules this is 'no public exploit identified at time of analysis'; the fix commits (764e2a1 / b652ee8) are the primary confirmed evidence. The real-world priority is moderate rather than severe: exploitation is gated behind an authenticated privileged role (admin or migration-permission user), which sharply narrows the threat population to insiders or attackers who have already compromised a privileged session, so this is better treated as a privilege-boundary/defense-in-depth fix than an externally wormable flaw. Note a mild tension between the CWE-22 path-traversal classification and the C:N rating - the bug enables destructive deletion, not file disclosure, so the high score is driven entirely by integrity/availability, which is correctly reflected in the vector.

Exploit ScenarioDerived

An authenticated Countly user who has (or has gained) the data-migration permission invokes the migration-deletion API with a crafted exportid containing path-traversal sequences; the unvalidated identifier is concatenated into a filesystem path that resolves outside the intended import directory and is passed to a recursive remove, deleting arbitrary writable files or whole directory trees. The result is data loss or service disruption for the Countly instance. No public exploit code was identified, but the patch diff clearly discloses the vulnerable sink and the exact validation that was missing.

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

Arbitrary file and directory deletion in Countly Server (versions prior to 24.05.50 and 25.03.44) allows an authenticated user holding data-migration permission to pass a crafted exportid to the migration-deletion route and recursively remove any file or directory tree writable by the Countly server process, resulting in data loss and service disruption. The root issue is a path-traversal flaw (CWE-22) in plugins/data_migration/api/api.js in which the user-controlled exportid reaches clean_up_data in data_migration_helper.js without the sanitizeFilename-based containment checks introduced by the fix. The assessed CVSS 3.1 vector is AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H (base 8.1), confirming a network-reachable, low-complexity attack requiring an authenticated account (PR:L) with no user interaction, with high integrity and availability impact but no confidentiality exposure; no public exploit code was identified at time of analysis and there is no confirmed active exploitation (not in CISA KEV). Vendor fixes are available in 24.05.50 and 25.03.44.

RemediationAI

Upgrade to the vendor-fixed releases 24.05.50 (24.05 line) or 25.03.44 (25.03 line), which add safeDataMigrationId and safePathIn containment checks that reject traversal-bearing exportid values with HTTP 400 before any filesystem deletion occurs; the specific upstream fixes are commits 764e2a1d86f9af600113f77422d520338c214229 and b652ee8dafa91602705004d0edb602a91a0d845e, and the advisory is at https://github.com/Countly/countly-server/security/advisories/GHSA-5pmc-54j6-jcgq. If immediate upgrade is not possible, the most effective compensating control is to disable the data_migration plugin entirely (remove or rename plugins/data_migration so Countly does not load it) - this eliminates the attack surface but forfeits all import/export functionality, including legitimate migrations. A less disruptive option is to audit and strip data-migration permission from every account except the small set of administrators that genuinely need it, since the flaw requires that role (PR:L) to reach the deletion route; this reduces but does not remove risk, because any holder of that permission can still delete writable trees. Additional containment: run the Countly server process under a dedicated least-privilege operating-system account whose write access is scoped to the necessary Countly data, log and plugin directories, and mount or chmod those directories so the service cannot write outside them - the trade-off is that legitimate migrations may require temporarily widened permissions or manual file staging. Because no confidentiality loss is possible through this primitive, detection should focus on integrity: monitor for unexpected mass deletions in Countly-related directories and for requests to the data-migration deletion routes carrying exportid values containing slashes, dots, or encoded traversal sequences, and verify that backups of Countly data, configuration and logs are current and restorable before applying any temporary mitigation.

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

Countly Server is the Node.js backend of the Countly product-analytics platform, and the vulnerable component is its data_migration plugin, which imports and exports analytics data and maintains per-job artifacts under directories such as plugins/data_migration/import and the application log directory. The CPE string cpe:2.3:a:countly:countly-server:*:*:*:*:*:*:*:* identifies the affected package across all versions before the fixed releases, gated by the requirement that the data_migration plugin be enabled. The weakness class is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory, i.e. path traversal): the authenticated deletion endpoint in plugins/data_migration/api/api.js takes the client-supplied exportid query parameter and forwards it, unsanitized, to clean_up_data('export'|'import', exportid, true) in plugins/data_migration/api/data_migration_helper.js, which concatenates the identifier into a filesystem path and calls remove recursively. Because Node.js path.resolve/path.join will happily collapse '..' segments, an identifier containing traversal sequences escapes the intended import/export/log base directory and targets arbitrary writable paths. The upstream fix (commits 764e2a1d86f9af600113f77422d520338c214229 and b652ee8dafa91602705004d0edb602a91a0d845e) introduces two helpers, safeDataMigrationId and safePathIn: the former rejects any exportid that does not round-trip through common.sanitizeFilename, and the latter resolves the candidate path against a resolved base directory and requires the result to begin with basePath + path.sep, returning HTTP 400 for invalid identifiers and HTTP 401 when a stored log filename fails containment validation. The same containment logic is applied to log-file unlinks and to the import/<exportid>.json deletion, so the fix closes every concatenation sink in the deletion flow rather than only the primary exportid parameter. Notably, there is no confidentiality impact in the assessed vector: the primitive is purely destructive, so an attacker cannot read data through it, but the recursive deletion is high-integrity/high-availability impact because it can erase Countly configuration, analytics artifacts, or other trees writable by the service account.

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 8.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
vuln.today AI 8.1 HIGH

Network-reachable migration API with no user interaction (AV:N/AC:L/UI:N), but requires the migration permission so PR:L; arbitrary deletion yields I:H/A:H with no disclosure (C:N).

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Oct 16, 2026 - 17:17 EUVD
CVE Published
Oct 16, 2026 - 15:59 cve.org
HIGH 8.1

DescriptionCVE.org

countly-server is the server-side part of Countly, a product analytics solution. Prior to 24.05.50 and 25.03.44, the authenticated data-migration deletion route in plugins/data_migration/api/api.js passes the user-controlled exportid to clean_up_data without path validation. plugins/data_migration/api/data_migration_helper.js concatenates that identifier into a path resolved outside the intended import directory and calls remove recursively, allowing an application administrator or user with migration permission to delete writable files or directory trees and cause data loss or service disruption. This issue is fixed in versions 24.05.50 and 25.03.44.

Technical POC Analysis

CWE-22 path traversal in Countly Server's datamigration plugin.

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 running versions prior to 24.05.50 and 25.03.44 are exposed to a high-severity vulnerability that permits an authenticated user with data-migration permission to delete arbitrary files and directories, resulting in potential data loss and service disruption. Organizations relying on Countly for analytics or customer data should treat this as a significant operational risk, particularly if migration permissions are broadly assigned. Leadership should prioritize upgrading to the fixed versions and tightening access controls to prevent insider or compromised-account abuse.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
Low
niche open-source product analytics platform, limited enterprise footprint
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org Vulnrichment GitHub

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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
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