/

CVE-2026-69135

Severity:

HIGH RISK

(7.1)

SQL Injection (CWE-89) in SuiteCRM Project Module API

CVE-2026-69135

Undergoing Analysis

Vulnerability type

Category:

SQL Injection

CWE:

CWE-89

Impact:

Sensitive database information disclosure

Severity:

HIGH RISK

(7.1)

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 Project module places the authenticated caller's duplicateId POST parameter directly into a SQL query without parameterization or adequate sanitization. An authenticated attacker may manipulate the query and disclose sensitive information from the database.

SuiteCRM's Project module places the authenticated caller's duplicateId POST parameter directly into a SQL query without parameterization or adequate sanitization. An authenticated attacker may manipulate the query and disclose sensitive information from the database.

Affected context

The issue occurs in the Project module when it handles a request containing the duplicateId POST parameter and incorporates that value into a SQL query. SuiteCRM versions before 7.15.2 and 8.10.2 are affected; the risk depends on the vulnerable code path being reachable by an authenticated user.

The issue occurs in the Project module when it handles a request containing the duplicateId POST parameter and incorporates that value into a SQL query. SuiteCRM versions before 7.15.2 and 8.10.2 are affected; the risk depends on the vulnerable code path being reachable by an authenticated user.

Exploit preconditions

  • Attack surface: The Project module's request handling for the duplicateId POST parameter
  • Required access: An authenticated SuiteCRM account with access to the relevant functionality
  • Trigger point: Processing a request that uses duplicateId to construct a SQL query
  • Why exploitation is possible: The parameter is interpolated into SQL without sanitization, quoting, or parameterization, allowing query structure to be altered
  • Attack surface: The Project module's request handling for the duplicateId POST parameter
  • Required access: An authenticated SuiteCRM account with access to the relevant functionality
  • Trigger point: Processing a request that uses duplicateId to construct a SQL query
  • Why exploitation is possible: The parameter is interpolated into SQL without sanitization, quoting, or parameterization, allowing query structure to be altered

Why this happens

The application treats caller-controlled input as part of SQL syntax rather than as data. Directly interpolating the duplicateId value into a query creates a SQL injection flaw, mapped to CWE-89: Improper Neutralization of Special Elements used in an SQL Command.

The application treats caller-controlled input as part of SQL syntax rather than as data. Directly interpolating the duplicateId value into a query creates a SQL injection flaw, mapped to CWE-89: Improper Neutralization of Special Elements used in an SQL Command.

Potential impact

  • An attacker may disclose sensitive information stored in the database.
  • Query manipulation could expose data beyond what the affected operation is intended to return.
  • Depending on database permissions and query context, broader data integrity or confidentiality risks could arise.
  • An attacker may disclose sensitive information stored in the database.
  • Query manipulation could expose data beyond what the affected operation is intended to return.
  • Depending on database permissions and query context, broader data integrity or confidentiality risks could arise.

General mitigation guidance

Common defensive patterns for this class of issue include:

  • Use parameterized queries or prepared statements so caller input is handled strictly as data.
  • Apply allowlist validation when the value is expected to follow a constrained format, without relying on validation as a substitute for query parameterization.
  • Limit the database account's permissions to those required by the application.
  • Centralize database access patterns and review query construction for other uses of caller-controlled values.

Common defensive patterns for this class of issue include:

  • Use parameterized queries or prepared statements so caller input is handled strictly as data.
  • Apply allowlist validation when the value is expected to follow a constrained format, without relying on validation as a substitute for query parameterization.
  • Limit the database account's permissions to those required by the application.
  • Centralize database access patterns and review query construction for other uses of caller-controlled values.

How teams detect issues like this

  • Use static analysis to identify SQL statements built through string concatenation or interpolation with request parameters.
  • Review database access code for direct use of POST values, especially in the Project module's duplicateId handling.
  • Enforce code-review or CI policies requiring parameterized queries for values supplied by users.
  • Monitor application and database logs for unusual query errors or access patterns, while avoiding the storage of sensitive input in logs.
  • Use static analysis to identify SQL statements built through string concatenation or interpolation with request parameters.
  • Review database access code for direct use of POST values, especially in the Project module's duplicateId handling.
  • Enforce code-review or CI policies requiring parameterized queries for values supplied by users.
  • Monitor application and database logs for unusual query errors or access patterns, while avoiding the storage of sensitive input in logs.

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-gcc4-hvpc-cgvv

Frequently asked

questions

It can be triggered through the application's request-handling path, but exploitation requires an authenticated account and access to the relevant Project module functionality.

The attacker must be authenticated and able to submit a request that reaches the code handling duplicateId.

Use parameterized queries or prepared statements so input values cannot change the structure of SQL commands.

Prefer parameterized database APIs, review query construction for user-controlled values, and use automated checks and code-review policies to discourage unsafe SQL interpolation.

It can be triggered through the application's request-handling path, but exploitation requires an authenticated account and access to the relevant Project module functionality.

The attacker must be authenticated and able to submit a request that reaches the code handling duplicateId.

Use parameterized queries or prepared statements so input values cannot change the structure of SQL commands.

Prefer parameterized database APIs, review query construction for user-controlled values, and use automated checks and code-review policies to discourage unsafe SQL interpolation.

Find out what's already
exploitable in your codebase.