/

CVE-2026-108799

Severity:

HIGH RISK

(7.3)

SQL Injection (CWE-89) in XCMS Password Recovery API

CVE-2026-108799

Deferred

Vulnerability type

Category:

SQL Injection

CWE:

CWE-74, CWE-89

Impact:

Unauthorized database access, data manipulation, and possible password recovery abuse

Severity:

HIGH RISK

(7.3)

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

XCMS contains a SQL injection vulnerability in the password recovery mail endpoint because the email argument is handled unsafely. A remote, unauthenticated attacker may be able to manipulate database queries through this endpoint, potentially exposing or altering application data.

XCMS contains a SQL injection vulnerability in the password recovery mail endpoint because the email argument is handled unsafely. A remote, unauthenticated attacker may be able to manipulate database queries through this endpoint, potentially exposing or altering application data.

Affected context

The vulnerability occurs in the PublicController::sendFindPwdMail function within the XCMS password recovery component. It becomes risky when the endpoint accepts attacker-controlled email input and incorporates that input into a database query without sufficiently separating data from SQL instructions. Deployments exposing the recovery endpoint over a network may therefore have a remotely reachable attack surface.

The vulnerability occurs in the PublicController::sendFindPwdMail function within the XCMS password recovery component. It becomes risky when the endpoint accepts attacker-controlled email input and incorporates that input into a database query without sufficiently separating data from SQL instructions. Deployments exposing the recovery endpoint over a network may therefore have a remotely reachable attack surface.

Exploit preconditions

  • Attack surface: The password recovery mail endpoint exposed through the web application
  • Required access: Typically no authenticated account, provided the endpoint is publicly reachable
  • Trigger point: Processing of the email argument by PublicController::sendFindPwdMail
  • Why exploitation is possible: Attacker-controlled input may reach a database query without adequate parameterization or contextual escaping
  • Additional condition: The application must be connected to a database and the vulnerable code path must be enabled
  • Attack surface: The password recovery mail endpoint exposed through the web application
  • Required access: Typically no authenticated account, provided the endpoint is publicly reachable
  • Trigger point: Processing of the email argument by PublicController::sendFindPwdMail
  • Why exploitation is possible: Attacker-controlled input may reach a database query without adequate parameterization or contextual escaping
  • Additional condition: The application must be connected to a database and the vulnerable code path must be enabled

Why this happens

The underlying bug is an injection flaw in which externally supplied email data is treated as part of a SQL statement rather than strictly as a value. When query construction does not use parameterized statements or an equivalent safe abstraction, special input can change the intended query structure. This is classified primarily as CWE-89, SQL Injection, and is also related to CWE-74, Improper Neutralization of Special Elements in Output Used by a Downstream Component.

The underlying bug is an injection flaw in which externally supplied email data is treated as part of a SQL statement rather than strictly as a value. When query construction does not use parameterized statements or an equivalent safe abstraction, special input can change the intended query structure. This is classified primarily as CWE-89, SQL Injection, and is also related to CWE-74, Improper Neutralization of Special Elements in Output Used by a Downstream Component.

Potential impact

  • An attacker may read sensitive records accessible to the database account.
  • An attacker could alter or delete application data.
  • Database credentials or other secrets may be exposed if stored in reachable tables.
  • Password recovery workflows may be abused, potentially contributing to account compromise.
  • The application or connected database service may experience disruption.
  • An attacker may read sensitive records accessible to the database account.
  • An attacker could alter or delete application data.
  • Database credentials or other secrets may be exposed if stored in reachable tables.
  • Password recovery workflows may be abused, potentially contributing to account compromise.
  • The application or connected database service may experience disruption.

General mitigation guidance

Mitigation generally focuses on ensuring that user-controlled values cannot

alter database query structure.

Common defensive patterns include:

  • Use parameterized queries, prepared statements, or trusted ORM APIs for all database operations.
  • Treat email addresses as untrusted input and validate them against an appropriate application-level format.
  • Avoid constructing SQL through string concatenation or interpolation.
  • Give the application database account only the permissions required by the recovery workflow.
  • Apply consistent error handling so database details are not disclosed to callers.
  • Add security-focused tests for recovery endpoints and enforce secure query patterns through development policy.

Mitigation generally focuses on ensuring that user-controlled values cannot

alter database query structure.

Common defensive patterns include:

  • Use parameterized queries, prepared statements, or trusted ORM APIs for all database operations.
  • Treat email addresses as untrusted input and validate them against an appropriate application-level format.
  • Avoid constructing SQL through string concatenation or interpolation.
  • Give the application database account only the permissions required by the recovery workflow.
  • Apply consistent error handling so database details are not disclosed to callers.
  • Add security-focused tests for recovery endpoints and enforce secure query patterns through development policy.

How teams detect issues like this

Organizations can look for this weakness through:

  • Static analysis rules that flag SQL string concatenation or interpolation involving request parameters.
  • Code review checks for database calls in password recovery and other public endpoints.
  • Dynamic testing that sends malformed and boundary-case input to identify unexpected query behavior without using destructive actions.
  • Database and application logs showing unusual recovery requests, query errors, or access patterns.
  • Policy enforcement requiring prepared statements or approved data-access abstractions.

Automated security review tools may help identify unsafe query construction, but findings should be validated against the actual data-access layer.

Organizations can look for this weakness through:

  • Static analysis rules that flag SQL string concatenation or interpolation involving request parameters.
  • Code review checks for database calls in password recovery and other public endpoints.
  • Dynamic testing that sends malformed and boundary-case input to identify unexpected query behavior without using destructive actions.
  • Database and application logs showing unusual recovery requests, query errors, or access patterns.
  • Policy enforcement requiring prepared statements or approved data-access abstractions.

Automated security review tools may help identify unsafe query construction, but findings should be validated against the actual data-access layer.

Sources

SourceLink
github.comgithub.com/wawyw/cve_report/blob/main/xcms_2.md
vuldb.comvuldb.com/cve/CVE-2026-108799
vuldb.comvuldb.com/submit/961602
vuldb.comvuldb.com/vuln/416576
vuldb.comvuldb.com/vuln/416576/cti

Frequently asked

questions

Yes. The reported attack path is remote when the XCMS password recovery

endpoint is reachable by an attacker. Authentication may not be required

because password recovery endpoints are commonly public, although deployment

controls can change the effective exposure.

The key requirement is access to submit requests to the affected endpoint and

control the email argument. The attacker does not necessarily need access

to the server or a valid user account.

Ensure the email value is passed to the database through parameterized queries

or a trusted ORM abstraction, while retaining suitable input validation and

least-privilege database permissions.

Establish secure database-access standards, prohibit query construction from

raw request data, review public workflows carefully, and combine static

analysis with targeted tests and monitoring for anomalous recovery activity.

Yes. The reported attack path is remote when the XCMS password recovery

endpoint is reachable by an attacker. Authentication may not be required

because password recovery endpoints are commonly public, although deployment

controls can change the effective exposure.

The key requirement is access to submit requests to the affected endpoint and

control the email argument. The attacker does not necessarily need access

to the server or a valid user account.

Ensure the email value is passed to the database through parameterized queries

or a trusted ORM abstraction, while retaining suitable input validation and

least-privilege database permissions.

Establish secure database-access standards, prohibit query construction from

raw request data, review public workflows carefully, and combine static

analysis with targeted tests and monitoring for anomalous recovery activity.

Find out what's already
exploitable in your codebase.