The ext_in upload validation rule checked the MIME-derived guessed extension instead of the client-provided filename extension. As a result, an uploaded file named shell.php containing GIF-like content could pass validation such as:
uploaded[avatar]|is_image[avatar]|mime_in[avatar,image/gif]|ext_in[avatar,gif]
because the detected MIME type maps to gif, even though the uploaded filename extension is php.
Applications are impacted if they:
ext_in to validate the uploaded filename extension,$file->move($path),In those conditions, this may lead to arbitrary code execution. The default application does not expose such an upload endpoint.
Upgrade to v4.7.3 or later.
writable/uploads$file->store() or $file->move($path, $file->getRandomName()) instead of preserving the original filename$file->getClientExtension() is not in the allowed list or does not match $file->guessExtension(){
"cwe_ids": [
"CWE-434"
],
"github_reviewed": true,
"github_reviewed_at": "2026-06-11T17:16:09Z",
"nvd_published_at": null,
"severity": "CRITICAL"
}