Проект: Drupal core
Дата публикации: 8 мая 2019
Риск безопасности: Умеренно критический. 14/25 AC:Complex, A:Admin, CI:All, II:All, E:Theoretical, TD:Uncommon
Уязвимость: Сторонние библиотеки
¶Описание
Данный релиз безопасности исправляет сторонние зависимости, которые поставляются с Drupal или являются зависимостью ядра Drupal.
¶Описание проблемы от TYPO3
Для того чтобы перехватить выполнение файлов такими функциями, как file_exists()
или stat()
, на скомпрометированные Phar архивы, базовое имя должно быть определено и проверено, прежде чем разрешать передачу файла на выполнение в PHP Phar stream.
В примере ниже базовое имя /path/bad.phar
, а /phar-content.txt
- файл, поставляемый с данным Phar архивом.
$userSubmittedPath = 'phar:///path/bad.phar/phar-content.txt';
file_exists($userSubmittedPath);
Текущая реализация уязвима к атаке path traversal (когда можно получить доступ к файлам уровнем ниже чем корневой ../
), что приводит к сценариям, когда проверяемый Phar архив, не является тем, что запросили на самом деле.
// Helper::determineBaseFile(
// 'phar:///path/bad.phar/../good.phar'
// )
// некорректно определит базовое имя как '/path/good.phar'
// ... что можно использовать для разрешения вызова.
if ($interceptor->assert('/path/good.phar')) {
$wrapper->invokeInternalStreamWrapper(
'stat',
'phar:///path/bad.phar/../good.phar'
);
}
¶Решение
Обновиться до актуальных версий:
- Если вы используете Drupal 8.7, обновитесь до Drupal 8.7.1
- Если вы используете Drupal 8.6 или ниже, обновитесь до Drupal 8.6.16.
- Если вы используете Drupal 7, обновитесь до Drupal 7.67.
¶Принимали участие
Сообщение об ошибке:
Исправление ошибки:
- Jess из Drupal Security Team
- Michael Hess из Drupal Security Team
- Oliver Hader
- David Snopek из Drupal Security Team
- Alex Pott из Drupal Security Team
- Daniel Le Gall
- Tim Plunkett
¶Ссылки
- SA-CORE-2019-007 (англ.), drupal.org, 8 мая 2019
- TYPO3-PSA-2019-007 (англ.), TYPO3, 8 мая 2019