/

CVE-2026-108965

Severity:

HIGH RISK

(7.3)

SQL Injection (CWE-89) in Performance Indicator System

CVE-2026-108965

Deferred

Vulnerability type

Category:

SQL Injection

CWE:

CWE-74, CWE-89

Impact:

Unauthorized database access or modification

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

A SQL injection vulnerability in SourceCodester Performance Indicator System 1.0 allows attacker-controlled input in the pqty parameter to influence database queries. Because the affected endpoint is remotely reachable, an unauthenticated or insufficiently restricted attacker may be able to access or alter database information, depending on database permissions.

A SQL injection vulnerability in SourceCodester Performance Indicator System 1.0 allows attacker-controlled input in the pqty parameter to influence database queries. Because the affected endpoint is remotely reachable, an unauthenticated or insufficiently restricted attacker may be able to access or alter database information, depending on database permissions.

Affected context

The vulnerability occurs in the remote /opils/staff/edit_quantity.php endpoint when it processes the pqty parameter. It becomes risky when request data reaches database query construction without reliable parameterization, validation, or equivalent query-separation controls.

The vulnerability occurs in the remote /opils/staff/edit_quantity.php endpoint when it processes the pqty parameter. It becomes risky when request data reaches database query construction without reliable parameterization, validation, or equivalent query-separation controls.

Exploit preconditions

  • Attack surface: The remotely accessible staff quantity-editing endpoint - Required access: Potentially no authenticated access, depending on

application routing and access controls

  • Trigger point: Processing the pqty request parameter - Why exploitation is possible: Input may be incorporated into a database

query without sufficient separation between data and SQL instructions

  • Attack surface: The remotely accessible staff quantity-editing endpoint - Required access: Potentially no authenticated access, depending on

application routing and access controls

  • Trigger point: Processing the pqty request parameter - Why exploitation is possible: Input may be incorporated into a database

query without sufficient separation between data and SQL instructions

Why this happens

The underlying bug is improper handling of externally supplied input in a database query. When application code constructs SQL statements by combining untrusted values with query text, attacker-controlled content can change the intended query structure. This behavior maps primarily to CWE-89, SQL Injection; CWE-74 also reflects the broader failure to neutralize or constrain special elements in an interpreted command language.

The underlying bug is improper handling of externally supplied input in a database query. When application code constructs SQL statements by combining untrusted values with query text, attacker-controlled content can change the intended query structure. This behavior maps primarily to CWE-89, SQL Injection; CWE-74 also reflects the broader failure to neutralize or constrain special elements in an interpreted command language.

Potential impact

  • An attacker may read unauthorized database records.
  • An attacker could modify or delete application data.
  • Database integrity and application functionality may be affected.
  • Exposed database privileges could allow broader compromise of connected

services.

  • An attacker may read unauthorized database records.
  • An attacker could modify or delete application data.
  • Database integrity and application functionality may be affected.
  • Exposed database privileges could allow broader compromise of connected

services.

General mitigation guidance

Mitigation generally centers on ensuring that all database operations use parameterized queries or prepared statements rather than dynamically concatenated SQL. Input trust should be reduced through server-side type, range, and schema validation for quantity values, while validation should complement rather than replace query parameterization. Database accounts should use least privilege, sensitive endpoints should require appropriate authorization, and detailed database errors should not be exposed to clients. Secure-by-default data-access abstractions and centralized query handling can reduce inconsistent protection across the application.

Mitigation generally centers on ensuring that all database operations use parameterized queries or prepared statements rather than dynamically concatenated SQL. Input trust should be reduced through server-side type, range, and schema validation for quantity values, while validation should complement rather than replace query parameterization. Database accounts should use least privilege, sensitive endpoints should require appropriate authorization, and detailed database errors should not be exposed to clients. Secure-by-default data-access abstractions and centralized query handling can reduce inconsistent protection across the application.

How teams detect issues like this

Detection can include static analysis for string concatenation or formatting used to build SQL statements, especially near request parameters such as pqty. Code review should look for raw query APIs, missing prepared statements, weak authorization on data-editing endpoints, and validation that occurs only on the client side. Dynamic testing may monitor for database errors, unexpected query behavior, and anomalous requests, while policy enforcement can require parameterized database access patterns in CI. Neutral automated code-review and SAST tools may help identify these patterns.

Detection can include static analysis for string concatenation or formatting used to build SQL statements, especially near request parameters such as pqty. Code review should look for raw query APIs, missing prepared statements, weak authorization on data-editing endpoints, and validation that occurs only on the client side. Dynamic testing may monitor for database errors, unexpected query behavior, and anomalous requests, while policy enforcement can require parameterized database access patterns in CI. Neutral automated code-review and SAST tools may help identify these patterns.

Sources

SourceLink
github.comgithub.com/hubdk01/cve/issues/7
vuldb.comvuldb.com/cve/CVE-2026-108965
vuldb.comvuldb.com/submit/999115
vuldb.comvuldb.com/submit/999119
vuldb.comvuldb.com/vuln/416783
vuldb.comvuldb.com/vuln/416783/cti
sourcecodester.comsourcecodester.com/

Frequently asked

questions

Yes. The affected endpoint is described as remotely reachable, although practical

exploitability depends on routing, authentication, authorization, and deployment

configuration.

Not necessarily. The key requirement is access to the vulnerable endpoint and the

ability to supply the affected parameter; application access controls determine

whether authentication is required.

Use parameterized queries or prepared statements for every database operation,

combined with strict server-side validation and least-privilege database

permissions.

Standardize secure data-access APIs, prohibit dynamic SQL construction from

untrusted input, review authorization boundaries, and enforce SQL-injection

checks through code review, static analysis, and testing.

Yes. The affected endpoint is described as remotely reachable, although practical

exploitability depends on routing, authentication, authorization, and deployment

configuration.

Not necessarily. The key requirement is access to the vulnerable endpoint and the

ability to supply the affected parameter; application access controls determine

whether authentication is required.

Use parameterized queries or prepared statements for every database operation,

combined with strict server-side validation and least-privilege database

permissions.

Standardize secure data-access APIs, prohibit dynamic SQL construction from

untrusted input, review authorization boundaries, and enforce SQL-injection

checks through code review, static analysis, and testing.

Find out what's already
exploitable in your codebase.