Skip to main content

CodeIgniter CVE-2026-63223

| EUVDEUVD-2026-51399 CRITICAL
Unrestricted Upload of File with Dangerous Type (CWE-434)
2026-07-31 GitHub_M GHSA-mmj4-63m4-r6h5
9.8
CVSS 3.1 · Vendor: GitHub_M
Share

Severity by source

Vendor (GitHub_M) PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
8.1 HIGH

Network and unauthenticated (AV:N/PR:N/UI:N), but AC:H because exploitation depends on a specific non-default app pattern (is_image/mime_in only, client filename saved, script-enabled web dir); successful exploitation yields full RCE so C/I/A:H.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

4
Patch available
Jul 31, 2026 - 06:15 EUVD
Source Code Evidence Fetched
Jul 31, 2026 - 05:45 vuln.today
Analysis Generated
Jul 31, 2026 - 05:45 vuln.today
CVE Published
Jul 31, 2026 - 04:10 cve.org
CRITICAL 9.8

DescriptionCVE.org

CodeIgniter is a PHP full-stack web framework. Prior to 4.7.4, the is_image and mime_in upload validation rules do not independently enforce a safe client filename extension, allowing a remote attacker to upload executable content when an application preserves the client filename and stores uploads in a web-accessible script-enabled directory. Applications are impacted when they validate uploads using is_image or mime_in without an independent safe extension check (such as ext_in on patched versions), save uploaded files using the client-supplied filename, and place uploads in a web-accessible directory where PHP files can execute. This issue is fixed in version 4.7.4.

AnalysisAI

Unauthenticated file upload validation bypass in the CodeIgniter4 PHP framework (versions prior to 4.7.4) lets a remote attacker upload executable PHP content by exploiting that the is_image and mime_in strict validation rules never enforced a safe client-supplied filename extension. Applications are affected only when they validate uploads solely with is_image or mime_in (without an independent extension check such as ext_in), persist files under the attacker-controlled client filename, and store them in a web-accessible, script-enabled directory. There is no public exploit identified at time of analysis and the flaw is not on the CISA KEV list; the upstream fix (commit b6e9a4f, released as v4.7.4) adds client-extension consistency checks.

Technical ContextAI

CodeIgniter4 is a widely used full-stack PHP web framework. The weakness is CWE-434 (Unrestricted Upload of File with Dangerous Type). The affected code is in system/Validation/StrictRules/FileRules.php: the is_image rule confirmed only that file content resembled an image, and mime_in confirmed only the detected/declared MIME type, but neither rule cross-checked the client-supplied filename extension. Because these rules were commonly assumed to be sufficient, a file whose content passed the image/MIME check but whose client filename ended in .php (e.g. 'shell.php' carrying GIF bytes, or a polyglot) would validate successfully. When such a file is then written to disk using the original client filename inside a directory where the web server executes PHP, the payload becomes directly requestable and executable. CPE cpe:2.3:a:codeigniter4:codeigniter4:*:*:*:*:*:*:*:* covers the framework package. The patch introduces hasInvalidImageClientExtension() (rejects non-empty extensions that do not map to an image type) for is_image and hasMismatchedClientExtension() (rejects extensions that disagree with the guessed content extension) for mime_in.

RemediationAI

Vendor-released patch: 4.7.4 - upgrade the codeigniter4/codeigniter4 dependency to 4.7.4 or later (composer update), which makes is_image and mime_in reject filenames whose client extension is non-image or mismatched with the detected content. Review the advisory at https://github.com/codeigniter4/CodeIgniter4/security/advisories/GHSA-mmj4-63m4-r6h5 and the patch at https://github.com/codeigniter4/CodeIgniter4/commit/b6e9a4fa1dca2df3d3f261bdf61532df8c6420aa. If you cannot upgrade immediately, add an independent extension allowlist to affected upload rules using ext_in (the mechanism the patch relies on) so validation no longer trusts is_image/mime_in alone; this is low-risk and closes the core gap. As additional compensating controls, stop saving uploads under the client-supplied filename - generate server-side random names and strip/normalize extensions - and move the upload storage directory outside the web root or disable PHP execution in it (for Apache, an .htaccess 'php_admin_flag engine off' or removing the PHP handler; for Nginx, avoid passing that path to the PHP-FPM location). The trade-off of renaming files is that any code relying on original filenames must be updated, and disabling script execution in the upload path must be verified not to break legitimate dynamic content served from that directory.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

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

CVE-2012-1823 CRITICAL POC
9.8 May 11

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

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

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

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

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

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

Share

CVE-2026-63223 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy