Every CVESearch/Get API key

CVE-2026-125325

pgEdge RAG Server shared keyword index leaked results between concurrent unauthenticated requests

5.9 MediumFix available

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.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
None
Availability
None

Exploit likelihood

0.27%Unchanged since Nov 11, 2026
90%50%10%1%

What each source reports

CVE List Score used5.9

pgEdge RAG Server shared keyword index leaked results between concurrent unauthenticated requests

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.

Record
CVE-2026-125325
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-362, CWE-488
Updated
2026-11-10
EUVDEUVD-2026-1217075.9

pgEdge RAG Server shared keyword index leaked results between concurrent unauthenticated requests

Record
EUVD-2026-121707
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-12
GitHub AdvisoriesGHSA-w437-9mwm-j6vq5.9

pgEdge RAG Server shared keyword index leaked results between concurrent unauthenticated requests

Impact

Documents belonging to one caller could be returned to another. Where an application passes a customer or tenant identifier as a search filter, that scoping could be defeated by ordinary concurrent traffic. No injection and no malformed input are required — normal load is enough.

The BM25 keyword index was a single per-pipeline object shared by every request. A request cleared it, refilled it from its own filtered corpus and then searched it, taking a separate lock for each step rather than holding the sequence as a unit. Concurrent requests therefore interleaved, and a search could run against a corpus that a different request's filter had populated.

Who is affected: any deployment of pgEdge RAG Server at 1.0.0 or earlier, including all alpha and beta pre-releases, that serves concurrent queries — most acutely those relying on a search filter to separate tenants or customers. The query endpoint is unauthenticated in the affected versions (internal/server/middleware.go:37 applies logging, panic recovery and optional CORS only), so both the party whose results leak and the party receiving them are anonymous remote callers.

Patches

Fixed in 2.0.0. Upgrade to 2.0.0 or later.

The index is now built per request rather than shared. The regression is pinned by TestSearch_ConcurrentRequestsDoNotShareKeywordIndex in internal/pipeline/orchestrator_test.go.

Upgrading does not tell a developer whether or not their application affected, and needs action beyond upgrading. If a consuminag application scopes results by tenant, treat responses served under concurrent load on any affected version as potentially having included another tenant's documents. Affected responses cannot be identified from the server's own logs, so there is no retrospective check available.

Workarounds

Set hybrid_enabled: false on the pipeline, which skips the keyword arm and with it the shared index. Callers can also pass disable_hybrid per request, which can only ever turn the arm off.

Neither is a substitute for upgrading.

Record
GHSA-w437-9mwm-j6vq
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-362, CWE-488
Updated
2026-11-12
NVD5.9

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.

Record
CVE-2026-125325
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-362, CWE-488
Updated
2026-11-10
OSV5.9

pgEdge RAG Server shared keyword index leaked results between concurrent unauthenticated requests

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.

Record
CVE-2026-125325
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-362, CWE-488
Updated
2026-11-12
OSVGHSA-w437-9mwm-j6vq5.9

pgEdge RAG Server shared keyword index leaked results between concurrent unauthenticated requests

Impact

Documents belonging to one caller could be returned to another. Where an application passes a customer or tenant identifier as a search filter, that scoping could be defeated by ordinary concurrent traffic. No injection and no malformed input are required — normal load is enough.

The BM25 keyword index was a single per-pipeline object shared by every request. A request cleared it, refilled it from its own filtered corpus and then searched it, taking a separate lock for each step rather than holding the sequence as a unit. Concurrent requests therefore interleaved, and a search could run against a corpus that a different request's filter had populated.

Who is affected: any deployment of pgEdge RAG Server at 1.0.0 or earlier, including all alpha and beta pre-releases, that serves concurrent queries — most acutely those relying on a search filter to separate tenants or customers. The query endpoint is unauthenticated in the affected versions (internal/server/middleware.go:37 applies logging, panic recovery and optional CORS only), so both the party whose results leak and the party receiving them are anonymous remote callers.

Patches

Fixed in 2.0.0. Upgrade to 2.0.0 or later.

The index is now built per request rather than shared. The regression is pinned by TestSearch_ConcurrentRequestsDoNotShareKeywordIndex in internal/pipeline/orchestrator_test.go.

Upgrading does not tell a developer whether or not their application affected, and needs action beyond upgrading. If a consuminag application scopes results by tenant, treat responses served under concurrent load on any affected version as potentially having included another tenant's documents. Affected responses cannot be identified from the server's own logs, so there is no retrospective check available.

Workarounds

Set hybrid_enabled: false on the pipeline, which skips the keyword arm and with it the shared index. Callers can also pass disable_hybrid per request, which can only ever turn the arm off.

Neither is a substitute for upgrading.

Record
GHSA-w437-9mwm-j6vq
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-362, CWE-488
Updated
2026-11-12

Affected products

Affected packages

Affected packages
PackageAffectedFixed
github.com/pgEdge/pgedge-rag-server
Go
before 1.0.1-0.20260729020411-a09d4872356b
1.0.1-0.20260729020411-a09d4872356b

History

History
RecordedChangedSources
publishedEUVD
affected, referencesOSV
affected, facts, referencesGitHub Advisories, OSV
aliases, referencesNVD, OSV
aliases, publishedEUVD
first indexedCVE List

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-125325 is a medium vulnerability (CVSS 5.9) in Pgedge Pgedge-rag-server, published November 10, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.27%, the 19th percentile. Fixed in github.com/pgEdge/pgedge-rag-server 1.0.1-0.20260729020411-a09d4872356b.

References

MoveEnter Open