In de bibliotheek , die handlers biedt voor bescherming tegen door middel van bestandsinvoegingen in het 'Phar'-formaat. (), waardoor bescherming tegen code-deserialisatie kan worden omzeild door het gebruik van de karakensubstitutie '..' in het pad. Bijvoorbeeld, een aanvaller kan een URL gebruiken als 'phar://path/bad.phar/../good.phar' voor de aanval en de bibliotheek zal bij de controle de basisnaam 'path/good.phar' extraheren, terwijl bij verdere verwerking van een dergelijk pad het bestand 'path/bad.phar' zal worden gebruikt.
De bibliotheek is ontwikkeld door de makers van CMS TYPO3, maar wordt ook gebruikt in projecten van Drupal en Joomla, waardoor deze ook kwetsbaar zijn. Het probleem is opgelost in versies . Het Drupal-project heeft het probleem opgelost in de updates 7.67, 8.6.16 en 8.7.1. In Joomla openbaart het probleem zich vanaf versie 3.9.3 en is opgelost in versie 3.9.6. Om het probleem in TYPO3 op te lossen, moet de PharStreamWrapper-bibliotheek worden bijgewerkt.
Vanuit praktisch oogpunt stelt de kwetsbaarheid in PharStreamWrapper een gebruiker van Drupal Core, die over de machtigingen van de thema-admin (āAdminister themeā) beschikt, in staat om een kwaadaardig phar-bestand te uploaden en de PHP-code die erin is geplaatst uit te voeren als een legitiem phar-archief. Ter herinnering, de essentie van de āPhar deserialisatieā-aanval is dat bij de controle van de geüploade bestanden met behulp van de PHP-functie file_exists(), deze functie automatisch de metadata deserialiseert uit Phar-bestanden (PHP Archive) bij het verwerken van paden die beginnen met 'phar://'. Het doorgeven van een phar-bestand kan plaatsvinden als een afbeelding, omdat de functie file_exists() het MIME-type op basis van de inhoud en niet op basis van de extensie bepaalt.
Bron: opennet.ru
