Unrestricted Upload of File with Dangerous Type in unisharp/laravel-filemanager
The advisory, in context
This affects the package unisharp/laravel-filemanager prior to version 2.6.2. The upload() function does not sufficiently validate the file type when uploading.
An attacker may be able to reproduce the following steps:
- Install a package with a web Laravel application.
- Navigate to the Upload window
- Upload an image file, then capture the request
- Edit the request contents with a malicious file (webshell)
- Enter the path of file uploaded on URL
- Remote Code Execution
**Note: Prevention for bad extensions can be done by using a whitelist in the config file(lfm.php). Corresponding document can be found in the here.
Affected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
Earlier releases before 2.6.2
Fixed in 2.6.2
63 explicitly affected versions
0.1.0, 0.2.0, 0.3.0, 0.3.1, 0.5.0, 0.5.1, 0.5.2, 0.5.3, 1.0.0, 1.1.0, 1.1.0-alpha, 1.1.1, 1.2.0, 1.3.0-alpha, 1.4.0-alpha, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.6.2, 1.6.3, 1.6.4, v1.7-alpha, v1.7.0, v1.7.1, v1.7.2, v1.7.3, v1.7.4, v1.7.5, v1.7.6, v1.7.7, v1.8.0, v1.8.1, v1.8.2, v1.8.2-alpha, v1.8.2.1, v1.8.2.2, v1.8.3, v1.8.4, v1.8.5, v1.9.0, v1.9.1, v1.9.2, v2.0.0, v2.0.0-alpha, v2.0.0-alpha2, v2.0.0-alpha3, v2.0.0-alpha4, v2.0.0-alpha5, v2.0.0-alpha6, v2.0.0-alpha7, v2.0.0-alpha8, v2.0.1, v2.1.0, v2.2.0, v2.3.0, v2.4.0, v2.4.1, v2.5.0, v2.5.1, v2.6.0, v2.6.1
View affected-version evidence
{
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "2.6.2"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"0.1.0",
"0.2.0",
"0.3.0",
"0.3.1",
"0.5.0",
"0.5.1",
"0.5.2",
"0.5.3",
"1.0.0",
"1.1.0",
"1.1.0-alpha",
"1.1.1",
"1.2.0",
"1.3.0-alpha",
"1.4.0-alpha",
"1.5.0",
"1.5.1",
"1.5.2",
"1.6.0",
"1.6.1",
"1.6.2",
"1.6.3",
"1.6.4",
"v1.7-alpha",
"v1.7.0",
"v1.7.1",
"v1.7.2",
"v1.7.3",
"v1.7.4",
"v1.7.5",
"v1.7.6",
"v1.7.7",
"v1.8.0",
"v1.8.1",
"v1.8.2",
"v1.8.2-alpha",
"v1.8.2.1",
"v1.8.2.2",
"v1.8.3",
"v1.8.4",
"v1.8.5",
"v1.9.0",
"v1.9.1",
"v1.9.2",
"v2.0.0",
"v2.0.0-alpha",
"v2.0.0-alpha2",
"v2.0.0-alpha3",
"v2.0.0-alpha4",
"v2.0.0-alpha5",
"v2.0.0-alpha6",
"v2.0.0-alpha7",
"v2.0.0-alpha8",
"v2.0.1",
"v2.1.0",
"v2.2.0",
"v2.3.0",
"v2.4.0",
"v2.4.1",
"v2.5.0",
"v2.5.1",
"v2.6.0",
"v2.6.1"
]
}References
- https://nvd.nist.gov/vuln/detail/CVE-2021-23814
- https://github.com/UniSharp/laravel-filemanager/issues/1113#issuecomment-1812092975
- https://github.com/UniSharp/laravel-filemanager/commit/bd84899ce65a7f193e676dd8444e424fa50f64fa
- https://github.com/UniSharp/laravel-filemanager
- https://github.com/UniSharp/laravel-filemanager/blob/master/src/Controllers/UploadController.php#L26
- https://github.com/UniSharp/laravel-filemanager/blob/master/src/Controllers/UploadController.php%23L26
- https://snyk.io/vuln/SNYK-PHP-UNISHARPLARAVELFILEMANAGER-1567199