Выпуск Snuffleupagus 0.5.1, модуля для блокирования уязвимостей в PHP-приложениях

22 июня 2020 года

После года разработки опубликован выпуск проекта Snuffleupagus 0.5.1 предоставляющего модуль к интерпретатору PHP7 для повышения безопасности окружения и блокирования типовых ошибок, приводящих к появлению уязвимостей в выполняемых PHP-приложениях. Модуль также позволяет создавать виртуальные патчи для устранения конкретных проблем без изменения исходных текстов уязвимого приложения, что удобно для применения в системах массового хостинга, на которых невозможно добиться поддержания всех пользовательских приложений в актуальном виде. Накладные расходы от работы модуля оцениваются как минимальные. Модуль написан на языке Си, подключается в форме разделяемой библиотеки ("extension=snuffleupagus.so" в php.ini) и распространяется под лицензией LGPL 3.0.

Snuffleupagus предоставляет систему правил, позволяющую использовать как типовые шаблоны для повышения защиты, так и создавать собственные правила для контроля входных данных и параметров функций. Например, правило "sp.disable_function.function("system").param("command").value_r("[$|;&`\\n]").drop();" позволяет не изменяя приложения ограничить использование спецсимволов в аргументах функции system(). Предоставляются встроенные методы для блокирования таких классов уязвимоcтей, как проблемы, связанные с сериализацией данных, небезопасным использованием PHP-функции mail(), утечкой содержимого Cookie при проведении XSS атак, проблемами из-за загрузки файлов с исполняемым кодом (например, в формате phar), некачественной генерацией случайных чисел и подстановкой некорректных конструкций XML.

Предоставляемые в Snuffleupagus режимы повышения защиты PHP:

  • Автоматическое включение флагов "secure" и "samesite" (защита от CSRF) для Cookie, шифрование Cookie;
  • Встроенный набор правил для выявления следов совершения атак и компрометации приложений;
  • Принудительное глобальное включение режима "strict" (например, блокирует попытку указания строки при ожидании в качестве аргумента целочисленного значения) и защита от манипуляций с типами;
  • Блокирование по умолчанию обёрток для протоколов (например, запрет "phar://") с их явным разрешением по белому списку;
  • Запрет на исполнение файлов, которые доступны на запись;
  • Чёрные и белые списки для eval;
  • Включение обязательно проверки сертификатов TLS при использовании curl;
  • Добавление HMAC к сериализованным объектам для гарантирования, что при десериализации получены данные, сохранённые исходным приложением;
  • Режим журналирования запросов;
  • Блокирование загрузки внешних файлов в libxml по ссылкам в XML-документах;
  • Возможность подключения внешних обработчиков (upload_validation) для проверки и сканирования загружаемых файлов;

Среди изменений в новом выпуске: Улучшена поддержка PHP 7.4 и реализована совместимость с находящейся в разработке веткой PHP 8. Добавлена поддержка syslog. Обновлён предлагаемый по умолчанию набор правил, в который добавлены новые правила для выявленных в последнее время уязвимостей и техник атак на web-приложения. Улучшена поддержка macOS и расширено применение платформы непрерывной интеграции на базе GitLab.

  • Обеспечена полная поддержка PHP7.4 и начальная поддержка находящейся в разработке ветки PHP 8.
  • В предлагаемый по умолчанию набор правил добавлено правило для предотвращения атак, связанных с подстановкой команд.
  • Улучшена переносимость и расширен тестовый набор, запуск которого обеспечен в Alpine, Fedora, Debian и Ubuntu.
  • Проведена чистка кода.
  • Добавлены новые правила для выявленных в последнее время новых уязвимостей и техник атак на web-приложения.
  • Добавлена поддержка syslog. Улучшена поддержка FreeBSD и macOS.
  • Реализована возможность сборки без встроенной поддержки сеансов.
  • Для PHP 7.3+ реализованы средства для усиления защиты Cookie.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Выпуск Snuffleupagus 0.5.1, модуля для блокирования уязвимостей в PHP-приложениях», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.