CVE-2026-125325: pgEdge RAG Server: race condition leaks cross-tenant docs
MEDIUMpgEdge RAG Server before 2.0.0 shares a single BM25 keyword index per pipeline across concurrent requests on its unauthenticated query endpoint, so one request can search a corpus that was populated by another request's search filter. This can return documents belonging to a different tenant or customer, and because the affected responses cannot be identified retrospectively from server logs, you cannot reliably scope who saw what after the fact. Risk is moderated by a CVSS of 5.9 (high attack complexity, confidentiality-only impact), no EPSS data, no CISA KEV listing, no public exploit and no Nuclei template, and downstream adoption is unknown. Still, any multi-tenant RAG deployment holding customer-segregated or regulated data should treat this as a potential data-breach and compliance concern. Upgrade to v2.0.0 (GHSA-w437-9mwm-j6vq) and restrict network access to the query endpoint until then.
What is the risk?
Medium overall (CVSS 3.1: 5.9). Network-reachable with no privileges or user interaction, but exploitation depends on a race between concurrent requests (high attack complexity). Impact is limited to confidentiality, but that includes cross-tenant document disclosure. The query endpoint is unauthenticated, which raises exposure when it is internet-facing. No known exploitation, no KEV listing, no public exploit and no EPSS score is available, so near-term likelihood appears low. The lack of forensic traceability raises the compliance and incident-response risk beyond what the CVSS suggests. Multi-tenant deployments face the highest risk.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| pgedge-rag-server | — | — | No patch |
Do you use pgedge-rag-server? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade pgEdge RAG Server to v2.0.0 or later (see PR #44 and commit a09d487). 2) Until patched, put the query endpoint behind authentication or a gateway and limit it to trusted networks. 3) For multi-tenant use, deploy separate pipelines or instances per tenant so no BM25 index is shared. 4) Serialize or rate-limit concurrent queries on affected pipelines as a stopgap. 5) Add request-level logging of returned document IDs and tenant identifiers, because existing logs cannot reconstruct exposure. 6) Review whether tenant-segregated data was served on affected versions and involve privacy/legal teams if sensitive data was in scope.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-125325?
pgEdge RAG Server before 2.0.0 shares a single BM25 keyword index per pipeline across concurrent requests on its unauthenticated query endpoint, so one request can search a corpus that was populated by another request's search filter. This can return documents belonging to a different tenant or customer, and because the affected responses cannot be identified retrospectively from server logs, you cannot reliably scope who saw what after the fact. Risk is moderated by a CVSS of 5.9 (high attack complexity, confidentiality-only impact), no EPSS data, no CISA KEV listing, no public exploit and no Nuclei template, and downstream adoption is unknown. Still, any multi-tenant RAG deployment holding customer-segregated or regulated data should treat this as a potential data-breach and compliance concern. Upgrade to v2.0.0 (GHSA-w437-9mwm-j6vq) and restrict network access to the query endpoint until then.
Is CVE-2026-125325 actively exploited?
No confirmed active exploitation of CVE-2026-125325 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-125325?
1) Upgrade pgEdge RAG Server to v2.0.0 or later (see PR #44 and commit a09d487). 2) Until patched, put the query endpoint behind authentication or a gateway and limit it to trusted networks. 3) For multi-tenant use, deploy separate pipelines or instances per tenant so no BM25 index is shared. 4) Serialize or rate-limit concurrent queries on affected pipelines as a stopgap. 5) Add request-level logging of returned document IDs and tenant identifiers, because existing logs cannot reconstruct exposure. 6) Review whether tenant-segregated data was served on affected versions and involve privacy/legal teams if sensitive data was in scope.
What systems are affected by CVE-2026-125325?
This vulnerability affects the following AI/ML architecture patterns: RAG pipelines, vector databases, multi-tenant AI applications, hybrid search (BM25 + vector).
What is the CVSS score for CVE-2026-125325?
CVE-2026-125325 has a CVSS v3.1 base score of 5.9 (MEDIUM). The EPSS exploitation probability is 0.27%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0036Data from Information RepositoriesAML.T0049Exploit Public-Facing ApplicationAML.T0085.000RAG DatabasesCompliance Controls Affected
What are the technical details?
Original Advisory
pgEdge RAG Server is an API server for retrieval-augmented generation over PostgreSQL content using pgvector. Prior to 2.0.0, the BM25 keyword index is a single per-pipeline object shared by the unauthenticated query endpoint, and concurrent requests lock its clear, refill, and search operations separately. This allows one request to search a corpus populated through another request's search filter, which can return documents belonging to a different tenant or customer without malformed input. The affected responses cannot be identified retrospectively from the server logs. This issue is fixed in version 2.0.0.
Exploitation Scenario
An attacker finds an exposed pgEdge RAG Server query endpoint backing a multi-tenant SaaS assistant. They send a steady stream of concurrent queries with varied filters while legitimate tenants are also querying. When the attacker's search lands between another request's clear and refill steps, it runs against that tenant's filtered corpus and returns their documents. The attacker repeats this to harvest snippets of confidential content, and because the server logs cannot attribute the leaked responses, the victim may never detect it.
Weaknesses (CWE)
CWE-362Concurrent Execution using Shared Resource with Improper SynchronizationPrimaryCWE-488Exposure of Data Element to Wrong SessionPrimaryCWE-362Concurrent Execution using Shared Resource with Improper SynchronizationCWE-488Exposure of Data Element to Wrong SessionCWE-362 — Concurrent Execution using Shared Resource with Improper Synchronization: The product contains a concurrent code sequence that requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence operating concurrently.
- [Architecture and Design] In languages that support it, use synchronization primitives. Only wrap these around critical code to minimize the impact on performance.
- [Architecture and Design] Use thread-safe capabilities such as the data access abstraction in Spring.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:NReferences
- github.com/pgEdge/pgedge-rag-server/commit/a09d4872356b510c81f11591845445c33ff45a84x_refsource_MISC
- github.com/pgEdge/pgedge-rag-server/pull/44x_refsource_MISC
- github.com/pgEdge/pgedge-rag-server/releases/tag/v2.0.0x_refsource_MISC
- github.com/pgEdge/pgedge-rag-server/security/advisories/GHSA-w437-9mwm-j6vqx_refsource_CONFIRM
Timeline
Related Vulnerabilities
CVE-2025-512010.0smolagents: sandbox escape enables unauthenticated RCE
Same attack type: Data LeakageCVE-2025-5376710.0Azure OpenAI: SSRF EoP, no auth required (CVSS 10)
Same attack type: Data ExtractionCVE-2023-376510.0MLflow: path traversal allows arbitrary file read
Same attack type: Data LeakageCVE-2025-282810.0LangChain RequestsToolkit: SSRF exposes cloud metadata
Same attack type: Data ExtractionCVE-2026-2185810.0n8n: Input Validation flaw enables exploitation
Same attack type: Data Extraction