/

CVE-2026-108967

Severity:

HIGH RISK

(7.3)

SQL Injection (CWE-89) in Performance Indicator System

CVE-2026-108967

Deferred

Vulnerability type

Category:

SQL Injection

CWE:

CWE-74, CWE-89

Impact:

Unauthorized database access and manipulation

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

SourceCodester Performance Indicator System 1.0 contains a SQL injection vulnerability in the credit argument processed by /opils/staff/edit_credit.php.

A remote attacker may be able to manipulate database queries through crafted input, potentially accessing, changing, or destroying application data when the endpoint is reachable and input is not safely handled.

SourceCodester Performance Indicator System 1.0 contains a SQL injection vulnerability in the credit argument processed by /opils/staff/edit_credit.php.

A remote attacker may be able to manipulate database queries through crafted input, potentially accessing, changing, or destroying application data when the endpoint is reachable and input is not safely handled.

Affected context

The vulnerability occurs in the staff credit-editing functionality of Performance Indicator System 1.0. It becomes risky when the affected endpoint is remotely reachable and the credit parameter is incorporated into database queries without reliable parameterization or equivalent input-handling controls.

The vulnerability occurs in the staff credit-editing functionality of Performance Indicator System 1.0. It becomes risky when the affected endpoint is remotely reachable and the credit parameter is incorporated into database queries without reliable parameterization or equivalent input-handling controls.

Exploit preconditions

  • Attack surface: HTTP request handling for /opils/staff/edit_credit.php
  • Required access: Network access to the affected application; authentication requirements may depend on deployment and endpoint controls
  • Trigger point: Processing of the credit request argument
  • Why exploitation is possible: Attacker-controlled input may influence SQL query structure instead of being treated strictly as data
  • Attack surface: HTTP request handling for /opils/staff/edit_credit.php
  • Required access: Network access to the affected application; authentication requirements may depend on deployment and endpoint controls
  • Trigger point: Processing of the credit request argument
  • Why exploitation is possible: Attacker-controlled input may influence SQL query structure instead of being treated strictly as data

Why this happens

The underlying issue is an injection flaw in which externally supplied input is combined with a database query without sufficiently separating data from executable SQL syntax. This maps directly to CWE-89: Improper Neutralization of Special Elements used in an SQL Command (SQL Injection) and is also related to CWE-74: Improper Neutralization of Special Elements in Output Used by a Downstream Component.

The underlying issue is an injection flaw in which externally supplied input is combined with a database query without sufficiently separating data from executable SQL syntax. This maps directly to CWE-89: Improper Neutralization of Special Elements used in an SQL Command (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 unauthorized records
  • An attacker could modify or delete application data
  • Database integrity may be compromised
  • Application availability may be affected
  • Exposed database content could support further attacks
  • An attacker may read unauthorized records
  • An attacker could modify or delete application data
  • Database integrity may be compromised
  • Application availability may be affected
  • Exposed database content could support further attacks

General mitigation guidance

Mitigation generally focuses on ensuring that request data cannot alter SQL command structure.

Common defensive patterns include:

  • Using parameterized queries or prepared statements for all database operations
  • Applying allowlisted validation appropriate to the expected credit value
  • Avoiding dynamic SQL construction from request parameters
  • Restricting database accounts to the minimum required privileges
  • Separating application, reporting, and administrative database permissions
  • Returning generic database errors while recording useful security events internally
  • Applying consistent server-side validation rather than relying on client-side controls

Mitigation generally focuses on ensuring that request data cannot alter SQL command structure.

Common defensive patterns include:

  • Using parameterized queries or prepared statements for all database operations
  • Applying allowlisted validation appropriate to the expected credit value
  • Avoiding dynamic SQL construction from request parameters
  • Restricting database accounts to the minimum required privileges
  • Separating application, reporting, and administrative database permissions
  • Returning generic database errors while recording useful security events internally
  • Applying consistent server-side validation rather than relying on client-side controls

How teams detect issues like this

Detection approaches may include:

  • Static analysis for string concatenation or interpolation of request parameters into SQL statements
  • Code review of handlers that process credit and other numeric or form-based inputs
  • Dynamic application testing for unexpected database errors and anomalous query behavior
  • Web-application firewall or API policy rules for suspicious query-manipulation patterns
  • Database activity monitoring for unusual statements, privilege use, or access to unrelated tables
  • Automated security scanning and pull-request checks for injection-prone database access patterns

Detection approaches may include:

  • Static analysis for string concatenation or interpolation of request parameters into SQL statements
  • Code review of handlers that process credit and other numeric or form-based inputs
  • Dynamic application testing for unexpected database errors and anomalous query behavior
  • Web-application firewall or API policy rules for suspicious query-manipulation patterns
  • Database activity monitoring for unusual statements, privilege use, or access to unrelated tables
  • Automated security scanning and pull-request checks for injection-prone database access patterns

Sources

SourceLink
github.comgithub.com/hubdk01/cve/issues/9
vuldb.comvuldb.com/cve/CVE-2026-108967
vuldb.comvuldb.com/submit/999145
vuldb.comvuldb.com/vuln/416785
vuldb.comvuldb.com/vuln/416785/cti
sourcecodester.comsourcecodester.com/

Frequently asked

questions

Yes, the affected functionality is exposed through a remotely reachable web endpoint. Exploitability still depends on network exposure, routing, and any authentication or authorization controls protecting the endpoint.

The available description does not establish a required privilege level. An attacker needs access to the endpoint, while deployment-specific authentication and authorization settings may determine whether an account is necessary.

Use parameterized queries or prepared statements and validate the credit value on the server according to a strict expected format. Database privileges should also be limited.

Standardize safe database-access libraries, prohibit dynamic query construction from untrusted input, review data-flow paths during code review, and include injection testing in automated security checks.

Yes, the affected functionality is exposed through a remotely reachable web endpoint. Exploitability still depends on network exposure, routing, and any authentication or authorization controls protecting the endpoint.

The available description does not establish a required privilege level. An attacker needs access to the endpoint, while deployment-specific authentication and authorization settings may determine whether an account is necessary.

Use parameterized queries or prepared statements and validate the credit value on the server according to a strict expected format. Database privileges should also be limited.

Standardize safe database-access libraries, prohibit dynamic query construction from untrusted input, review data-flow paths during code review, and include injection testing in automated security checks.

Find out what's already
exploitable in your codebase.