В библиотеке PharStreamWrapper, предоставляющей обработчики для защиты от проведения атак через подстановку файлов в формате "Phar", выявлена уязвимость (CVE-2019-11831), позволяющая обойти защиту от десериализации кода через подстановку символов ".." в пути. Например, атакующий может использовать для атаки URL вида "phar:///path/bad.phar/../good.phar" и библиотека выделит при проверке базовое имя "/path/good.phar", хотя при дальнейшей обработке подобного пути будет использован файл "/path/bad.phar".
Библиотека разработана создателями CMS TYPO3, но также применяется в проектах Drupal и Joomla, что делает их также подверженными уязвимости. Проблема устранена в выпусках PharStreamWrapper 2.1.1 и 3.1.1. Проект Drupal устранил проблему в обновлениях 7.67, 8.6.16 и 8.7.1. В Joomla проблема проявляется начиная с версии 3.9.3 и устранена в выпуске 3.9.6. Для устранения проблемы в TYPO3 требуется обновить библиотеку PharStreamWapper.
С практической стороны уязвимость в PharStreamWapper позволяет пользователю Drupal Core, имеющему полномочия администратора тем оформления ('Administer theme'), загрузить вредоносный phar-файл и добиться выполнения размещённого в нём PHP-кода под видом легитимного phar-архива. Напомним, что суть атаки "Phar deserialization" в том, что при проверке загруженных файлов при помощи PHP-функции file_exists(), эта функция автоматически выполняет десериализацию метаданных из файлов Phar (PHP Archive) при обработке путей, начинающихся с "phar://". Передача phar-файла возможна под видом картинки, так как функция file_exists() определяет MIME-тип по содержимому, а не по расширению.
Поддержать публикацию: Coinbase, Yandex.Money