/

CVE-2026-69136

Severity:

HIGH RISK

(7.1)

SQL Injection (CWE-89) in SuiteCRM Email Attachments

CVE-2026-69136

Undergoing Analysis

Vulnerability type

Category:

SQL Injection

CWE:

CWE-89

Impact:

Database information disclosure and unauthorized data modification

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 email template attachment handling builds a database update from the remove_attachment request parameter without safely separating data from SQL code. An authenticated attacker may exploit this behavior to disclose database information or soft-delete records in the notes table.

SuiteCRM's email template attachment handling builds a database update from the remove_attachment request parameter without safely separating data from SQL code. An authenticated attacker may exploit this behavior to disclose database information or soft-delete records in the notes table.

Affected context

The issue affects SuiteCRM email template attachment handling in versions before 7.15.2 and 8.10.2. It occurs when the remove_attachment POST parameter is processed and its elements are interpolated into an SQL UPDATE statement; the parameter's HTML-oriented securexss() processing does not provide SQL-specific protection.

The issue affects SuiteCRM email template attachment handling in versions before 7.15.2 and 8.10.2. It occurs when the remove_attachment POST parameter is processed and its elements are interpolated into an SQL UPDATE statement; the parameter's HTML-oriented securexss() processing does not provide SQL-specific protection.

Exploit preconditions

  • Attack surface: The email template attachment handling request.
  • Required access: An authenticated SuiteCRM account able to reach the affected functionality.
  • Trigger point: Processing of the remove_attachment POST parameter.
  • Why exploitation is possible: Parameter values are interpolated into SQL without safe parameter binding, allowing input to alter the statement's meaning.
  • Attack surface: The email template attachment handling request.
  • Required access: An authenticated SuiteCRM account able to reach the affected functionality.
  • Trigger point: Processing of the remove_attachment POST parameter.
  • Why exploitation is possible: Parameter values are interpolated into SQL without safe parameter binding, allowing input to alter the statement's meaning.

Why this happens

The application treats request data as safe for SQL after applying HTML-oriented XSS processing, then directly incorporates that data into an UPDATE statement. HTML escaping does not prevent SQL syntax from being interpreted by the database. This is CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection').

The application treats request data as safe for SQL after applying HTML-oriented XSS processing, then directly incorporates that data into an UPDATE statement. HTML escaping does not prevent SQL syntax from being interpreted by the database. This is CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection').

Potential impact

  • An attacker may disclose information stored in the database.
  • An attacker could abuse the UPDATE context to soft-delete records in the notes table.
  • Unauthorized data changes could affect CRM data integrity and availability.
  • An attacker may disclose information stored in the database.
  • An attacker could abuse the UPDATE context to soft-delete records in the notes table.
  • Unauthorized data changes could affect CRM data integrity and availability.

General mitigation guidance

Defensive patterns focus on keeping untrusted input separate from SQL structure:

  • Use parameterized queries or prepared statements for database operations.
  • Validate request values against an expected schema and allowlist of identifiers.
  • Do not rely on HTML or XSS sanitization as a substitute for SQL-safe handling.
  • Limit database account privileges to only the operations and tables the feature requires.
  • Apply authorization checks and review the impact of bulk update behavior.

Defensive patterns focus on keeping untrusted input separate from SQL structure:

  • Use parameterized queries or prepared statements for database operations.
  • Validate request values against an expected schema and allowlist of identifiers.
  • Do not rely on HTML or XSS sanitization as a substitute for SQL-safe handling.
  • Limit database account privileges to only the operations and tables the feature requires.
  • Apply authorization checks and review the impact of bulk update behavior.

How teams detect issues like this

  • Use static analysis to identify SQL statements assembled through string interpolation or concatenation with request data.
  • Review code paths that pass POST parameters through HTML sanitizers before database operations.
  • Check that database calls use parameter binding and that update operations are constrained to intended records.
  • Enforce code-review or CI policies that flag dynamic SQL construction involving untrusted input.
  • Use static analysis to identify SQL statements assembled through string interpolation or concatenation with request data.
  • Review code paths that pass POST parameters through HTML sanitizers before database operations.
  • Check that database calls use parameter binding and that update operations are constrained to intended records.
  • Enforce code-review or CI policies that flag dynamic SQL construction involving untrusted input.

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-3mjp-45mc-3256

Frequently asked

questions

Exploitation requires authentication and access to the affected email template attachment functionality.

Depending on the request and database context, an attacker may disclose database information or cause notes records to be soft-deleted.

Use parameterized queries so request values are treated as data, not SQL syntax, and validate inputs for the expected type and purpose.

Avoid constructing SQL from untrusted values, use least-privilege database accounts, and include static analysis and code review checks for dynamic SQL.

Exploitation requires authentication and access to the affected email template attachment functionality.

Depending on the request and database context, an attacker may disclose database information or cause notes records to be soft-deleted.

Use parameterized queries so request values are treated as data, not SQL syntax, and validate inputs for the expected type and purpose.

Avoid constructing SQL from untrusted values, use least-privilege database accounts, and include static analysis and code review checks for dynamic SQL.

Find out what's already
exploitable in your codebase.