CVE-2026-63223 (CVSS 9.8) - CodeIgniter is a PHP full-stack web framework. Prior to 4.7.4, the is_image and
CVE-2026-63223 是 CodeIgniter 4.7.4之前版本中的高危文件上传漏洞,CVSS评分9.8。攻击者可绕过 is_image 和 mime_in 的MIME检查,上传包含恶意PHP代码的文件并远程执行,导致服务器完全沦陷。本文提供根因分析、攻击场景和修复方案,建议立即升级至4.7.4并加强上传安全策略。
CVE-2026-63223 (CVSS 9.8) - CodeIgniter is a PHP full-stack web framework. Prior to 4.7.4, the is_image and
📋 漏洞概述
CodeIgniter 4.7.4之前版本的文件上传验证不完整,可绕过MIME检查上传可执行文件,导致远程代码执行。
📋 基础信息
| 受影响版本 | CodeIgniter < 4.7.4 |
| 漏洞类型 | 文件上传验证不当 / 输入验证不当 |
| CVSS | 9.8 · Critical |
| CVE | CVE-2026-63223 |
🔬 漏洞根因
CodeIgniter 的 is_image 和 mime_in 上传验证规则仅检查文件的 MIME 类型或图像特征,未独立校验客户端提供的文件扩展名是否安全。当应用保存上传文件时直接使用客户端文件名,并将文件存放在可执行脚本的 Web 目录下,攻击者可以上传包含恶意 PHP 代码的文件并伪装成合法图片类型,绕过验证后由服务端解析执行。
🎯 攻击场景
1. 目标应用使用 is_image 或 mime_in 校验上传文件,且未使用 ext_in 等独立扩展名检查。2. 攻击者构造一个包含 PHP 恶意代码的文件,将其扩展名改为 .php 或 .php.jpg,并伪造 Content-Type 为 image/jpeg 或 image/png。3. 上传该文件,应用通过 MIME 校验并保存文件,文件名保留客户端原始文件名(如 shell.php.jpg 或 shell.php)。4. 文件被保存到 Web 可访问且允许执行 PHP 的目录(如 uploads/)。5. 攻击者直接访问该文件 URL,服务器将其中 PHP 代码作为脚本执行,从而在服务器上实现远程代码执行。
💥 漏洞影响
攻击者可在服务器上执行任意 PHP 代码,获得 Web 应用级权限,可能进一步读取敏感文件、写入 webshell、提权至系统用户,最终完全控制服务器。影响所有使用受影响版本且未独立校验扩展名、使用客户端文件名并存储到可执行目录的应用。
🛡️ 修复建议
升级到 CodeIgniter 4.7.4 或更高版本,该版本已修复此问题。临时缓解措施:1. 在应用层独立校验文件扩展名,使用 ext_in 等规则限制为白名单后缀;2. 对上传目录禁用 PHP 执行权限(如 .htaccess 或 Nginx 配置);3. 随机重命名上传文件,避免保留客户端文件名;4. 将上传文件存储到 Web 目录之外的路径,并通过脚本安全分发。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-63223
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-63223
- 原始来源(NVD-Latest)
🚨 威胁评估
| 📈 EPSS 利用概率 | 低 (0.5%) (高于 39.7% 的漏洞) |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 暂无公开 PoC |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-08-02 08:20 | 来源: NVD-Latest
🤖 常见问题解答(FAQ)
❓ 该漏洞是否仅影响使用文件上传功能的站点?
是。只有使用 is_image 或 mime_in 验证上传且未独立检查扩展名、保留客户端文件名并存入可执行目录的站点才受影响。
❓ 攻击者能否直接上传 .php 文件绕过检查?
可以。如果只通过 MIME 类型检查,攻击者可伪造 Content-Type 为 image/jpeg,使 is_image 或 mime_in 通过,从而上传 .php 或包含恶意代码的复合文件。
❓ 如何临时阻止该漏洞被利用?
升级前可对上传目录禁用脚本执行(如设置 php_flag engine off),并强制使用随机文件名,同时增加扩展名白名单校验。