Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as application administrator
-
DeliveryUpload active content via uploadFeedbackFile with spoofed MIME
-
ExploitLure global admin to open feedback preview
-
ExecutionPayload executes in Countly origin
-
ImpactExfiltrate 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
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.
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, 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
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.
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
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Countly Server
View allArbitrary 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 path traversal in Countly Server before 24.05.50 and 25.03.44 lets remote attackers read arbitrary files
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-102918
NVD
CVE.org
GitHub
Exploit-DB