---
id: CVE-2026-87803
title: >-
  An authorization bypass vulnerability exists in the Countly Server DBViewer
  due to flawed sub-pipeline detection in the aggregation stage sanitizer
summary: >-
  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 thr…
severity: high
cvss: 7.1
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N'
cwe:
  - CWE-863
vendor: Countly
product: countly-server
affected:
  - countly-server < 25.03.53-LTS
published: '2026-09-10'
updated: '2026-09-10'
sourceUpdated: '2026-09-10T15:53:23.707'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-87803'
references:
  - url: 'https://github.com/Countly/countly-server/pull/7868'
    label: report@snyk.io
tags:
  - nvd
  - cve.org
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-09-10T13:16:57.956270Z'
ingestedAt: '2026-09-10T10:46:34.730Z'
epss: 0.00181
epssPercentile: 0.07973
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
