Description
The Grav API plugin (getgrav/grav-plugin-api) before 1.0.3 contains a file upload extension bypass in the API media controller. HandlesMediaUploads::validateFileExtension() inspects only the final file extension via pathinfo($filename, PATHINFO_EXTENSION), so a user with api.media.write permission can upload a file with a double extension such as shell.php.jpg to bypass the dangerous extensions blocklist. The web server may then execute the file as PHP, resulting in remote code execution.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| getgrav | grav | < 1.0.3 | 1.0.3 |
References
- GitHub Security Advisory (GHSA-66v2-vxxf-xc3v) vendor-advisory
- VulnCheck Advisory: Grav before 1.0.3 Remote Code Execution via File Upload Extension Bypass third-party-advisory