[SECURITY] Avoid directory traversal on archive extraction
The Extension Manager and Language Pack Manager receive Zip archives as input from foreign sources and extract them on the disk. However, the previous approach is considered insecure as the target directory is not checked per file and directory traversal was possible. This patch adds a new service class that handles the extraction of Zip archives via PHP's internal ZipArchive class, which can handle such cases on its own. Resolves: #88764 Releases: master, 9.5, 8.7 Security-Commit: a02f19c73211a5f1c0286ab44bee27da9b73f026 Security-Bulletin: TYPO3-CORE-SA-2019-024 Change-Id: I701a577f54410344867b868409a38cc44339f976 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/62718 Tested-by:Oliver Hader <oliver.hader@typo3.org> Reviewed-by:
Oliver Hader <oliver.hader@typo3.org>
Showing
- typo3/sysext/core/Classes/Exception/Archive/ExtractException.php 25 additions, 0 deletions...ysext/core/Classes/Exception/Archive/ExtractException.php
- typo3/sysext/core/Classes/Service/Archive/ZipService.php 103 additions, 0 deletionstypo3/sysext/core/Classes/Service/Archive/ZipService.php
- typo3/sysext/core/Tests/Functional/Service/Archive/Fixtures/malicious.zip 0 additions, 0 deletions...e/Tests/Functional/Service/Archive/Fixtures/malicious.zip
- typo3/sysext/core/Tests/Functional/Service/Archive/Fixtures/my_extension.zip 0 additions, 0 deletions...ests/Functional/Service/Archive/Fixtures/my_extension.zip
- typo3/sysext/core/Tests/Functional/Service/Archive/ZipServiceTest.php 163 additions, 0 deletions.../core/Tests/Functional/Service/Archive/ZipServiceTest.php
- typo3/sysext/extensionmanager/Classes/Utility/FileHandlingUtility.php 17 additions, 22 deletions.../extensionmanager/Classes/Utility/FileHandlingUtility.php
- typo3/sysext/install/Classes/Service/LanguagePackService.php 9 additions, 34 deletionstypo3/sysext/install/Classes/Service/LanguagePackService.php
Please register or sign in to comment