Skip to main content
CVE-2026-87803VulnerabilityPublished 09/10/2026

CVE-2026-87803: countly-server · Countly DBViewer authorization bypass via nested aggregation stage poisoning

Affects Countly countly-serverSource GCVE Database

0

Not known to be exploited · CVSS 7.1 High.

Data as of 10/25/2026, 16:58:58 UTC

CVSS 4.0 base score
7.1High
How severe the flaw is on the 0–10 CVSS scale.
EPSS
0.3% chance of exploitation in 30 days – higher than 23% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 10 Sep 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponised: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 2026-10-25.

What to do

Affected software

ProductAffectedFixed in
Countly countly-serverAffected
  • 0
Fixed in–

AI-suggested

Until a fix is available, restrict DBViewer read permissions to trusted users only and monitor for suspicious use of aggregation queries. Avoid exposing the vulnerable aggregation endpoint to untrusted users.

Description

An authorization bypass vulnerability exists in the Countly Server DBViewer due to flawed sub-pipeline detection in the aggregation stage sanitizer. The /o/db aggregation endpoint parses user-controlled aggregation JSON and passes it through a stage sanitizer that determines whether a nested array is a sub-pipeline by checking if every element contains a key present in a hardcoded KNOWN_STAGE_OPERATORS set. If any element contains an unrecognized stage key, such as the undocumented MongoDB-internal $_internalInhibitOptimization, the sanitizer misclassifies the entire branch as a generic array and skips stage-level stripping for all sibling stages. This allows a non-admin user with DBViewer read permission to inject forbidden operators like $lookup inside $facet sub-pipelines, performing cross-collection joins into restricted collections. This leads to unauthorized read access to sensitive data including password-reset tokens (prid), enabling account takeover.

Impact

The flaw enables unauthorized read access to sensitive data by bypassing intended authorization controls. Specifically, it allows non-admin users with DBViewer read permission to perform cross-collection joins into restricted collections, exposing sensitive information including password-reset tokens. This can facilitate account takeover attacks. The vulnerability does not impact system integrity or availability but has a high confidentiality impact.

Weaknesses

  • CWE-863Incorrect Authorization (opens in a new tab)

    Class weaknessLikelihood of exploit: HighCWE Top 25 (2025): #17OWASP Top 10 A01:2025: Broken Access Control (opens in a new tab)

    The product performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly perform the check.

References

Community reviews

Loading reviews…