Pas një vit zhvillimi publikimi i projektit , предоставляющего модуль к интерпретатору 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 атак, проблемами из-за загрузки файлов с исполняемым кодом (например, в формате ), некачественной генерацией случайных чисел и некорректных конструкций XML.
Предоставляемые в Snuffleupagus режимы повышения защиты PHP:
- Автоматическое включение флагов «secure» и «samesite» (защита от CSRF) для Cookie, Cookie;
- Встроенный набор правил для выявления следов совершения атак и компрометации приложений;
- Принудительное глобальное включение режима «» (например, блокирует попытку указания строки при ожидании в качестве аргумента целочисленного значения) и защита от ;
- Блокирование по умолчанию (например, запрет «phar://») с их явным разрешением по белому списку;
- Запрет на исполнение файлов, которые доступны на запись;
- Чёрные и белые списки для eval;
- Включение обязательно проверки сертификатов TLS при использовании
curl; - Добавление HMAC к сериализованным объектам для гарантирования, что при десериализации получены данные, сохранённые исходным приложением;
- Режим журналирования запросов;
- Блокирование загрузки внешних файлов в libxml по ссылкам в XML-документах;
- Возможность подключения внешних обработчиков (upload_validation) для проверки и сканирования загружаемых файлов;
Ndër в новом выпуске: Улучшена поддержка PHP 7.4 и реализована совместимость с находящейся в разработке веткой PHP 8. Добавлена возможность журналирования событий через syslog (для включения предложена директива sp.log_media, которая может принимать значения php или syslog). Обновлён предлагаемый по умолчанию набор правил, в который добавлены новые правила для выявленных в последнее время уязвимостей и техник атак на web-приложения. Улучшена поддержка macOS и расширено применение платформы непрерывной интеграции на базе GitLab.
Burimi: opennet.ru
