Skip to main content

Twenty CRM CVE-2026-105763

CRITICAL
Insufficiently Protected Credentials (CWE-522)
2026-10-05 GitHub_M
9.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as normal workspace member
  2. Exploit
    Issue /metadata connectedAccounts GraphQL query
  3. Execution
    Harvest plaintext IMAP/SMTP/CalDAV passwords
  4. Impact
    Access 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 password field via the connectedAccounts/myConnectedAccounts queries with no per-user authorization. No EPSS score, CISA KEV listing, or public POC was provided in the input, so there is no public exploit identified at time of analysis and exploitation probability cannot be quantified from the data given; the absence of these signals should not be read as low risk given the trivial exploitability. The main mitigating factor is the PR:L requirement - an attacker must already be a member of the target workspace - making this an insider/compromised-account threat rather than a fully external one. Note the Google and Microsoft tags are potentially misleading: the description explicitly states Google and Microsoft OAuth-only workspaces are NOT affected, so these tags may cause incorrect scoping.

Exploit ScenarioDerived

A low-privileged member of a Twenty workspace (e.g., a sales rep or a recently invited user) issues the /metadata GraphQL connectedAccounts query and receives the plaintext IMAP, SMTP, and CalDAV passwords of every colleague who connected a non-OAuth mail or calendar account. The attacker then logs into those external mail/calendar services directly and can read correspondence or attempt password resets on third-party accounts tied to those mailboxes. No public exploit was identified at time of analysis, but the attack requires only a standard GraphQL request and no special tooling.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Vendor (GitHub_M) PRIMARY 9.6 CRITICAL
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
vuln.today AI 9.6 CRITICAL

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:H/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Low
open-source CRM, growing adoption but limited enterprise production footprint
Social Media
4
Sightings
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

48
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +48
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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

cpe:2.3:a:twentyhq:twenty:*:*:*:*:*:*:*:*

More in Twenty

View all
CVE-2026-26720 CRITICAL POC
9.8 Mar 02

Twenty CRM v1.15.0 has a code injection vulnerability enabling remote attackers to execute arbitrary code through the CR

CVE-2024-28434 HIGH POC
7.6 Mar 25

The CRM platform Twenty is vulnerable to stored cross site scripting via file upload in version 0.3.0. Rated high severi

CVE-2026-46624 CRITICAL
9.9 May 26

Remote code execution in Twenty CRM versions 1.7.7 through 1.16.7 allows authenticated users to execute arbitrary OS com

CVE-2024-28435 MEDIUM POC
5.4 Mar 25

The CRM platform Twenty version 0.3.0 is vulnerable to SSRF via file upload. Rated medium severity (CVSS 5.4), this vuln

CVE-2026-73069 CRITICAL
9.1 Aug 11

SQL injection in Twenty, an open-source CRM platform, lets a workspace administrator holding the DATA_MODEL permission i

CVE-2026-44729 HIGH
8.7 May 26

Stored cross-site scripting in Twenty CRM versions 1.18.0 and earlier allows authenticated users to upload HTML/JavaScri

CVE-2026-33975 HIGH
8.3 May 05

Server-side request forgery (SSRF) in Twenty CRM allows authenticated users to bypass IP filtering protections and acces

CVE-2026-55583 HIGH
7.6 Jun 24

Cross-workspace data disclosure in Twenty CRM before 2.9.0 lets any authenticated user holding the AI settings flag (a w

CVE-2026-85055 HIGH
7.1 Sep 22

Field-level read permission bypass in Twenty CRM before 2.22.0 lets an authenticated workspace member or API key that is

CVE-2026-92771 HIGH
7.1 Sep 16

Twenty CRM before 2.35.0 fails to enforce field- and row-level permission checks inside the groupBy-with-records GraphQL

CVE-2026-35451 MEDIUM
5.7 Apr 21

Stored cross-site scripting in Twenty CRM versions prior to 1.20.6 allows authenticated attackers to inject malicious Ja

CVE-2026-82274 MEDIUM
5.3 Aug 28

OAuth authorization code forwarding to attacker-controlled hosts is enabled by an open redirect flaw in Twenty CRM throu

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy