Разработчики CMS Drupal выпустили исправление для критической уязвимости, при помощи которой злоумышленники могли установить полный контроль над чужим сайтом. Уязвимость получила идентификатор CVE-2020-13671, крайне проста в использовании и строится на известном принципе двойных расширений.

По сути, атакующий может добавить второе расширение к вредоносному файлу, загрузить файл на целевой сайт, а затем выполнить. К примеру, вредоносный файл malware.php может быть переименован в malware.php.txt. При загрузке на сайт под управлением Drupal такой файл будет рассматриваться как текстовый файл, а не как PHP,  однако CMS выполнит вредоносный код при попытке чтения этого «текстовика».

Разработчики объясняют, что суть уязвимости заключается в том, что Drupal некорректно производит очистку имен файлов:

«Это может привести к тому, что расширения определенных файлов будут интерпретироваться неправильно, использовать неправильный MIME,  а на определенных конфигурациях хостинга это ведет к выполнению PHP», — объясняют специалисты.

Патчи были выпущены для Drupal 7, 8 и 9. Также разработчики призвали администраторов сайтов проверить недавние загрузки файлов на предмет двойных расширений, на тот случай если злоумышленники успели воспользоваться уязвимостью то выхода патча. Подозрительными рекомендуется считать следующие файлы, особенно если они имеют более одного расширения:

  • phar
  • php
  • pl
  • py
  • cgi
  • asp
  • js
  • html
  • htm
  • phtml

Стоит отметить, что проблему двойных расширений никак нельзя назвать новой.  К примеру, от нее уже много лет страдают пользователи Windows, так как злоумышленники регулярно распространяют малварь под видом файлов, типа file.png.exe. Так как Windows по умолчанию скрывает второе расширение, зачастую пользователи верят, что открывают обычный файл изображения, тогда как на самом деле они запускают малварь.

1 комментарий

  1. Аватар

    0d8bc7

    23.11.2020 в 20:15

    На счёт файлов в Windows. Одного только показа расширения может быть недостаточно, т.к. можно ещё визуально переместить расширение с помощью символа Юникода — см. https://youtu.be/xJQWsFWGplg Мораль: нужно просто быть внимательнее и не забывать про возможность атак, и, как следствие, некоторые неестественные вещи должны приводить пользователя к подозрению и хотя бы минимальному аудиту. А на месте разработчиков как минимум браузеров, качалок, файловых менеджеров и архиваторов я бы добавил чёрный список символов в именах файлов (отключаемый и настраиваемый пользователем, но по умолчанию активный). (И даже в Java и Python можно было бы добавить спец. функции проверки и/или очистки имён.)
    На счёт сабжа и CMS. Это, ИМХО, какой-то жирный косяк. Во-первых, как можно определить как расширение последовательность символов, находящуюся даже не в конце имени? Во-вторых, пусть даже расширения и MIME-тип определены верно и оказались серверным скриптом — зачем их запускать, если этого не планировал программист/админ? Ну, конфигурации — они такие, да)

Оставить мнение