~ / search / GHSA-9v3j-4j64-p937

GHSA-9v3j-4j64-p937

OroPlatform vulnerable to path traversal during temporary file manipulations

Source: GitHub Advisory Database (reviewed) High CVE-2022-41951

Packages

EcosystemPackageAffectedFixed 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.