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

В рамках проекту Табакерка розвивається модуль для підключення до інтерпретатора PHP7, призначений для підвищення безпеки оточення та блокування типових помилок, що призводять до появи вразливостей у виконуваних PHP-додатках. Модуль також дозволяє створювати віртуальні патчі для усунення конкретних проблем без зміни вихідних текстів вразливого додатка, що зручно для застосування в системах масового хостингу, на яких неможливо домогтися підтримки всіх додатків користувача в актуальному вигляді. Модуль написаний мовою Сі, підключається у формі бібліотеки, що розділяється («extension=snuffleupagus.so» в php.ini) і поширюється під ліцензією LGPL 3.0.

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

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

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

З режимів підвищення захисту PHP підтримуються:

  • Автоматичне включення прапорів "secure" та "samesite" (захист від CSRF) для Cookie, шифрування Cookie;
  • Вбудований набір правил виявлення слідів здійснення атак і компрометації додатків;
  • Примусове глобальне включення режимустрогий» (наприклад, блокує спробу вказати рядок при очікуванні як аргумент цілісного значення) та захист від маніпуляцій із типами;
  • Блокування за замовчуванням обгорток для протоколів (наприклад, заборона "phar://") з їх явним дозволом за білим списком;
  • Заборона виконання файлів, які доступні на запис;
  • Чорні та білі списки для eval;
  • Увімкнення обов'язково перевірки сертифікатів TLS під час використання
    curl;

  • Додавання HMAC до серіалізованих об'єктів для гарантування того, що при десеріалізації отримані дані, збережені вихідним додатком;
  • Режим журналування запитів;
  • Блокування завантаження зовнішніх файлів у libxml за посиланнями у XML-документах;
  • Можливість підключення зовнішніх обробників (upload_validation) для перевірки та сканування файлів, що завантажуються;

Проект створено та використовується для захисту користувачів в інфраструктурі одного з великих французьких операторів хостингу. відзначається, Що просто підключення Snuffleupagus дозволило б захиститися від багатьох небезпечних вразливостей, виявлених цього року в Drupal, WordPress та phpBB. Вразливості у Magento та Horde могли б бути блоковані включенням режиму
"sp.readonly_exec.enable()".

Джерело: opennet.ru

Додати коментар або відгук