Проект Snuffleupagus развивает PHP-модуль для блокирования уязвимостей

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 5 Jul 2019.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    В рамках проекта Snuffleupagus развивается модуль для подключения к интерпретатору PHP7, предназначенный для повышения безопасности окружения и блокирования типовых ошибок, приводящих к появлению уязвимостей в выполняемых PHP-приложениях. Модуль также позволяет создавать виртуальные патчи для устранения конкретных проблем без изменения исходных текстов уязвимого приложения, что удобно для применения в системах массового хостинга, на которых невозможно добиться поддержания всех пользовательских приложений в актуальном виде. Модуль написан на языке Си, подключается в форме разделяемой библиотеки ("extension=snuffleupagus.so" в php.ini) и распространяется под лицензией LGPL 3.0.

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

    Судя по проведённым разработчиками тестам Snuffleupagus почти не снижает производительность. Для обеспечения собственной безопасности (возможные уязвимости в прослойке для защиты могут служить дополнительным вектором для атак) в проекте применяется доскональное тестирование каждого коммита в разных дистрибутивах, используются системы статического анализа, код оформляется и документируется для упрощения проведения аудита.

    Предоставляются встроенные методы для блокирования таких классов уязвимоcтей, как проблемы, связанные с сериализацией данных, небезопасным использованием PHP-функции mail(), утечкой содержимого Cookie при проведении XSS атак, проблемами из-за загрузки файлов с исполняемым кодом (например, в формате phar), некачественной генерацией случайных чисел и подстановкойнекорректных конструкций XML.

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

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

     
    Baskin-Robbins, CKAP, crlf and 2 others like this.