CVE-2026-44729
Analyzed Analyzed - Analysis Complete
Stored XSS in Twenty CRM via Unsafe File Serving

Publication date: 2026-05-26

Last updated on: 2026-05-27

Assigner: GitHub, Inc.

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 Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-05-26
Last Modified
2026-05-27
Generated
2026-06-16
AI Q&A
2026-05-26
EPSS Evaluated
2026-06-14
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
twenty twenty to 1.18.0 (inc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-79 The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Executive Summary

CVE-2026-44729 is a Stored Cross-Site Scripting (XSS) vulnerability in Twenty CRM versions up to 1.18.0. The vulnerability arises because the file serving endpoints at /files/* and /file/:fileFolder/:id serve uploaded files without setting important HTTP response headers such as Content-Type, Content-Disposition, or X-Content-Type-Options.

This allows an authenticated attacker with Member role privileges to upload malicious HTML files containing JavaScript. When a victim accesses the uploaded file URL, the JavaScript executes in the context of the Twenty CRM domain.

The root cause is the use of fileStream.pipe(res) without setting security headers and a lack of file type validation during upload. Attackers exploit this by uploading malicious HTML files and tricking administrators or other users into accessing them.

Impact Analysis

This vulnerability can lead to serious security impacts including session hijacking, account takeover, privilege escalation, and data theft.

Because the malicious JavaScript runs in the context of the Twenty CRM domain, attackers can gain full session access and exfiltrate sensitive data.

The CVSS score of 8.7 (High) reflects the severity of these impacts.

Detection Guidance

This vulnerability can be detected by identifying if the Twenty CRM instance is serving files from the endpoints /files/* or /file/:fileFolder/:id without proper HTTP response headers such as Content-Type, Content-Disposition, or X-Content-Type-Options.

You can use HTTP request commands to check the response headers for these endpoints to see if the headers are missing or improperly set.

  • Use curl to inspect headers of a file URL: curl -I https://your-twenty-crm-domain/files/somefile
  • Look specifically for missing Content-Type, Content-Disposition, or X-Content-Type-Options headers in the response.
  • Check for the presence of uploaded HTML files by authenticated users, especially those uploaded via the uploadWorkflowFile mutation.
Mitigation Strategies

Immediate mitigation steps include setting proper HTTP response headers on the file serving endpoints to prevent execution of malicious scripts.

  • Configure the server to set Content-Type, Content-Disposition, and X-Content-Type-Options headers when serving files.
  • Implement file type validation and sanitization beyond just SVG files to prevent uploading of malicious HTML or JavaScript files.
  • Consider serving uploaded files from a separate domain to isolate them from the main application domain.
  • Restrict file upload permissions to trusted users and monitor uploaded files for suspicious content.
Compliance Impact

The vulnerability allows authenticated attackers to upload malicious HTML files that execute JavaScript in the context of the Twenty CRM domain, leading to session hijacking, account takeover, privilege escalation, and data theft.

Such unauthorized access and data theft can result in violations of data protection regulations like GDPR and HIPAA, which require safeguarding personal and sensitive information against unauthorized access and breaches.

Therefore, this vulnerability negatively impacts compliance with these common standards by exposing user data to potential theft and misuse.

Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-44729. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart