---
id: "CVE-2026-42270"
kind: "vulnerability"
aliases: ["CVE-2026-42270"]
title: "Countly server: unauthenticated image request crashes Node process, denying service"
severity: "high"
cvss: 7.5
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["analytics", "countly", "node.js", "package", "self-hosted"]
not_affected_if: ["managed-hosting", "non-fs-storage-backend", "patched-version"]
published_at: "2026-10-16T16:17:23+00:00"
first_seen_at: "2026-10-23T21:57:13+00:00"
updated_at: "2026-10-25T03:25:04+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-42270", "first_seen_at": "2026-10-23T21:57:13+00:00"}]
---

# Countly server: unauthenticated image request crashes Node process, denying service

Countly's server-side image and screenshot routes on the local filesystem backend pass a directory to a stream without an error handler when a URL-encoded dot is present. An unauthenticated attacker can repeatedly send such requests to crash the Node.js process and keep the analytics API unavailable.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Countly server version in `package.json` of the countly-server install; affected if below `24.05.50` on the 24.05 line or below `25.03.44` on the 25.03 line
- Check whether the file storage backend is in use (local fs) and whether the routes `/appimages/*`, `/memberimages/*`, `*/screenshots/*` or `star-rating/images/` are reachable from the internet

## Fix

- Upgrade countly-server to `24.05.50` or `25.03.44` (the fixed release on each line)
- Restart the Countly process after upgrading

## Timeline

- 2026-10-23T21:57:13+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-42270

## From the sources

countly-server is the server-side part of Countly, a product analytics solution. Prior to 24.05.50 and 25.03.44, star-rating/images/ and dashboards/images/screenshots/ are among public image and screenshot routes using the local fs storage backend that call getStream and pipe filesystem streams to HTTP responses without an error listener. An unauthenticated request containing a URL-encoded dot can make createReadStream open a directory, emit an asynchronous EISDIR error, and terminate the Node.js process as an unhandled exception, allowing repeated requests to keep the analytics API unavailable. The affected routes also include /appimages/*, /memberimages/*, and */screenshots/*. This issue is fixed in versions 24.05.50 and 25.03.44.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
