GHSA-9v3j-4j64-p937
OroPlatform vulnerable to path traversal during temporary file manipulations
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| Packagist | oro/platform | >= 4.1.0, <= 4.1.13 | no fix listed |
| Packagist | oro/platform | >= 4.2.0, <= 4.2.10 | no fix listed |
| Packagist | oro/platform | >= 5.0.0, < 5.0.8 | 5.0.8 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Impact
Path Traversal is possible in `Oro\Bundle\GaufretteBundle\FileManager::getTemporaryFileName`.
With this method, an attacker can pass the path to a non-existent file, which will allow writing the content to a new file that will be available during script execution. The file will be deleted immediately after the script ends.
### Workarounds
Apply patch
```patch
--- a/vendor/oro/platform/src/Oro/Bundle/GaufretteBundle/FileManager.php
+++ b/vendor/oro/platform/src/Oro/Bundle/GaufretteBundle/FileManager.php
@@ -614,6 +614,10 @@
*/
public function getTemporaryFileName(string $suggestedFileName = null): string
{
+ if ($suggestedFileName) {
+ $suggestedFileName = basename($suggestedFileName);
+ }
+
$tmpDir = ini_get('upload_tmp_dir');
if (!$tmpDir || !is_dir($tmpDir) || !is_writable($tmpDir)) {
$tmpDir = sys_get_temp_dir();
```
Or decorate `Oro\Bundle\GaufretteBundle\FileManager::getTemporaryFileName` in your customization and clear `$suggestedFileName` argument
```php
public function getTemporaryFileName(string $suggestedFileName = null): string
{
if ($suggestedFileName) {
$suggestedFileName = basename($suggestedFileName);
}
return parent::getTemporaryFileName($suggestedFileName);
}
```
### References
- [Path Traversal](https://owasp.org/www-community/attacks/Path_Traversal)
- [How to Decorate Services](https://symfony.com/doc/5.4/service_container/service_decoration.html)
References
External links from the advisory. They lead to third-party sites.