Проект: 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.

Принимали участие

Сообщение об ошибке:

Исправление ошибки:

Ссылки

Помощь и обратная связь

Если вы обнаружили ошибку или хотите внести улучшения, и желаете внести изменения самостоятельно при помощи Pull Request
Если вы желаете предложить улучшение для этого документа

Обратиться за помощью

Если вы не нашли то что искали, воспользуйтесь поиском.

Если вам нужна помощь с чем-то конкретным, обратитесь к сообществу.