Skip to main content

Countly Server CVE-2026-44977

| EUVDEUVD-2026-102918 CRITICAL
Cross-site Scripting (XSS) (CWE-79)
2026-10-16 GitHub_M
9.0
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as application administrator
  2. Delivery
    Upload active content via uploadFeedbackFile with spoofed MIME
  3. Exploit
    Lure global admin to open feedback preview
  4. Execution
    Payload executes in Countly origin
  5. Impact
    Exfiltrate auth_token and csrf_token

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

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

Exploitation Conditions

The attacker must be an authenticated non-global application administrator on the Countly instance and must reach the star-rating plugin's uploadFeedbackFile upload path; exploitation succeeds because the pre-patch code trusts the client-supplied MIME type (myfile.type) and the frontend serves the stored file from feedback/preview/ with that attacker-controlled Content-Type. Payload execution additionally requires a global administrator to open the feedback preview (UI:R), so the attack cannot fire autonomously. Key limiting factors: valid app-admin credentials are required (not unauthenticated), the victim must be a higher-privileged global admin who actively opens the preview, and the issue is absent in versions 24.05.50 and 25.03.44 where MIME is derived from magic bytes and a safe-image allowlist and uploads are gated by validateGlobalAdmin/validateAppAdmin with the app_id pinned to the upload name.

Impact

This is a stored cross-site scripting flaw (CWE-79) in the Countly star-rating plugin with a vendor/NVD CVSS 3.1 score of 9.0 (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H). The high score is driven primarily by the scope change (S:C) and full CIA impact, which reflect a privilege-boundary crossing: a lower-privileged non-global application administrator plants content that ultimately executes in the session context of a higher-privileged global administrator. The practical risk is real but conditional rather than mass-exploitable: PR:L means the attacker must already hold application-admin credentials on the target instance, and UI:R means a global administrator must be induced to open the feedback preview before the payload fires. No EPSS score was supplied, so a quantitative exploitation-probability signal is unavailable. This is NOT a CISA KEV entry and no public exploit code was provided, so there is no evidence of active exploitation or weaponization - this looks like an insider/privilege-escalation XSS requiring a social-engineering step, not an internet-wide unauthenticated RCE. Net: a legitimately serious privilege-escalation issue for multi-tenant/multi-admin Countly deployments that should be patched, but the real-world urgency is lower than the 9.0 headline implies because of the authentication and user-interaction prerequisites. The provided CVSS vector is internally consistent with the description (network-delivered, low-privilege attacker, victim interaction, cross-privilege scope change).

Exploit ScenarioDerived

A non-global application administrator on a shared Countly instance uses the star-rating plugin's uploadFeedbackFile endpoint to store an HTML/JavaScript file while supplying a trusted MIME type (e.g. text/html). When a global administrator later opens the feedback preview, the file is served from feedback/preview/ with the attacker-chosen Content-Type and the script executes in the Countly origin, exfiltrating the global admin's auth_token and csrf_token. No public exploit code was identified, but the fixing commit (ae899f3) publicly reveals the vulnerable MIME-trust logic, lowering the barrier to reproduce.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available

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

Alert me

AnalysisAIv1 – Oct 16, 2026

