Vendure: Shop API list queries can return non-public entities when filterOperator is OR
cve-program · CVE-2026-63461
PublishedVendure is an open-source headless commerce platform. Prior to 3.6.5, the public Shop API products, collections, and facets queries combine mandatory visibility guards with caller-supplied filters using the caller-controlled filterOperator. When filterOperator is OR, a predicate matching a hidden entity can bypass the Product.enabled, Collection.isPrivate, or Facet.isPrivate guard. An unauthenticated caller can therefore retrieve disabled products and private collections or facets. This issue is fixed in version 3.6.5.
Read the publisher's advisoryeuvd · EUVD-2026-81669
PublishedVendure is an open-source headless commerce platform. Prior to 3.6.5, the public Shop API products, collections, and facets queries combine mandatory visibility guards with caller-supplied filters using the caller-controlled filterOperator. When filterOperator is OR, a predicate matching a hidden entity can bypass the Product.enabled, Collection.isPrivate, or Facet.isPrivate guard. An unauthenticated caller can therefore retrieve disabled products and private collections or facets. This issue is fixed in version 3.6.5.
Read the publisher's advisorynvd · CVE-2026-63461
PublishedVendure is an open-source headless commerce platform. Prior to 3.6.5, the public Shop API products, collections, and facets queries combine mandatory visibility guards with caller-supplied filters using the caller-controlled filterOperator. When filterOperator is OR, a predicate matching a hidden entity can bypass the Product.enabled, Collection.isPrivate, or Facet.isPrivate guard. An unauthenticated caller can therefore retrieve disabled products and private collections or facets. This issue is fixed in version 3.6.5.
Read the publisher's advisoryosv · GHSA-xf65-r35x-wmmv
PublishedThe Shop API `products`, `collections` and `facets` queries inject a mandatory filter to restrict results to publicly-visible entities (`Product.enabled = true`, `Collection.isPrivate = false`, `Facet.isPrivate = false`). This injected guard was combined with the caller-supplied filter using the caller-controlled `filterOperator`. When a caller sets `filterOperator: OR`, the guard is OR-combined instead of AND-combined, so a caller can retrieve disabled products and private collections/facets by supplying a predicate that matches them. ### Impact Exposure of catalog entities intended to be hidden from the Shop API. The Shop API is publicly accessible, so no authentication is required. ### Patches The injected guard is now always AND-combined with the caller-supplied filter, regardless of `filterOperator`. ### Workarounds None other than upgrading.
Read the publisher's advisoryAffected versions, risk and source history
Related advisories and sources
Publishers link these advisories through the identifiers shown below. A shared identifier or date alone does not tell you whether your software is affected or whether the advisories describe the same cause.
CVE-2026-63461 · CVE overview and exploitation status
cve-program · CVE-2026-63461
- https://github.com/vendurehq/vendure/security/advisories/GHSA-xf65-r35x-wmmv
- https://github.com/vendurehq/vendure/commit/6daf5cb8571321eb6c6afa1d8e95a390c060be02
- https://github.com/vendurehq/vendure/releases/tag/v3.6.5
euvd · EUVD-2026-81669
- https://github.com/vendurehq/vendure/security/advisories/GHSA-xf65-r35x-wmmv
- https://github.com/vendurehq/vendure/commit/6daf5cb8571321eb6c6afa1d8e95a390c060be02
- https://github.com/vendurehq/vendure/releases/tag/v3.6.5
nvd · CVE-2026-63461
- https://github.com/vendurehq/vendure/commit/6daf5cb8571321eb6c6afa1d8e95a390c060be02
- https://github.com/vendurehq/vendure/releases/tag/v3.6.5
- https://github.com/vendurehq/vendure/security/advisories/GHSA-xf65-r35x-wmmv
osv · GHSA-xf65-r35x-wmmv
Related changes
Linked by CVE identifierNo related changes are available here.