CVE-2026-40887
KrytyczneCVSS 9.1Prawdopodobieństwo exploitacji (EPSS)
Wysokie ryzykoPercentyl 78 - wyżej niż 78% wszystkich znanych CVE
Streszczenie
Vendure zawiera nieuwierzytelnioną podatność SQL injection w Shop API, gdzie parametr zapytania jest wstawiany bezpośrednio do surowego wyrażenia SQL bez parametryzacji. Dotyczy to wszystkich obsługiwanych baz danych (PostgreSQL, MySQL/MariaDB, SQLite), a Admin API również jest podatne, choć wymaga uwierzytelnienia. Podatność naprawiono w wersjach 2.3.4, 3.5.7 i 3.6.2, a dla osób niemogących natychmiast zaktualizować udostępniono hotfix walidujący languageCode.
Ocena ryzyka
Atakujący może wykonywać dowolne zapytania SQL przeciwko bazie danych bez uwierzytelnienia, co grozi wyciekiem, modyfikacją lub zniszczeniem danych. Może to prowadzić do pełnego przejęcia danych sklepu i naruszenia poufności.
Rekomendacja
Zaktualizuj Vendure do wersji 2.3.4, 3.5.7 lub 3.6.2. Jeśli aktualizacja nie jest możliwa natychmiast, zastosuj udostępniony hotfix walidujący languageCode.
Inne podatności w Vendure
Zobacz wszystkie- CVE-2026-63461Średnie
W Vendure przed wersją 3.6.5 publiczne zapytania Shop API dotyczące produktów, kolekcji i aspektów łączą obowiązkowe filtry widoczności z filtrami dostarczonymi przez wywołującego za pomocą kontrolowanego przez niego filterOperator. Gdy filterOperator ma wartość OR, predykat dopasowujący ukrytą encję może ominąć zabezpieczenia Product.enabled, Collection.isPrivate lub Facet.isPrivate. Nieuwierzytelniony wywołujący może w ten sposób pobrać wyłączone produkty oraz prywatne kolekcje lub aspekty.
- CVE-2026-63460Wysokie
Vendure w wersjach przed 3.6.5 pozwala nieuwierzytelnionemu użytkownikowi przesłać wzorzec wyrażenia regularnego powodujący katastrofalne cofanie się (catastrophic backtracking) przez StringOperators.regex w publicznym API GraphQL Shop. Wdrożenia oparte na better-sqlite3 i sqljs wykonują to wyrażenie synchronicznie w pętli zdarzeń Node.js, co może zablokować przetwarzanie żądań. Podatność została naprawiona w wersji 3.6.5.
- CVE-2026-63472Krytyczne
W Vendure funkcja createCustomerAndUser w zewnętrznym uwierzytelnianiu pobiera istniejące konto po adresie e-mail i łączy z nim nową metodę uwierzytelniania bez weryfikacji właściciela e-maila. Atakujący może użyć niezweryfikowanego e-maila, aby przejąć konto ofiary.
- CVE-2026-63459Wysokie
Vendure w wersjach przed 3.6.5 zawiera podatność typu stored XSS w komponencie RichTextDescriptionCell, który przypisuje kontrolowany przez administratora opis do innerHTML elementu, a następnie odczytuje textContent. Złośliwy znacznik może wykonać obsługę zdarzenia podczas przypisania do innerHTML, zanim odczytany zostanie textContent. Administrator o niższych uprawnieniach może zapisać taki znacznik w opisach widocznych na listach produktów, kolekcji, promocji, metod płatności lub metod wysyłki, a skrypt wykona się, gdy inny administrator wyświetli dany wiersz.
- CVE-2026-67347Średnie
Podatność w Vendure (do wersji 3.7.1) umożliwia administratorom z ograniczeniem do kanału (channel-scoped) modyfikację danych innych dzierżawców (tenantów) poprzez ominięcie walidacji izolacji kanałów. Atak polega na podaniu globalnych identyfikatorów encji StockLocation lub Asset z innych kanałów.
Oryginalny opis (angielski, źródło NVD)
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.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

