/

CVE-2026-69134

Severity:

HIGH RISK

(8.8)

SQL Injection (CWE-89) in SuiteCRM REST v4 JSON Handler

CVE-2026-69134

Undergoing Analysis

Vulnerability type

Category:

SQL Injection

CWE:

CWE-89

Impact:

Database disclosure and modification; potential file write

Severity:

HIGH RISK

(8.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

SuiteCRM's REST v4 JSON relationship-write flow can place attacker-controlled field values into SQL statements without adequate handling. An authenticated user may exploit this to read or alter database data; file-write consequences may also be possible when the database account has elevated privileges.

SuiteCRM's REST v4 JSON relationship-write flow can place attacker-controlled field values into SQL statements without adequate handling. An authenticated user may exploit this to read or alter database data; file-write consequences may also be possible when the database account has elevated privileges.

Affected context

The issue occurs in the REST v4 JSON handler's relationship-write path. The flow reads the pre-filter RAW_REQUEST value and passes relationship data through helpers such as set_relationship, SugarRelationship::addRow(), and SugarRelationship::updateRow(), including the contact_role path. Risk depends on whether supplied values or related authorization state reach SQL construction without suitable validation and parameterization.

The issue occurs in the REST v4 JSON handler's relationship-write path. The flow reads the pre-filter RAW_REQUEST value and passes relationship data through helpers such as set_relationship, SugarRelationship::addRow(), and SugarRelationship::updateRow(), including the contact_role path. Risk depends on whether supplied values or related authorization state reach SQL construction without suitable validation and parameterization.

Exploit preconditions

  • Attack surface: REST v4 JSON relationship-write operations
  • Required access: An authenticated account able to invoke an affected operation
  • Trigger point: Processing a relationship field during an insert or update
  • Why exploitation is possible: Attacker-controlled values can reach SQL statement construction through the request and relationship helper flow
  • Privilege dependency: Potential file-write impact depends on the database account's privileges
  • Attack surface: REST v4 JSON relationship-write operations
  • Required access: An authenticated account able to invoke an affected operation
  • Trigger point: Processing a relationship field during an insert or update
  • Why exploitation is possible: Attacker-controlled values can reach SQL statement construction through the request and relationship helper flow
  • Privilege dependency: Potential file-write impact depends on the database account's privileges

Why this happens

The underlying issue is SQL injection, mapped to CWE-89. Relationship helper logic interpolates supplied field values into INSERT and UPDATE statements rather than consistently treating them as data through parameterized queries. Reading pre-filter request data can also leave untrusted values in the path to these security-sensitive operations.

The underlying issue is SQL injection, mapped to CWE-89. Relationship helper logic interpolates supplied field values into INSERT and UPDATE statements rather than consistently treating them as data through parameterized queries. Reading pre-filter request data can also leave untrusted values in the path to these security-sensitive operations.

Potential impact

  • An attacker may read data accessible to the application's database account
  • An attacker could alter database records, including relationship data
  • Elevated database privileges may allow file-write consequences
  • Data integrity or availability may be affected
  • An attacker may read data accessible to the application's database account
  • An attacker could alter database records, including relationship data
  • Elevated database privileges may allow file-write consequences
  • Data integrity or availability may be affected

General mitigation guidance

Mitigation generally focuses on separating SQL structure from data and reducing trust in request-derived values.

Common defensive patterns include:

  • Use parameterized queries or prepared statements for all relationship writes
  • Validate and normalize values against explicit field types and allowlists
  • Apply authorization checks to the target records and operations independently of request-supplied state
  • Limit database-account privileges to only those required by the application
  • Centralize safe query construction and avoid interpolating request values into SQL

Mitigation generally focuses on separating SQL structure from data and reducing trust in request-derived values.

Common defensive patterns include:

  • Use parameterized queries or prepared statements for all relationship writes
  • Validate and normalize values against explicit field types and allowlists
  • Apply authorization checks to the target records and operations independently of request-supplied state
  • Limit database-account privileges to only those required by the application
  • Centralize safe query construction and avoid interpolating request values into SQL

How teams detect issues like this

High-level detection approaches include:

  • Static analysis for SQL strings assembled with request-derived or relationship-field values
  • Code review of RAW_REQUEST handling and paths through relationship write helpers
  • Checks that database operations use parameter binding consistently
  • Policy enforcement that flags dynamic SQL construction in application code
  • Reviewing database permissions and monitoring for unexpected query or file-operation activity

High-level detection approaches include:

  • Static analysis for SQL strings assembled with request-derived or relationship-field values
  • Code review of RAW_REQUEST handling and paths through relationship write helpers
  • Checks that database operations use parameter binding consistently
  • Policy enforcement that flags dynamic SQL construction in application code
  • Reviewing database permissions and monitoring for unexpected query or file-operation activity

Sources

SourceLink
github.comgithub.com/SuiteCRM/SuiteCRM-Core/commit/a11f50180d939f639cc468b5d536e8ad714dfb68
github.comgithub.com/SuiteCRM/SuiteCRM-Core/releases/tag/v8.10.2
github.comgithub.com/SuiteCRM/SuiteCRM/commit/d6bca97a0159ec019a969b86eca32affab3beb7c
github.comgithub.com/SuiteCRM/SuiteCRM/releases/tag/v7.15.2
github.comgithub.com/SuiteCRM/SuiteCRM/security/advisories/GHSA-3phg-q9w9-4pqw

Frequently asked

questions

The affected surface is a REST endpoint, so an authenticated user who can reach and invoke an affected relationship-write operation may be able to exploit it.

Authentication is required. The account must also have permission to invoke an affected operation; the specific scope depends on the deployment's authorization rules.

Use parameterized queries for relationship writes, validate values according to expected types, and enforce authorization independently of request data.

Treat request values as untrusted, review data flows into SQL construction, enforce least privilege for database accounts, and use automated checks for unsafe dynamic SQL.

The affected surface is a REST endpoint, so an authenticated user who can reach and invoke an affected relationship-write operation may be able to exploit it.

Authentication is required. The account must also have permission to invoke an affected operation; the specific scope depends on the deployment's authorization rules.

Use parameterized queries for relationship writes, validate values according to expected types, and enforce authorization independently of request data.

Treat request values as untrusted, review data flows into SQL construction, enforce least privilege for database accounts, and use automated checks for unsafe dynamic SQL.

Find out what's already
exploitable in your codebase.