SB2026070756 - Multiple vulnerabilities in CodeIgniter4
Published: July 7, 2026
Breakdown by Severity
- Low
- Medium
- High
- Critical
Description
This security bulletin contains information about 4 vulnerabilities.
1) Arbitrary file upload (CVE-ID: N/A)
CWE-ID: CWE-434 - Unrestricted Upload of File with Dangerous Type
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U/U:Amber
The vulnerability allows a remote attacker to execute arbitrary code.
The vulnerability exists due to unrestricted upload of file with dangerous type in the `is_image` and `mime_in` file upload validation rules when validating uploaded files. A remote attacker can upload a crafted file with a dangerous extension to execute arbitrary code.
Applications are impacted when uploaded files are saved using the client-supplied filename and placed in a web-accessible directory where PHP files can execute.
2) Use of Less Trusted Source (CVE-ID: N/A)
CWE-ID: CWE-348 - Use of Less Trusted Source
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:U/U:Green
The vulnerability allows a remote attacker to bypass HTTPS-only security checks.
The vulnerability exists due to use of less trusted source in IncomingRequest::isSecure() when handling client-supplied forwarded HTTPS headers. A remote attacker can send a request with spoofed X-Forwarded-Proto or Front-End-Https headers to bypass HTTPS-only security checks.
Exploitation depends on deployment configuration and is more likely when the backend is directly reachable over HTTP or when a reverse proxy forwards client-supplied forwarding headers without stripping or overwriting them.
3) SQL injection (CVE-ID: N/A)
CWE-ID: CWE-89 - Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:H/SC:N/SI:N/SA:N/E:U/U:Amber
The vulnerability allows a remote attacker to execute arbitrary SQL commands.
The vulnerability exists due to SQL injection in the Query Builder deleteBatch() method when using where() conditions. A remote attacker can supply crafted input to where() before deleteBatch() is called to execute arbitrary SQL commands.
This affects only the deleteBatch() code path; regular delete() operations escape where() binds correctly.
4) Path traversal (CVE-ID: N/A)
CWE-ID: CWE-22 - Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
CVSSv4: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:U/U:Green
The vulnerability allows a remote attacker to overwrite files outside the intended upload directory.
The vulnerability exists due to path traversal in UploadedFile::move() when using the client-provided filename by default while handling file uploads without a second filename argument. A remote attacker can supply a crafted filename containing path traversal sequences to overwrite files outside the intended upload directory.
The issue occurs only when UploadedFile::move() is called without a second argument, and the impact depends on the destination path and server configuration.
Remediation
Install update from vendor's website.
References
- https://github.com/codeigniter4/CodeIgniter4/security/advisories/GHSA-mmj4-63m4-r6h5
- https://github.com/advisories/GHSA-2gr4-ppc7-7mhx
- https://github.com/codeigniter4/CodeIgniter4/security/advisories/GHSA-7wmf-pw8j-mc78
- https://github.com/codeigniter4/CodeIgniter4/security/advisories/GHSA-c9w5-rwh3-7pm9
- https://codeigniter.com/user_guide/database/query_builder.html#builder-deletebatch
- https://github.com/codeigniter4/CodeIgniter4/security/advisories/GHSA-hhmc-q9hp-r662
- https://owasp.org/www-community/attacks/Path_Traversal