Вопреки байке о том, что конструкторы всегда поддерживаются в лучшей современной форме, на самом деле они - заплатка на заплатке. Это касается Битрикса и практически всех других конструкторов.
Для хеширования паролей используется модифицированная версия , от которой на официальном сайте открестились. Но менять механизм не спешат .
Не желают даже предоставить возможность выбора механизма хеширования .
Число итераций для стойкости хеширования не обновлялось больше 7 лет , хотя предполагалось увеличение итераций не реже чем в 2 года .
При использовании PostgreSQL хеши паролей сравниваются без учёта регистра .
Также с PostgreSQL есть проблемы с поддержкой SSL .
Минимально допустимая версия PostgreSQL 9.2, которая уже давно без поддержки безопасности .
Официальная сборка Друпала содержит устаревшие версии вендорных библиотек (из-за совместимости с PHP 5.5). В некоторых из них, например Zend, есть даже известные уязвимости .
Также в сборке находятся все тесты, тестовые модули, тестовые темы и вендорные библиотеки для тестирования, что увеличивает не только размер архива, но и область возможных брешей .
Застопорилас и идея перенеси исполняемые файлы за пределы сайта .
Проверка обновлений реализована с помощью GET запросов по небезопасному HTTP протоколу . При MITM атаке можно подсовывать любые ссылки на архивы модулей (домен и хеш-суммы не проверяются). Также можно собирать инфу о составе сайта, списке разработчиков и их активности (запросы с локальных версий сайтов совпадут по ip с аккаунтами на d.org). HTTP протокол позволяет разместить скрипт для сбора инфы за пределами drupal.org.
Пользователь с id = 1 является самым лакомым объектом для атаки, поскольку всегда имеет все существующие на сайте права доступа (permissions), а также имеет все попытки лишить его этих прав .
Такое поведение не совсем очевидно, поскольку визуально в админке этот пользователь ничем не отличается от других. Но даже попытка подсветить эту особенность закончилась ничем .
Захватить контроль над этим пользователем с id = 1 может любой администратор, или другой пользователь с нужными правами .
Определённые права неявным образом дают контроль над всем сайтом, но внешне они тоже никак не выделяются , .
Некоторые права даже своим названием могут ввести в заблуждение. Например, право на просмотр логов на самом деле позволяет и удалять их .
Наведения порядка в пермишенах давно уже является острой задачей, но ее просто игнорят , .
Администратор не может удалить файловый объект загруженный другим пользователем, каким бы вредоносным он ни был .
Хук hook_file_download не использует при валидации соответствующий контроллер .
Нет отрабатывает валидация для файлов на стороне клиента .
Слабые проверки загрузки произвольных файлов , не говоря уже о всяких RarJpeg склейках.
Некоторые проверки файлов полагаются на .htaccess правила .
В .htaccess хватает и других правил безопасности, которые неявным образом теряются при переключении на другое окружение (особенно Nginx), но реализация аналогичных правил web.config заглохла , .
По умолчанию на любой сайт с Друпал 8 можно заливать изображения простым POST запросом, состоящим из имени формы для регистрации и полем с аватаркой пользователя. Примечательно, что в Drupal 7 от вывода такого поля по умолчанию отказались , но те времена прошли.
При многократной загрузке файла с одинаковым названием появляется проблема, связанная с реализацией алгоритма генерирования уникальных названий файлов .
Фильтрация адресов изображений также хромает. Поэтому можно разлогинивать пользователей картинкой с src='/user/logout' , или реализовать DOS-атаку, разместив пару сотен картинок с src='very/hard/page'.
Ещё один способ съесть ресурсы, это загрузка изображений размерами 1000х1 в поля, которые обрабатываются с помощью «Scale and crop» эффекта , .
Забить базу данных мусорным кешем можно просто перебирая урлы , хотя система кеширования и без посторонней помощи прекрасно забирает все ресурсы на хранения результатов, которые даже с нуля было бы получить быстрее .
Можно нагружать сайт и забивать логи сообщениями об ошибках с помощью специальных запросов к контекстным ссылкам..
Доступ к прикреплённым файлам и изображениям есть всегда, вне зависимости от доступа к контенту .
Комментарии к контенту тоже останутся доступны при запрете доступа к контенту .
Зареган ли пользовать на сайте можно узнать по сообщению на восстановление пароля .
Форма для сброса паролей не защищена от флуда .
При создании и проверке паролей, без всякого предупреждения удаляются все пробельные символы вокруг . Это может быть сюрпризом для пользователя, и небольшим послаблением для алгоритма перебора.
Если у вас нет возможности получить хеш пароля для брутфорса, но есть сессия пользователя, то можно брутить пароль без ограничений через сам аккаунт, например, меняя почтовый ящик .
Кстати, если что, пользователь даже не узнает, что его ящик был изменён, поскольку попытка реализовать эту фичу стопорится уже не первый год .
Алгоритм генерации сессий тоже так себе .
Куки протекают между сайтами, которые размещены в подпапках .
В некоторых случаях можно заблочить пользователей, манипулируя с запросами на некорректный ввод пароля .
Доступ к правке шаблонов Twig позволяет получить неограниченный контроль над сайтом .
Упорно игнорируется XSS атака через Twig атрибуты , , .
Также можно внедрять XSS в info файлы. Например через deion или package поля, что можно интересно эксплуатировать через фичи .
Не используется заголовок безопасности X-XSS-Protection .
XSS можно протолкнуть и через метод редеринг класса PlainTextOutput, хотя название класса говорит о противоположном .
Также может быть сюрпризом, что некоторые методы проверяют и кешируют права доступа текущего пользователя, а не того, который в них передали , .
Из-за неправильной настройки кеша можно делать для пользователя недоступным просмотр собственного профиля . Аналогичный трюк можно проделать при определеных настройках и с контентом , и с медиа .
Статистикой просмотров материала можно легко манипулировать через обычный цикл for в консоли браузера, накручивая по тысячи просмотров в минуту даже если у вас нет доступа к самому материалу. Можно накручивать даже пока не существующие материалы .
Хромает валидация внешних урлов , .
Нет полноценной защиты от .
Если настроить Content Security Policy, то отваливается редактор контента .
Это любительская подборка, ни на что не претендующая. Быть может кто-то знает дыры похлеще? С 30.01.2019 по 15.10.2020 действует от EU бюджетом в 89 000,00 €. Можете попробовать что-нибудь исправить. Но если не получится — не отчаивайтесь, мантейнеры этого проекта обучены в высшей степени ловко маневрировать между задачами, чтобы годами держать Друпал на одном месте.
Об авторе:Статьи на сайте Форнит активно защищаются от безусловной веры в их истинность, и авторитетность автора не должна оказывать влияния на понимание сути. Если читатель затрудняется сам с определением корректности приводимых доводов, то у него есть возможность задать вопросы в обсуждении или в теме на форуме. Про авторство статей >>.
Обнаружен организм с крупнейшим геномом Новокаледонский вид вилочного папоротника Tmesipteris oblanceolata, произрастающий в Новой Каледонии, имеет геном размером 160,45 гигапары, что более чем в 50 раз превышает размер генома человека.