CVE-2026-73069: Twenty: SQL Injection in the `searchVector` Field Settings Allows Arbitrary PostgreSQL Execution
Twenty is an open-source CRM (customer relationship management) platform. Prior to 2.15.0, Twenty allowed a workspace administrator with the DATA_MODEL permission to supply settings.asExpression for the system TS_VECTOR field searchVector through PATCH /rest/metadata/fields/:id or the updateOneField GraphQL mutation, causing buildSqlColumnDefinition in packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/build-sql-column-definition.util.ts to concatenate unescaped input into GENERATED ALWAYS AS (...) and execute arbitrary PostgreSQL statements as the application database user. This issue is fixed in version 2.15.0.
Security readout for executives and security teams
Plain-English summary
A privileged Twenty workspace administrator can abuse field settings to make the CRM database execute unauthorized SQL. Successful exploitation could expose, alter, or destroy CRM data and may affect resources accessible to Twenty’s database account. Twenty versions before 2.15.0 are affected; version 2.15.0 fixes the issue.
Executive priority
Treat affected deployments as an urgent patching priority, especially where many administrators hold DATA_MODEL permission or CRM data is sensitive. Upgrade promptly, review privileged access, and investigate suspicious searchVector schema changes. Immediate incident declaration is not justified solely by this record because active exploitation is not established.
Technical view
CVE-2026-73069 is a CWE-89 SQL injection in Twenty. An administrator with DATA_MODEL permission can place an unsafe expression in the system searchVector field through the REST or GraphQL update interface. The server concatenates that input into a PostgreSQL generated-column definition, enabling arbitrary statements under the application database user. CVSS 3.1 is 9.1.
Likely exposure
Exposure requires Twenty earlier than 2.15.0 and an account holding workspace-administrator DATA_MODEL permission. Network-accessible metadata interfaces provide the vulnerable path, but the source bundle does not establish anonymous or low-privilege exploitation. Impact depends on the permissions assigned to Twenty’s PostgreSQL application user.
Exploitation context
The provided record is not marked as CISA KEV, and the supplied sources do not report active exploitation. Exploitation requires high privileges but has low complexity once those privileges are held. Risk is therefore concentrated around compromised, malicious, or excessively privileged administrator accounts.
Researcher notes
The vulnerable sink is buildSqlColumnDefinition, where settings.asExpression reaches a GENERATED ALWAYS AS expression without adequate escaping. Reported entry points are PATCH /rest/metadata/fields/:id and the updateOneField GraphQL mutation. The fixed release is 2.15.0. The bundle does not describe public exploit availability, observed attacks, or exact database privilege boundaries.
Mitigation direction
Upgrade Twenty to version 2.15.0 or later.
Restrict DATA_MODEL permission to administrators who require it.
Review vendor guidance before applying compensating controls or backports.
Limit the Twenty database account to necessary PostgreSQL privileges.
Temporarily restrict metadata field updates if upgrading cannot occur promptly.
Validation and detection
Inventory all Twenty deployments and confirm their running versions.
Verify upgraded instances report version 2.15.0 or later.
Review accounts and roles holding DATA_MODEL permission.
Inspect metadata changes involving the system searchVector field or expression settings.
Review database and application logs for unusual schema changes or SQL errors.
Confirm the PostgreSQL application user has only required privileges.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · medium confidence lookup
CWE-89: Database access and collection lookup
Injection into data stores can inform collection, data access, and exfiltration detection reviews. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references database injection or access, so collection and exfiltration review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
1ADP providers
4Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: pocAutomatable: noTechnical Impact: total
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.