The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

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

22.06.2020 11:33

После года разработки опубликован выпуск проекта 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 (для включения предложена директива sp.log_media, которая может принимать значения php или syslog). Обновлён предлагаемый по умолчанию набор правил, в который добавлены новые правила для выявленных в последнее время уязвимостей и техник атак на web-приложения. Улучшена поддержка macOS и расширено применение платформы непрерывной интеграции на базе GitLab.

  1. Главная ссылка к новости (https://dustri.org/b/snuffleup...)
  2. OpenNews: Анонсированы новые межсетевые экраны для защиты web-приложений - IronBee и openWAF
  3. OpenNews: GreenSQL - межсетевой экран для защиты MySQL
  4. OpenNews: Сообществом wasp-guard началось формирование распределенной системы обнаружения вторжений
  5. OpenNews: Выпущен релиз ModSecurity 2.5.0
  6. OpenNews: Межсетевой экран уровня приложений OpenFWTK 2.0
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/53211-snuffleupagus
Ключевые слова: snuffleupagus, php, firewall
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:47, 22/06/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –3 +/
     
     
  • 2.3, A.Stahl (ok), 11:50, 22/06/2020 Скрыто модератором
  • +1 +/
     
     
  • 3.4, Аноним (4), 12:00, 22/06/2020 Скрыто модератором
  • +/
     
     
  • 4.5, A.Stahl (ok), 12:03, 22/06/2020 Скрыто модератором
  • +5 +/
     
     
  • 5.8, Аноним (8), 12:29, 22/06/2020 Скрыто модератором
  • +1 +/
     

     ....ответы скрыты модератором (4)

  • 1.2, kravich (ok), 11:49, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Модуль написан на языке Си, подключается в форме разделяемой библиотеки ("extension=snuffleupagus.so" в php.ini)

    А как же "сишные дырени" (c)?

     
  • 1.7, Аноним (7), 12:24, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > sp.disable_function.function("system").param("command").value_r("[$|;&'\\n]").drop();

    Какой же упоротый синтаксис…

     
  • 1.9, Аноним (9), 12:49, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Как альтернативу, для блокирования уязвимостей в PHP-приложениях можно использовать программу /usr/bin/kill. Потому что PHP - это прежде всего сложившаяся культура программирования (вернее, ее полное отсутствие).
     
     
  • 2.10, Аноним (10), 13:58, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Уверен, у комментатора нет опыта разработки на PHP, но начитался статей с хабра 2012 года и теперь везде об этом пишет.
     
     
  • 3.12, Онаним (?), 14:08, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    "2012 года" тут лишнее
     
  • 3.13, Аноним (9), 14:23, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Уверенность в том, чего не знаешь -- характерная черта защитников PHP.

    У меня есть опыт разработки на PHP в годах эдак 2010-2013. Вспоминаю как страшный сон все эти call_user_func_array(), любовь отечественных CMS к тухлому Zend Optimizer, неспособность обращаться к элементам возвращенного функцией массива по индексу и прочие приколюхи типа "headers already sent" из-за UTF-8 BOM. Может быть сейчас все это и неактуально, но осадочек остался навсегда.

    Даже во втором пихоне все выглядело куда более-менее органично и последовательно.

     
     
  • 4.16, Аноним (16), 14:58, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для современного кода неактуально (ну кроме BOM, а не надо так делать, это много где все сломает, тот же shebang).
    Для легаси - понятно :)
     
  • 4.18, Аноним (10), 15:43, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ну вот видишь, мои предположения подтвердились. Аргументы с 2012 года не обновились, как и знания о объекте осуждения, в отличие от языка. Типичный пример поливания грязью того, в чём не разбираешься
     
  • 4.30, Здрасьте (?), 21:04, 24/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Язык с этих времён сильно изменился. Парсер, например, вообще переписали на AST. У вас какие-то воспоминания старого деда.
     
     
  • 5.33, анон (?), 12:54, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Добавили стическую типизацию?(спойлер: нет, и никода не будет. Пытаются конечно, но до нормальных языков как до китая) Мне вот интересно, phpшники вообще никаких других языков не пробывали? Каждый год говорят что язык стал лучше - но по факту он лучше только предыдущих версий php. И не лучше любого другого языка. Смысл вообще развивать язык который изначально писался вообще без какой-либо концепции, копируя другие языки и в итоге получилось уродское нечто? только потому что его нежно любят недоучки с синдромом утенка, которые всю жизнь на нем пишут?
     
  • 2.34, анон (?), 13:01, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Осторожно анон, это же русскоязычное it комьюнити. Здесь php любят как собственного ребенка. Уродливый, хромой, но такой родной. Никакие аргументы на этих людей не действуют, ведь они никогда не видели нормальных языков. Все что они видели - это еще более убогие версии php прошлых годов.
     

  • 1.11, YetAnotherOnanym (ok), 14:07, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Модуль также позволяет создавать виртуальные патчи для устранения конкретных проблем без изменения исходных текстов уязвимого приложения, что удобно для применения в системах массового хостинга, на которых невозможно добиться поддержания всех пользовательских приложений в актуальном виде

    Архинужная вещь в мире победившего инфантилизма - чтобы можно было безнаказанно лажать и косячить, а кто-то автоматом подтирал бы за тобой лужи.

     
     
  • 2.14, онанимуз (?), 14:33, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    в основном безнаказанно лажают и косячат клиенты хостинга, ставящие пароли типа "admin" и "$названиесайта" в своих сраных вротпрессах, и потом кому-то приходится подтирать лужи за ними, и вытаскивать IP серверов из всевозможных блэклистов.
    к сожалению, исправляющих тупость пользователей модули PHP ещё не изобрели.
     
     
  • 3.22, Аноним (22), 17:20, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Интернет сделал людей неравными, но Бобби Тейблз их уравнял.
     

  • 1.15, Аноним (15), 14:33, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот же она, вот - долгожданная кнопка "Сделать зашибись"!
    Так победим.
     
     
  • 2.17, бублички (?), 15:08, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    очередной костыль, когда вдруг Suhosin (даже встроенного) оказалось недостаточно
     
     
  • 3.28, OpenEcho (?), 16:12, 24/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А вы уверены что Suhosin еще существует?
     
     
  • 4.29, бублички (?), 16:43, 24/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    разве suhosin7 забросили? признаюсь, не в курсе
     
     
  • 5.31, OpenEcho (?), 04:29, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > разве suhosin7 забросили? признаюсь, не в курсе

    Да и давно...
    Народ пытается реинкарнировать но... для 7.(3|4) так до сих пор ничего и нет, хотя и в 7.(0|1|2) пробуксовка... он и в 5.6 уже практически был заброшен, оригинальный автор на сколько я знаю ударился в джейл брейки для айфонов... А жаль, хорошая была глушилка для exec, eval...

     
     
  • 6.32, бублички (?), 06:01, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >> разве suhosin7 забросили? признаюсь, не в курсе
    > Да и давно...
    > Народ пытается реинкарнировать но... для 7.(3|4) так до сих пор ничего и
    > нет, хотя и в 7.(0|1|2) пробуксовка... он и в 5.6 уже
    > практически был заброшен, оригинальный автор на сколько я знаю ударился в
    > джейл брейки для айфонов... А жаль, хорошая была глушилка для exec,
    > eval...

    спасибо за информацию, я был не в курсе и без всякой значимой причины крайне наивно предполагал что этот модуль на каком-то этапе интегрировали непосредственно в PHP. мне это казалось логичным шагом развития

     
     
  • 7.35, OpenEcho (?), 16:22, 25/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > предполагал что этот модуль на каком-то этапе интегрировали
    > непосредственно в PHP. мне это казалось логичным шагом развития

    К сожалению - нет...
    Я мечтаю, когда подобные глушилки языка будут не только для пыха но и для WebAPI. (Был один для firefox-a но стух...)

     

  • 1.19, Аноним (19), 15:55, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    сначала делают уязвимую хрень, потом делают хрень, которая блокирует уязвимости в уязвимой хрени. герои, чо.
     
  • 1.20, Аноним (-), 16:00, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А что, seccomp и контейнеры поюзать было не проще?
     
     
  • 2.23, Аноним (23), 20:21, 22/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати это добро завезли в NGINX Unit
     

  • 1.21, Аноним (23), 17:12, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Начинания Web application firewall одобряем.
     
  • 1.24, Аноним (24), 20:35, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Снуффлеупагус. Ё-моё! :О
     
  • 1.25, cool29 (?), 22:09, 22/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    ну сейчас на PHP в основном фрэймворки используют (laravel, symfony, yii2). Там обычно хорошая защита от дурака. Например используя ORM можно вообще не использовать SQL и соответственно SQL-injection отпадает как класс. Для вывода данных (если не GraphQL или REST) обычно используют шаблонизаторы, в которых детские болезни устранены. Есть отличный пакетный менеджер и PSR-стандарты.  Это уже совершенно другой язык, и совершенно другая инфраструктура языка. И кроме того PHP-7 очень быстрый, по сравнению с предыдущими версиями. Так что в общем разрабатывать на современном PHP весьма комфортно, если конечно это не легаси-код 2012 года.
     
     
  • 2.27, Аноним (27), 05:30, 23/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Кроме фантазий PHP Junior'а, тут не показывает картину рынка.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру