CVE-2026-40887
CriticalCVSS 9.1Exploitation Probability (EPSS)
High risk78th percentile - higher than 78% of all known CVEs
Summary
Vendure contains an unauthenticated SQL injection vulnerability in the Shop API where a user-controlled query parameter is interpolated directly into a raw SQL expression without parameterization. This affects all supported database backends (PostgreSQL, MySQL/MariaDB, SQLite), and the Admin API is also affected though exploitation requires authentication. The issue is fixed in versions 2.3.4, 3.5.7, and 3.6.2, with a hotfix available for those unable to upgrade immediately.
Risk Assessment
An attacker can execute arbitrary SQL against the database without authentication, risking data exfiltration, modification, or destruction. This can lead to full compromise of store data and confidentiality breaches.
Recommendation
Upgrade Vendure to version 2.3.4, 3.5.7, or 3.6.2. If immediate upgrade is not possible, apply the provided hotfix that validates languageCode.
Other vulnerabilities in Vendure
See all- CVE-2026-63461Medium
In Vendure prior to 3.6.5, 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.
- CVE-2026-63460High
Vendure prior to 3.6.5 allows an unauthenticated caller to supply a catastrophically backtracking regular expression pattern through StringOperators.regex in the public Shop GraphQL API. Deployments using better-sqlite3 and sqljs evaluate the pattern synchronously in the Node.js event loop, which can block request processing. The issue is fixed in version 3.6.5.
- CVE-2026-63472Critical
In Vendure, the createCustomerAndUser function in external authentication matches an existing customer by email address and attaches a new external authentication method without requiring verification. An attacker can use an unverified email to hijack the victim's account.
- CVE-2026-63459High
Vendure prior to 3.6.5 contains a stored XSS vulnerability in RichTextDescriptionCell, which assigns an administrator-controlled description to a live element's innerHTML and then reads textContent. Active resource markup can execute an event handler during the innerHTML assignment before textContent is read. A lower-privilege administrator can store such markup in descriptions rendered by the Products, Collections, Promotions, Payment Methods, or Shipping Methods lists, and script executes when another administrator views the affected row.
- CVE-2026-67347Medium
A vulnerability in Vendure (up to version 3.7.1) allows channel-scoped administrators to modify other tenants' data by bypassing channel isolation validation. The attack involves supplying global IDs of StockLocation or Asset entities from different channels.
Original NVD description (English source)
Vendure is an open-source headless commerce platform. Starting in version 1.7.4 and prior to versions 2.3.4, 3.5.7, and 3.6.2, an unauthenticated SQL injection vulnerability exists in the Vendure Shop API. A user-controlled query string parameter is interpolated directly into a raw SQL expression without parameterization or validation, allowing an attacker to execute arbitrary SQL against the database. This affects all supported database backends (PostgreSQL, MySQL/MariaDB, SQLite). The Admin API is also affected, though exploitation there requires authentication. Versions 2.3.4, 3.5.7, and 3.6.2 contain a patch. For those who are unable to upgrade immediately, Vendure has made a hotfix available that uses `RequestContextService.getLanguageCode` to validate the `languageCode` input at the boundary. This blocks injection payloads before they can reach any query. The hotfix replaces the existing `getLanguageCode` method in `packages/core/src/service/helpers/request-context/request-context.service.ts`. Invalid values are silently dropped and the channel's default language is used instead. The patched versions additionally convert the vulnerable SQL interpolation to a parameterized query as defense in depth.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

