High severity · published May 26, 2026
CVE-2026-44729
Twenty: Stored Cross-Site Scripting via Unsanitized File Serving (Missing Content-Type/Content-Disposition Headers)
8.7
CVSS
0.3%
EPSS
No
On KEV
Description
Twenty is an open source CRM. In 1.18.0 and earlier, the file serving endpoints in Twenty CRM at /files/* and /file/:fileFolder/:id serve uploaded files using fileStream.pipe(res) without setting any Content-Type, Content-Disposition, or X-Content-Type-Options response headers. This allows an authenticated attacker to upload an HTML file containing JavaScript, which will be rendered by the victim's browser in the context of the Twenty CRM domain when accessed — enabling session hijacking, account takeover, and data theft.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
Attack vector
Network
Complexity
Low
Privileges
Low
User interaction
Required
Confidentiality
High
Integrity
High
Availability
None
Scope
Changed
Exploitation
Is it being used?
Exploit prediction (EPSS)0.3% · higher than 17% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
TW
twenty · twentyhq
<= 1.18.0 · source: vendor, NVD
Affected product
TW
twenty
twentyhq
More from twenty
9.9
CVE-2026-46624
Twenty: SQL Injection via the timeZone field
9.6
CVE-2026-105763
Twenty: Plaintext IMAP/SMTP/CalDAV password disclosure to any workspace member via /metadata GraphQL
9.1
CVE-2026-73069
Twenty: SQL Injection in the `searchVector` Field Settings Allows Arbitrary PostgreSQL Execution
8.3
CVE-2026-33975
twenty-server SSRF protection bypass via IPv4-mapped IPv6 address normalization
7.6
CVE-2026-55583
Twenty: Cross-workspace IDOR in AgentTurnResolver