Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H
Network SQLi reachable without privileges when an exposed endpoint feeds user input to deleteBatch(); DELETE context limits confidentiality (C:L) while row manipulation drives I:H/A:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4DescriptionCVE.org
CodeIgniter is a PHP full-stack web framework. From 4.3.0 through 4.7.3, Query Builder deleteBatch() substitutes bound values from where() conditions into generated SQL while ignoring their escape flags, allowing user-controlled condition values to be interpreted as SQL. This affects only the deleteBatch() code path. Regular delete() operations escape where() binds correctly. This issue is fixed in version 4.7.4.
Articles & Coverage 1
AnalysisAI
SQL injection in CodeIgniter4's Query Builder deleteBatch() method (versions 4.3.0 through 4.7.3) allows user-controlled where() condition values to be interpreted as executable SQL because bound values are substituted into the generated DELETE statement while their escape flags are ignored. Only the deleteBatch() batch-delete path is affected; ordinary delete() operations escape their binds correctly. No public exploit was identified at time of analysis, and the flaw is resolved in version 4.7.4.
Technical ContextAI
CodeIgniter4 is a widely used full-stack PHP web framework whose database layer includes a fluent Query Builder. Internally, where() conditions store placeholders (:field:) plus a paired value and an escape flag. The vendor commit (f5e463b) shows that _deleteBatch() in BaseBuilder.php - and its OCI8/Postgre subclasses - replaced those placeholders using str_replace($this->binds[$field][0]) with the raw bound value, never consulting the escape flag at index [1] and never calling $this->db->escape(). This is a textbook CWE-89 (SQL Injection) improper-neutralization defect: data intended as a parameter is concatenated into the SQL text. The fix introduces convertWhereBindsForBatch(), which honors the escape flag, escapes scalars via db->escape(), and wraps array/whereIn() values in a parenthesized escaped list. The single affected CPE is cpe:2.3:a:codeigniter4:codeigniter4.
RemediationAI
Vendor-released patch: 4.7.4 - upgrade the codeigniter4/codeigniter4 dependency to 4.7.4 or later (composer update codeigniter4/framework) as the primary and definitive fix, per GHSA-c9w5-rwh3-7pm9 and the release at https://github.com/codeigniter4/CodeIgniter4/releases/tag/v4.7.4. If you cannot upgrade immediately, the effective compensating control is to avoid the vulnerable code path: refactor code so batch deletes that need user input do not pass unescaped user data through where()/whereIn() into deleteBatch() - instead use standard delete() (which escapes binds correctly) or pre-validate/whitelist the condition values, accepting that this requires code changes and may reduce batch-delete efficiency. Additionally, strictly validate and type-cast user input feeding any delete condition, and confirm the fix by porting the vendor's regression tests (testDeleteBatchEscapesWhereBinds) from commit f5e463b.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same weakness CWE-89 – SQL Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-51397
GHSA-c9w5-rwh3-7pm9