Twenty CRM
CVE-2026-105763
CRITICAL
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as normal workspace member
-
ExploitIssue /metadata connectedAccounts GraphQL query
-
ExecutionHarvest plaintext IMAP/SMTP/CalDAV passwords
-
ImpactAccess victims' external mail and calendar accounts
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V6 - Authentication Credential protection in transit/storage
|
| Exploitation Conditions | Exploitation requires an authenticated low-privilege account in the target Twenty workspace (PR:L) and that the workspace contains at least one connected account configured via IMAP, SMTP, or CalDAV (password-based) credentials - these are the only credentials exposed by the ConnectedAccountDTO.connectionParameters field. Workspaces using exclusively Google or Microsoft OAuth-based connections are not affected because those flows store no plaintext password. Affected versions are 1.20.10 up to (but not including) 2.7.0. The limiting factor is the membership requirement: a fully external, unauthenticated attacker cannot reach the query, so realistic risk centers on malicious insiders, over-provisioned members, or compromised member accounts. |
| Impact | This is a genuine high-priority issue, not an inflated CVSS score. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H) is internally consistent with the description: a GraphQL query over the network, low attack complexity, and only low privileges (any normal workspace member) are needed, with no user interaction. The scope change (S:C) is well justified because the leaked IMAP/SMTP/CalDAV credentials grant access to external mail and calendar systems beyond Twenty itself, and the source-code diff confirms the root cause - ConnectedAccountDTO exposed a |
| Exploit ScenarioDerived | A low-privileged member of a Twenty workspace (e.g., a sales rep or a recently invited user) issues the /metadata GraphQL |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Plaintext IMAP, SMTP, and CalDAV passwords belonging to other workspace members are disclosed to any authenticated low-privilege member of Twenty CRM versions 1.20.10 up to (but not including) 2.7.0 through the /metadata GraphQL connectedAccounts query, which returned the full ConnectedAccountDTO object - including the connectionParameters field - without hiding the password or enforcing the calling user's identity or account visibility. A normal workspace member can harvest those external-service credentials and use them to access other users' mail and calendars, and potentially to reset third-party accounts. Workspaces configured solely with Google or Microsoft OAuth connections store no plaintext password and are unaffected, and no public exploit code has been identified at time of analysis. Exploitation requires an authenticated account (CVSS PR:L), so realistic risk centers on malicious insiders, over-provisioned members, or compromised member accounts rather than unauthenticated external attackers.
RemediationAI
Vendor-released patch: upgrade Twenty to version 2.7.0 or later, which is the release that ships the schema changes from PR 20673 (ConnectionParametersOutput no longer carries a password, ConnectedAccountDTO is replaced by ConnectedAccountPublicDTO, and saveImapSmtpCaldavAccount no longer accepts an accountOwnerId), per the advisory at https://github.com/twentyhq/twenty/security/advisories/GHSA-mq5c-qp77-2cv3. Treat every credential that was reachable before upgrading as compromised: rotate the passwords for all IMAP, SMTP, and CalDAV accounts connected by any workspace member and re-authenticate the connections, and review mail/calendar access logs for the affected accounts for unauthorized reads or password-reset flows. If immediate upgrade is not possible, restrict membership to fully trusted users, since the query is only reachable by an authenticated workspace member (PR:L) - this reduces but does not eliminate insider risk and removes the benefit of multi-member collaboration; alternatively, temporarily block or rate-limit the /metadata GraphQL connectedAccounts operation at the reverse proxy or API gateway, accepting that legitimate clients and integrations that call that query will break until the patch is applied. Migrating password-based connections to Google or Microsoft OAuth also removes the exposed plaintext password material, at the cost of the per-connection setup effort and loss of non-OAuth provider support. No compensating control fully substitutes for the 2.7.0 upgrade, because the flaw is in the default GraphQL resolver response shape rather than in an optional feature that can be cleanly disabled.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Twenty is an open-source CRM whose metadata API is exposed over GraphQL (/metadata). The affected object is ConnectedAccountDTO, which models a user's linked external account and embedded a nested ImapSmtpCaldavConnectionParameters type containing ConnectionParametersOutput objects with a mandatory plaintext 'password: String!' field for the IMAP, SMTP, and CALDAV slots. Because that field was not stripped or redacted on the ConnectedAccountDTO read path, and because the connectedAccounts resolver did not scope results to the caller's identity or the account's visibility setting, any workspace member could request the query and receive colleagues' stored third-party credentials. This is CWE-522 (Insufficiently Protected Credentials): sensitive authentication material was stored and then surfaced in cleartext to a principal that should never have had access to it. The upstream fix (PR 20673, commit 57f13c9b9230f3c4c293ea6f3d8901990e6902c4) restructures the schema rather than merely hiding a field: ConnectionParametersOutput loses its password member and becomes PublicConnectionParametersOutput, ConnectedAccountDTO is replaced by ConnectedAccountPublicDTO backed by PublicImapSmtpCaldavConnectionParameters (host, port, username, secure only), the myConnectedAccounts/connectedAccounts/deleteConnectedAccount resolvers are re-typed to return the public DTO, and the saveImapSmtpCaldavAccount mutation drops its accountOwnerId argument - removing the ability for a caller to act on another user's account while also making the write-side password input optional. CPE cpe:2.3:a:twentyhq:twenty:*:*:*:*:*:*:*:* covers the Twenty server distribution; only installations with password-based (IMAP/SMTP/CalDAV) connections actually hold data matching the exposed field, since Google/Microsoft OAuth-only flows persist tokens rather than plaintext passwords.
Know when Twenty gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
Network GraphQL query (AV:N/AC:L) needs only workspace membership (PR:L, UI:N); leaked external credentials cross into mail/calendar systems (S:C) enabling read and modify (C:H/I:H), with no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
Twenty is an open-source CRM (customer relationship management) platform. From 1.20.10 until 2.7.0, the /metadata GraphQL connectedAccounts query returned connectionParameters from ConnectedAccountDTO for every connected account in a workspace, including plaintext IMAP, SMTP, and CalDAV passwords, because the field was not hidden and the lookup did not enforce the calling user's identity or account visibility. A normal workspace member could obtain other members' external-service credentials and use them to access mail or calendars and potentially reset third-party accounts. Google and Microsoft OAuth-only workspaces were not affected. This issue is fixed in version 2.7.0.
Technical POC Analysis
CWE-522 Insufficiently Protected Credentials.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Twenty CRM versions 1.20.10 through any release before 2.7.0 expose plaintext IMAP, SMTP, and CalDAV credentials belonging to workspace members to any authenticated low-privilege user via the /metadata GraphQL connectedAccounts query. This enables a malicious insider or compromised member account to access colleagues' email and calendars and potentially reset third-party accounts, creating a high-risk credential and data confidentiality exposure for organizations using non-OAuth integrations. Leadership should prioritize containment and credential rotation because exploitation requires an authenticated account but can lead to widespread lateral compromise of external services.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict /metadata GraphQL endpoint to trusted admins, block or filter the connectedAccounts query via WAF or reverse proxy, rotate all IMAP/SMTP/CalDAV credentials stored in Twenty CRM, migrate to OAuth-only connections, limit workspace membership to least privilege, and monitor logs for unauthorized credential access.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)CVE.org
Twenty CRM v1.15.0 has a code injection vulnerability enabling remote attackers to execute arbitrary code through the CR
The CRM platform Twenty is vulnerable to stored cross site scripting via file upload in version 0.3.0. Rated high severi
Remote code execution in Twenty CRM versions 1.7.7 through 1.16.7 allows authenticated users to execute arbitrary OS com
The CRM platform Twenty version 0.3.0 is vulnerable to SSRF via file upload. Rated medium severity (CVSS 5.4), this vuln
SQL injection in Twenty, an open-source CRM platform, lets a workspace administrator holding the DATA_MODEL permission i
Stored cross-site scripting in Twenty CRM versions 1.18.0 and earlier allows authenticated users to upload HTML/JavaScri
Server-side request forgery (SSRF) in Twenty CRM allows authenticated users to bypass IP filtering protections and acces
Cross-workspace data disclosure in Twenty CRM before 2.9.0 lets any authenticated user holding the AI settings flag (a w
Field-level read permission bypass in Twenty CRM before 2.22.0 lets an authenticated workspace member or API key that is
Twenty CRM before 2.35.0 fails to enforce field- and row-level permission checks inside the groupBy-with-records GraphQL
Stored cross-site scripting in Twenty CRM versions prior to 1.20.6 allows authenticated attackers to inject malicious Ja
OAuth authorization code forwarding to attacker-controlled hosts is enabled by an open redirect flaw in Twenty CRM throu
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB