CVE-2026-93972 Overview
CVE-2026-93972 is a SQL injection vulnerability in SourceCodester Online Reviewer Management System 1.0. The flaw resides in the /reviewer_0/admins/assessments/course/btn_functions.php file, where the courseID parameter is passed to a database query without proper sanitization. Attackers can manipulate the parameter to execute arbitrary SQL statements against the backend database. The vulnerability is remotely exploitable and requires no authentication or user interaction. Public disclosure of the exploit details has occurred through VulDB and GitHub, increasing the likelihood of opportunistic attacks against exposed installations.
Critical Impact
Unauthenticated remote attackers can inject arbitrary SQL through the courseID parameter, potentially exposing or modifying data stored in the application database.
Affected Products
- SourceCodester Online Reviewer Management System 1.0
- Component: /reviewer_0/admins/assessments/course/btn_functions.php
- Vulnerable parameter: courseID
Discovery Timeline
- 2026-09-20 - CVE-2026-93972 published to the National Vulnerability Database
- 2026-09-24 - Last updated in NVD database
Technical Details for CVE-2026-93972
Vulnerability Analysis
The vulnerability is a classic SQL injection flaw categorized under CWE-74 (Improper Neutralization of Special Elements in Output Used by a Downstream Component). The affected script btn_functions.php accepts the courseID argument from a client request and concatenates it directly into a SQL query. Because the parameter is not sanitized, escaped, or bound as a prepared statement, an attacker can break out of the intended query context. From there, the attacker can append additional SQL clauses such as UNION SELECT, boolean-based conditions, or time-based payloads. Successful exploitation can result in unauthorized disclosure of records, modification of assessment data, or enumeration of database schema. Because the endpoint is exposed through the administrative area of a web-facing application, attackers can reach it over the network without prior credentials.
Root Cause
The root cause is missing input validation and the absence of parameterized queries when handling the courseID request parameter inside btn_functions.php. User-controlled input is placed into a SQL statement as raw text, allowing syntactic manipulation of the query.
Attack Vector
Exploitation requires only network access to the vulnerable endpoint. An attacker sends a crafted HTTP request containing malicious SQL syntax in the courseID parameter. The application then executes the tainted query against the backend database. No authentication or user interaction is required to trigger the flaw.
A public exploit has been disclosed through the GitHub Issue Tracker and cataloged in the VulDB CVE Entry. No verified proof-of-concept code is reproduced here; refer to the linked advisories for technical details.
Detection Methods for CVE-2026-93972
Indicators of Compromise
- HTTP requests to /reviewer_0/admins/assessments/course/btn_functions.php containing SQL metacharacters such as single quotes, UNION, SELECT, SLEEP(, or comment sequences (--, #, /*) within the courseID parameter.
- Unusual database error messages surfaced in web server or application logs referencing malformed SQL syntax originating from the assessments module.
- Anomalous outbound database query volume or long-running queries tied to the reviewer application's database user.
Detection Strategies
- Deploy web application firewall (WAF) rules that inspect the courseID parameter for SQL injection signatures and block requests matching known injection payloads.
- Enable database query auditing to capture queries originating from the reviewer application, then alert on UNION-based or stacked queries touching sensitive tables.
- Correlate authentication logs and access logs to detect scanning behavior against /reviewer_0/admins/ paths from unauthenticated sources.
Monitoring Recommendations
- Baseline normal request patterns for administrative endpoints and alert on deviations in parameter length, encoding, or character distribution.
- Monitor for repeated 500-series HTTP responses generated by the btn_functions.php endpoint, which often accompany injection probing.
- Forward web and database telemetry to a centralized analytics platform for cross-source correlation and retention.
How to Mitigate CVE-2026-93972
Immediate Actions Required
- Restrict network access to the Online Reviewer Management System administrative paths using IP allowlisting, VPN, or reverse proxy authentication until a code fix is applied.
- Deploy WAF signatures that block SQL injection payloads targeting the courseID parameter on /reviewer_0/admins/assessments/course/btn_functions.php.
- Review web server and database logs for prior exploitation attempts and rotate any credentials or session tokens that may have been exposed.
Patch Information
At the time of publication, no official vendor patch has been referenced in the NVD entry for CVE-2026-93972. Administrators should monitor the SourceCodester Resource Hub and the VulDB Vulnerability #407931 tracker for updates. In the absence of a vendor fix, apply source-level remediation by refactoring the affected query in btn_functions.php to use parameterized statements (for example, PDO prepared statements or mysqli_stmt_bind_param) and validate that courseID is an integer before use.
Workarounds
- Modify btn_functions.php to cast the courseID parameter to an integer with intval() or filter_var($_REQUEST['courseID'], FILTER_VALIDATE_INT) before use in any SQL query.
- Replace inline SQL string concatenation with prepared statements using bound parameters to eliminate the injection vector.
- Apply least-privilege database permissions so the application's database user cannot read or modify unrelated tables, and disable stacked queries where possible.
- Consider taking the affected module offline until source-level remediation is verified in a staging environment.
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

