Description
OpenReplay is a self-hosted session replay suite. Prior to 1.26.0, there is a cross-tenant IDOR on feature-flag and assist-stats routes via {project_id} case mismatch. ProjectAuthorizer.__call__ (OSS api/auth/auth_project.py:14-38 and EE ee/api/auth/auth_project.py:14-46) only runs projects.is_authorized(project_id, tenant_id, user_id) + projects.get_project(tenant_id, project_id) when self.project_identifier == "projectId" (camelCase). For EE multi-tenant, feature-flag queries only filter on project_id, never tenant_id. Any authenticated user in tenant A can read/update/delete feature-flag rows belonging to tenant B by iterating the sequential integer project_id + feature_flag_id. OSS is single-tenant by design ({"errors":["tenants already registered"]} on second signup) so there's no cross-tenant impact This vulnerability is fixed in 1.26.0.
Published: 2026-05-28
Score: 5.3 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A cross‑tenant IDOR allows an authenticated user to read, update, or delete feature‑flag and assist‑stats data belonging to other tenants. The flaw arises because the project_identifier authorization guard is only applied when the request uses the camelCase "projectId" form, while the system accepts case‑mismatched alternative forms. In Enterprise Edition multi‑tenant installations, feature‑flag queries filter only on project_id and ignore tenant_id, enabling enumeration of sequential project identifiers to access data from any tenant. The lack of a tenant constraint, combined with the IDOR, jeopardizes data confidentiality and integrity for partners sharing the same deployment.

Affected Systems

The vulnerability exists in the OpenReplay session replay platform for all installations running a version older than 1.26.0. Both the OSS and EE deployments are affected, although the cross‑tenant impact is only present in EE multi‑tenant installations. The open‑source version is single‑tenant by design and does not suffer the cross‑tenant compromise, yet all installations should still upgrade because the fix also addresses the generic IDOR.

Risk and Exploitability

The CVSS base score of 5.3 indicates medium severity, reflecting limited impact if the attacker simply enumerates project IDs, but the inability to circumvent tenant boundaries is a serious concern in a shared environment. The EPSS score is not available, and the vulnerability is not currently listed in the CISA KEV catalog, suggesting it may not yet have widespread active exploitation. Attackers would need only authenticated access and the ability to iterate numerical project identifiers, which is typically trivial in an environment where tenant IDs are sequential. Therefore, the risk is moderate but potentially high in large, multi‑tenant deployments.

Generated by OpenCVE AI on May 28, 2026 at 19:27 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade OpenReplay to version 1.26.0 or later to apply the authorization fix.
  • Confirm that the project_identifier authorization check is active for all requests, regardless of identifier case.
  • If an upgrade cannot be performed immediately, restrict access to the feature‑flag and assist‑stats endpoints to privileged users and monitor for unauthorized enumeration attempts.

Generated by OpenCVE AI on May 28, 2026 at 19:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 28 May 2026 19:45:00 +0000

Type Values Removed Values Added
First Time appeared Openreplay
Openreplay openreplay
Vendors & Products Openreplay
Openreplay openreplay

Thu, 28 May 2026 18:00:00 +0000

Type Values Removed Values Added
Description OpenReplay is a self-hosted session replay suite. Prior to 1.26.0, there is a cross-tenant IDOR on feature-flag and assist-stats routes via {project_id} case mismatch. ProjectAuthorizer.__call__ (OSS api/auth/auth_project.py:14-38 and EE ee/api/auth/auth_project.py:14-46) only runs projects.is_authorized(project_id, tenant_id, user_id) + projects.get_project(tenant_id, project_id) when self.project_identifier == "projectId" (camelCase). For EE multi-tenant, feature-flag queries only filter on project_id, never tenant_id. Any authenticated user in tenant A can read/update/delete feature-flag rows belonging to tenant B by iterating the sequential integer project_id + feature_flag_id. OSS is single-tenant by design ({"errors":["tenants already registered"]} on second signup) so there's no cross-tenant impact This vulnerability is fixed in 1.26.0.
Title Cross-tenant IDOR on feature-flag and assist-stats routes via {project_id} case mismatch
Weaknesses CWE-285
CWE-639
CWE-863
References
Metrics cvssV4_0

{'score': 5.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

Openreplay Openreplay
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-05-28T16:50:38.672Z

Reserved: 2026-05-11T20:14:43.201Z

Link: CVE-2026-45297

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-05-28T18:16:34.643

Modified: 2026-05-28T18:40:37.990

Link: CVE-2026-45297

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-28T19:30:16Z

Weaknesses