Description
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.
Published: 2026-05-05
Score: 8.3 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Twenty is an open‑source CRM that uses NestJS and a custom SecureHttpClientService for HTTP requests. An SSRF check is intended to block requests to internal IP addresses by calling an isPrivateIp utility. However, Node.js normalizes IPv4‑mapped IPv6 literals (for example ::ffff:169.254.169.254 becomes ::ffff:a9fe:a9fe) before the check, and the utility only recognizes dotted‑decimal notation. Consequently, requests constructed with the hex form bypass the private‑IP filter and the socket lookup validation never fires for literal IP targets. An attacker who can authenticate to the server therefore can reach any internal address, including cloud metadata endpoints, to exfiltrate sensitive data such as IAM keys. The weakness is a classic Server Side Request Forgery (CWE‑918).

Affected Systems

The affected product is Twenty, the open‑source CRM built by twentyhq. Versions 1.18.0 and earlier are vulnerable. The threat arises from the server side component that performs outbound HTTP calls via the SecureHttpClientService.

Risk and Exploitability

The CVSS score is 8.3, indicating high severity. The EPSS score is not available and the vulnerability is not currently listed in CISA’s KEV catalog. Because authentication is required to invoke the vulnerable functionality, the exploit still requires attacker access to a legitimate user account. Nevertheless, once logged in the server can reach any internal network, exposing sensitive configuration and credentials. The likely attack vector involves an authenticated user submitting a crafted URL containing an IPv4‑mapped IPv6 address to trigger the bypass.

Generated by OpenCVE AI on May 5, 2026 at 20:21 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Twenty application to the latest release that fixes the SSRF check for hex‑formatted IPv6 literals.
  • Restrict the container or host’s outbound network access to block the RFC1918 and private IPv4 ranges as well as internal metadata service IPs, using firewall rules or security group settings.
  • Implement logging and monitoring for outbound HTTP requests to internal addresses and alert on unexpected destinations.

Generated by OpenCVE AI on May 5, 2026 at 20:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 05 May 2026 19:30:00 +0000

Type Values Removed Values Added
Description 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.
Title twenty-server SSRF protection bypass via IPv4-mapped IPv6 address normalization
Weaknesses CWE-918
References
Metrics cvssV4_0

{'score': 8.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-05-05T19:19:18.112Z

Reserved: 2026-03-24T22:20:06.210Z

Link: CVE-2026-33975

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-05-05T20:16:36.777

Modified: 2026-05-05T20:24:04.853

Link: CVE-2026-33975

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-05T20:30:31Z

Weaknesses