The OpenNET Project / Index page

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

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

04.07.2019 13:06

В рамках проекта 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()".

  1. Главная ссылка к новости (https://dustri.org/b/snuffleup...)
  2. OpenNews: Доступна система обнаружения атак Suricata 4.1
  3. OpenNews: В рамках сообщества wasp-guard началось формирование распределенной системы обнаружения вторжений
  4. OpenNews: ModSecurity портирован для nginx
  5. OpenNews: GreenSQL - межсетевой экран для защиты MySQL
  6. OpenNews: Выпущен релиз ModSecurity 2.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51031-snuffleupagus
Ключевые слова: snuffleupagus, php, firewall
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (42) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 13:39, 04/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Годнота, дайте два!
     
     
  • 2.4, Cradle (?), 13:57, 04/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Hardened-PHP
    https://gsec.hitb.org/sg2018/speakers/stefan-esser
    https://www.darknet.org.uk/2007/01/php-security-specialist-stefan-esser-resign

     

  • 1.2, пох. (?), 13:41, 04/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    итого на одно разумное действие (блокировка ненужно-phar, которую  можно получить и другими методами) -мильен вредных, работать будут только васян-поделки, а весь остальной мир - как обычно, "неправильный".

     
  • 1.3, Аноним (3), 13:54, 04/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Антивирус?
     
     
  • 2.10, Аноним (10), 15:05, 04/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тут не вирус, тут попытка кодом заткнуть баги прокладки между сиденьем и клавиатурой.
     
     
  • 3.14, Аноним (14), 18:19, 04/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > попытка кодом заткнуть баги прокладки между сиденьем и клавиатурой.

    Ну да, типичный антивирус.

     

  • 1.5, Sw00p aka Jerom (?), 13:58, 04/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    и так же забросят как забросили suhosin
     
     
  • 2.6, пох. (?), 14:21, 04/07/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    у suhosin сломался автор - потому что он как раз пытался сделать так, чтобы его аддон НЕ ломал обычные сайты, написанные нашими обычными разработчиками - с руками из жопы и с головой там же.

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

    А эта поделка сделана для васян-сайта, "одного из крупных французских операторов хостинга" (читай, OVH ;-)

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

     
     
  • 3.7, пох. (?), 14:25, 04/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > А эта поделка сделана для васян-сайта, "одного из крупных французских операторов хостинга"
    > (читай, OVH ;-)

    а, хотя нет - похоже, они ее как раз дорогим юзерам навязывают.

    Ну чо,  тогда судьба довольно предсказуема - юзеру нахрен не нужно чтоб у него сайт сломался потому что "принудительно включили режим strict".

     
  • 3.17, IRASoldier_registered (ok), 21:37, 04/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >у suhosin

    Внезапно - проект таки ещё не помер.

    >А эта поделка

    - её предлагается попробовать для php >= 7.3 на страничке https://github.com/sektioneins/suhosin7

    Как-то так.

     
     
  • 4.22, Sw00p aka Jerom (?), 01:34, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >её предлагается попробовать для php >= 7.3

    пихать на прод альфу? в свое время поэтому от него и отказался, пока он под 5.3 работал, 5.6 уже стабильный был. Так и сейчас.

    >Внезапно - проект таки ещё не помер.

    помер

     
     
  • 5.25, пох. (?), 07:23, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > пихать на прод альфу?

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

    В 5.3 он как раз и окуклился - и было это в 2010м.

     
  • 5.30, IRASoldier_registered (ok), 09:44, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем на прод? Так, посмотреть.
     
     
  • 6.35, Sw00p aka Jerom (?), 13:01, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я у вас много свободного времени?
     
     
  • 7.40, IRASoldier_registered (ok), 16:07, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Иногда.
     
  • 4.24, пох. (?), 07:21, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Внезапно - проект таки ещё не помер.

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

    > предлагается попробовать для php >= 7.3

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

    imho, выкрасить и выбросить - обоих. Для своих девелоперов (если еще остались где, а не давно пишут на жабке-ээ и прочих джанках) проблема решается воскресной поркой...зачеркнуто, coding style checks при коммите и code review, а чужим ты этой штукой просто все попереломаешь, причем в непредсказуемых местах.

    С банальщиной типа проверок стремных символов и тд справляется mod_security (причем лучше - апачевский - с nginx'овым примерно то же самое что вот с suhosin)

     
     
  • 5.29, Sw00p aka Jerom (?), 09:44, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>С банальщиной типа проверок стремных символов и тд справляется mod_security (причем лучше - апачевский - с nginx'овым примерно то же самое что вот с suhosin)

    О Боже, ещё один труп реинкарнировали? С nginx сей адъ течет, плюс реализация через одно место, не говорю уже про рулы, которые байпасят школьники

     
     
  • 6.33, пох. (?), 10:27, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в том и дело, что апачевская версия 2 - вполне была живая и работающая (а если ты хостишь чужой хлам на пехепе - попытки делать это без апача только приведут к лишним неприятностям).

    неработающая третья, и это не труп, а выкидыш - он никогда живым и не был. Ну не умеют его разработчики без apr, не умеют. Заказ (или может даже грант) получили, кое-как отработали, довели проект до полуработающей беты на радость манагерам nginx.com, и бросили.

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

     
     
  • 7.36, Sw00p aka Jerom (?), 13:04, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >в том и дело, что апачевская версия 2 - вполне была живая и работающая

    согласен

    >А за правила надо - платить ;-) если, конечно, не хочется самому их изобретать.

    лучше школьникам заплатить за аудит кода, чем придумывать заплатки.

     
     
  • 8.37, пох. (?), 13:19, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    да они тебе и бесплатно наудитят, в поисках чо бы поломать - а толку-то Сам что... текст свёрнут, показать
     
  • 5.32, IRASoldier_registered (ok), 09:52, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Для своих девелоперов (если еще остались где, а не давно пишут на жабке-ээ и прочих джанках) проблема
    > решается воскресной поркой...зачеркнуто, coding style checks при коммите и code review

    Здесь, в общем, согласен. И еженедельным чтением PHP: The Right Way с отправкой избранных цитат на телефон ежедневно для утренних и вечерних медитаций. (Хотя жаба-то что, в упор не понимаю её хейтеров.)


     
     
  • 6.34, пох. (?), 10:30, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    поадминистрил бы пару лет помойку, сделанную на resin - понял бы ;-)

    (кто не в курсе - это такой php, но жаба. ;-)

     
     
  • 7.39, IRASoldier_registered (ok), 16:07, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Нафига кто-то вздумал Resin ставить? Чем кошерный Tomcat не угодил? А этот ихний Quercus - адописное зло.
     
     
  • 8.41, пох. (?), 20:01, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    10004 simple configuration you can copy paste docs you can understand - чо ... текст свёрнут, показать
     
     
  • 9.42, IRASoldier_registered (ok), 22:29, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Бл ... текст свёрнут, показать
     
  • 3.27, Аноним (27), 08:38, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >> читай, OVH

    https://www.nbs-system.com/. Хотя вряд-ли это что-то меняет :-)

     
     
  • 4.28, пох. (?), 09:38, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    поменяет - отношение к OVH - они может и любят друг-друга по-хранцузски, но хоть пользователей не пытаются.

    А эти вот похоже - совсем в плахом смисле.

     

  • 1.8, Аноним (8), 14:34, 04/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Теперь создавать IИDEX.рнр можно будет еще безопаснее
     
  • 1.9, Аноним (10), 15:03, 04/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Скажем дружно: нах@р нужно. Это не решение проблемы, а полумера - попытка угодить криворучкам и компенсировать потери от таковых.
     
     
  • 2.12, пох. (?), 17:45, 04/07/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    да какое там "угодить", он же ж все поломает к хренам.
    причем половина этих улучшизмов - какое-то феерическое ненужно, типа включения обязательной проверки сертификатов в curl (которое в седьмой версии и так включено, и приходится выключать)

     

  • 1.11, Аноним (11), 16:16, 04/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    новая разновидность манкипатчинга, лол.
     
  • 1.15, YetAnotherOnanym (ok), 19:30, 04/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вот это по пэхапэшному! Пыхеры не зря гордятся тем, что умеют писать свой код быстро, теперь мы видим, что даже анализ и патчинг их кода приходится выполнять на лету - иначе никак не угнаться.
     
     
  • 2.16, Аноним (16), 21:14, 04/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Пыхеры не зря гордятся тем, что умеют писать свой код быстро

    Чо, правда?

     

  • 1.18, mikhailnov (ok), 22:27, 04/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Нужно, спастбо разработчикам. Внедрить эту штуку гораздо проще, чем писать все самому вместо применения готовых плагинов для WordPress, при том что качество самописного кода все равно будет не лучше. Надо попробовать. Но возможность уязвимости в блокировщике уязвимостей - напрягает.
     
     
  • 2.19, Аноним (19), 22:48, 04/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > уязвимости в блокировщике уязвимостей

    Причиной пожара стало возгорание противопожарной системы ))

     
     
  • 3.23, Sw00p aka Jerom (?), 01:35, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    так все это порочный круг, щит и меч.
     

  • 1.20, Аноним (20), 00:08, 05/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Пыхокод чтобы защитить пыхокод от дыр. В чём же подвох?.. 🤔
     
     
  • 2.21, Аноним (21), 01:23, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В том, что это не пыхокод. Там .so.
     

  • 1.26, andy (??), 07:41, 05/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    виртуальный патчиг это хорошо. очень хорошо помагает, когда в проектах много легаси кода, и никто не желает в него лезть и разбиратся
     
     
  • 2.31, Аноним (31), 09:49, 05/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > виртуальный патчиг это хорошо. очень хорошо помагает, когда в проектах много легаси кода, и никто не желает в него лезть и разбиратся

    А придется, при чем в авральном режиме, когда после «виртуального патчига» внезапно отвалится то, что в принципе отваливаться не должно.

     
     
  • 3.43, Аноним (43), 01:08, 08/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    смотря на чем организовывать такой вот виртуальный патчинг. например, если на вафе, то всегда можно вендора пнуть, а не у волосы из жопы дергать..
     

  • 1.38, жека воробьев (?), 13:34, 05/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    т.е. можно не беспокоиться о безопасности и дальше писать говнокод на пхп
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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