CVE-2026-73069
KrytyczneCVSS 9.1Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 51 - wyżej niż 51% wszystkich znanych CVE
Streszczenie
Twenty przed wersją 2.15.0 pozwala administratorowi z uprawnieniem DATA_MODEL na dostarczenie niesprawdzonego wyrażenia dla pola TS_VECTOR, co prowadzi do wstrzyknięcia SQL i wykonania dowolnych zapytań PostgreSQL jako użytkownik aplikacji.
Ocena ryzyka
Atakujący z uprawnieniami administratora może wykonać dowolne polecenia SQL, co może prowadzić do naruszenia danych lub przejęcia bazy danych.
Rekomendacja
Zaktualizuj Twenty do wersji 2.15.0 lub nowszej. Ogranicz uprawnienia administratorów i monitoruj zmiany w definicjach pól.
Inne podatności w Twenty
Zobacz wszystkie- CVE-2026-105763Krytyczne
Twenty to platforma CRM o otwartym kodzie źródłowym. Od wersji 1.20.10 do 2.7.0 zapytanie GraphQL /metadata connectedAccounts zwracało connectionParameters z ConnectedAccountDTO dla każdego konta w przestrzeni roboczej, w tym hasła IMAP, SMTP i CalDAV w postaci jawnego tekstu, ponieważ pole nie było ukryte, a wyszukiwanie nie wymuszało tożsamości ani widoczności konta. Zwykły członek przestrzeni roboczej mógł uzyskać poświadczenia usług zewnętrznych innych członków i wykorzystać je do dostępu do poczty lub kalendarzy oraz potencjalnie zresetować konta osób trzecich. Przestrzenie robocze korzystające wyłącznie z OAuth Google i Microsoft nie były dotknięte. Problem naprawiono w wersji 2.7.0.
- CVE-2026-85055Wysokie
Twenty to otwarta platforma CRM. Przed wersją 2.22.0 uprawnienia do odczytu na poziomie pola są egzekwowane dla wybranych pól wyjściowych, ale nie dla predykatów filtrów GraphQL lub REST. Członek przestrzeni roboczej lub klucz API z uprawnieniem do odczytu obiektu, ale bez dostępu do konkretnego pola, może odwołać się do tego pola w filtrach bezpośrednich, relacyjnych lub zapisanych, a wynikowe totalCount i obecność wierszy ujawniają, czy zgadywane wartości pasują do rzeczywistej kolumny, tworząc wyrocznię boolean/count.
- CVE-2026-92771Średnie
Twenty w wersjach przed 2.35.0 nie waliduje uprawnień do pól i wierszy w resolverze GraphQL groupBy-with-records, co pozwala uwierzytelnionym użytkownikom obejść kontrole uprawnień. Atakujący z uprawnieniem canReadObjectRecords, ale bez canReadFieldValue, może odczytać zastrzeżone wartości pól przez resolver groupBy, które normalnie byłyby zablokowane.
- CVE-2026-82274Średnie
Twenty do wersji 2.35.0 zawiera podatność na otwarte przekierowanie w punkcie końcowym OAuthPropagatorController.propagateOAuthCallback, który traktuje parametr state jako adres URL przekierowania. Atakujący mogą tworzyć złośliwe żądania, aby przekierować użytkowników na dowolne hosty, jednocześnie przekazując kody autoryzacji OAuth, omijając walidację domeny, gdy IS_MULTIWORKSPACE_ENABLED jest wyłączone.
- CVE-2026-33975Wysokie
Twenty (CRM open source) w wersjach 1.18.0 i wcześniejszych ma podatność SSRF, w której ochrona w SecureHttpClientService może być ominięta przez użycie adresów IPv4 zamapowanych na IPv6 w literałach IP URL. Node.js normalizuje takie adresy do skompresowanej postaci szesnastkowej, ale funkcja isPrivateIp rozpoznaje tylko notację dziesiętną z kropkami.
- CVE-2026-35451Średnie
Twenty to otwartoźródłowy system CRM. W wersjach przed 1.20.6 w komponencie edytora BlockNote występuje podatność Stored XSS — z powodu braku walidacji protokołu w komponencie FileBlock i niewystarczającej kontroli zawartości bloków po stronie serwera atakujący może wstrzyknąć URI javascript: do właściwości url bloku pliku, co pozwala na wykonanie dowolnego JavaScriptu po kliknięciu załącznika.
Oryginalny opis (angielski, źródło NVD)
Twenty is an open-source CRM (customer relationship management) platform. Prior to 2.15.0, Twenty allowed a workspace administrator with the DATA_MODEL permission to supply settings.asExpression for the system TS_VECTOR field searchVector through PATCH /rest/metadata/fields/:id or the updateOneField GraphQL mutation, causing buildSqlColumnDefinition in packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/build-sql-column-definition.util.ts to concatenate unescaped input into GENERATED ALWAYS AS (...) and execute arbitrary PostgreSQL statements as the application database user. This issue is fixed in version 2.15.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

