CVE-2026-33975
WysokieCVSS 8.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 15 - wyżej niż 15% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Uwierzytelniony użytkownik może dotrzeć do dowolnego wewnętrznego adresu IP, w tym endpointów metadanych chmury, i wyeksfiltrować poświadczenia, takie jak klucze IAM.
Rekomendacja
Należy zaktualizować Twenty do wersji nowszej niż 1.18.0, która zawiera poprawkę usuwającą tę lukę.
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-73069Krytyczne
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.
- 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.
Oryginalny opis (angielski, źródło NVD)
Twenty is an open source CRM built with NestJS (Node.js). In versions 1.18.0 and earlier, the SSRF protection in twenty-server's SecureHttpClientService can be bypassed using IPv4-mapped IPv6 addresses in URL IP literals. Node.js's URL parser normalizes IPv4-mapped IPv6 addresses to compressed hex form (e.g., ::ffff:169.254.169.254 becomes ::ffff:a9fe:a9fe), but the isPrivateIp utility only recognizes the dotted-decimal notation. As a result, the hex form passes the SSRF check unchecked. Additionally, the socket lookup validation event does not fire for IP literal addresses, bypassing the second validation layer. An authenticated user can reach any internal IP, including cloud metadata endpoints, to exfiltrate credentials such as IAM keys.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