Stored cross-site scripting in the Countly Server star-rating plugin allows an authenticated, non-global application administrator to upload attacker-controlled active content (for example an HTML/JS file disguised as an image) through the uploadFeedbackFile endpoint, which pre-patch trusts the client-supplied MIME type. The file is then publicly served from feedback/preview/ with that attacker-influenced Content-Type, so a global administrator who opens the feedback preview executes the payload in the Countly origin and can expose authenticated session material such as auth_token and csrf_token values. Rated CVSS 3.1 9.0 (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H), exploitation requires app-admin credentials plus the higher-privileged victim actively opening the preview, and no public exploit code has been identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade to Countly Server 24.05.50 (24.05.x branch) or 25.03.44 (25.03.x branch), which are the versions named in the advisory and release tags; the fixes are carried in commits ae899f37bc6d70c1b44859756ce80a204ae72631 and fcb16c808c0fdb6dc99fe9c66de7fc560b3a9c41 and add magic-byte MIME sniffing with a safe-image allowlist plus validateGlobalAdmin/validateAppAdmin gating with app_id pinned to the upload name. Where an immediate upgrade is not possible, compensating controls include disabling or removing the star-rating plugin (which eliminates the affected upload and preview routes but also removes star-rating and feedback-logo functionality), restricting the application-administrator role to fully trusted personnel and auditing who holds app-admin rights (since valid app-admin credentials are a prerequisite), and instructing global administrators not to open feedback previews from untrusted or newly uploaded logos until the upgrade is applied. Adding a Content-Security-Policy with restrictive script-src and object-src directives and forcing attachment-style handling or a locked-down Content-Type on the feedback/preview/ path at the reverse proxy reduces exploitability of the malicious preview, though proxy-level MIME normalization can break legitimate image rendering and must be validated against the feedback UI. Note that none of these workarounds remove the underlying MIME-trust flaw, so upgrading remains the only complete fix; no vendor-released patch alternative exists for versions below the two fixed releases.

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 a Node.js analytics platform whose functionality is delivered through plugins, and the affected component is plugins/star-rating. The root cause is CWE-79 (improper neutralization of input during web page generation, specifically stored/persistent XSS) combined with a trust-the-client file-handling weakness: the pre-patch uploadFile routine read myfile.type directly from the multipart upload and built a data URI prefix from it before persisting the object into GridFS under the 'feedback' bucket. Because the star-rating frontend serves that stored object from the feedback/preview/ path using the stored attacker-influenced Content-Type, the MIME string effectively became an attacker-controlled HTTP response header, allowing script-capable content types to be rendered in the Countly origin rather than downloaded. The vendor fix introduces plugins/star-rating/api/image-utils.js, which sniffs magic bytes via sniffImageType() and accepts only an allowlisted set of safe raster image MIME types, rejecting anything else. The same commit also hardens authorization: uploads are split into a global-logo path gated by validateGlobalAdmin and a per-app-logo path gated by validateAppAdmin, with params.qstring.app_id pinned to the app ID decoded from the upload name (parseFeedbackLogoName) so an administrator of one application cannot plant a logo for another. The CVSS scope-change metric (S:C) reflects that the injected script runs with the privileges and origin context of the victim global administrator rather than the low-privileged uploading app admin.

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

App-admin upload gives PR:L, global-admin opening the preview is UI:R, cross-privilege execution in the Countly origin is S:C, and theft of session/CSRF tokens yields full C/I/A:H.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Oct 16, 2026 - 17:17 EUVD
CVE Published
Oct 16, 2026 - 16:04 cve.org
CRITICAL 9.0

DescriptionCVE.org

countly-server is the server-side part of Countly, a product analytics solution. Prior to 24.05.50 and 25.03.44, plugins/star-rating/api/api.js allows a non-global application administrator to use uploadFeedbackFile to store attacker-controlled active content while trusting the supplied MIME type. plugins/star-rating/frontend/app.js publicly serves the stored content from feedback/preview/ with the attacker-influenced Content-Type, so a global administrator who opens the preview executes the payload in the Countly origin and exposes authenticated session capabilities, including auth_token and csrf_token values. This issue is fixed in versions 24.05.50 and 25.03.44.

Technical POC Analysis

Stored XSS, CWE-79.

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's star-rating feedback workflow contains a critical content-handling weakness that could let a lower-privileged application administrator introduce a file which later executes as active code in a higher-privileged global administrator's browser when a feedback preview is opened. This creates a credible path to session-token exposure, account takeover, and unauthorized access to analytics or administrative capabilities, making it a high-priority access-control and remediation issue for security leadership. No public exploit identified at time of analysis, but exploitation requires only application-administrator credentials and a global-administrator preview action, leaving limited tolerance for delay.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include disabling or restricting the star-rating plugin and uploadFeedbackFile endpoint, enforcing server-side MIME/type allowlisting and image re-encoding, serving feedback/preview/ content with safe Content-Type and Content-Disposition headers or from an isolated origin, applying a restrictive CSP, enforcing least privilege and MFA for application and global administrators, monitoring feedback uploads and admin preview activity, and rotating auth_token/csrf_token values for affected administrators.

Threat Intelligence Overview

Prevalence
Medium
self-hosted product-analytics platform, moderate but not ubiquitous adoption
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 CRITICAL
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
No
Human Impact
High

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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