CVE Catalog

CVE-2026-40887

CriticalCVSS 9.1
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

High risk
1.76%

78th 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
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