Критическая уязвимость в популярной PHP-библиотеке: угроза для тысяч сайтов

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Критическая уязвимость в популярной PHP-библиотеке: что нужно знать разработчикам

Команда исследователей в области кибербезопасности из компании SonarSource опубликовала отчет о критической уязвимости, обнаруженной в одной из самых распространенных PHP-библиотек для работы с шаблонами — Smarty. Уязвимость, получившая идентификатор CVE-2024-35227, позволяет злоумышленнику удаленно выполнять произвольный код на сервере, что может привести к полной компрометации веб-приложения.

Детали уязвимости

Проблема связана с механизмом обработки пользовательского ввода в функции fetch() библиотеки Smarty. При небезопасной настройке и отсутствии фильтрации данных, атакующий может передать вредоносную строку, которая будет интерпретирована как PHP-код. По шкале CVSS v3.1 уязвимость получила максимальный балл 9.8 (Critical).

Основные характеристики уязвимости:

  • Вектор атаки: удаленный (Network)
  • Сложность эксплуатации: низкая (Low)
  • Требуемые привилегии: отсутствуют (None)
  • Влияние на целостность: полное (High)

Затронутые версии

Уязвимость затрагивает все версии библиотеки Smarty вплоть до 4.3.2 и 5.0.1. Разработчики библиотеки уже выпустили патчи в версиях 4.3.3 и 5.0.2 соответственно. Всем пользователям настоятельно рекомендуется немедленно обновить библиотеку.

Как проверить уязвимость вашего проекта

Чтобы убедиться, что ваш проект не подвержен риску, выполните следующие шаги:

  • Проверьте версию Smarty в файле composer.json или vendor/smarty/smarty/Smarty.class.php.
  • Если версия ниже 4.3.3 или 5.0.2 (в зависимости от ветки), выполните обновление: composer update smarty/smarty.
  • Проверьте все места в коде, где используется функция fetch() с пользовательскими данными.

Рекомендации по защите

Помимо немедленного обновления библиотеки, эксперты советуют следовать общим правилам безопасности:

  • Всегда фильтруйте и экранируйте пользовательский ввод.
  • Используйте принцип минимальных привилегий для файловых операций.
  • Регулярно обновляйте все зависимости проекта.
  • Применяйте инструменты статического анализа кода (SAST) для поиска уязвимостей.

История и контекст

Smarty — одна из старейших PHP-библиотек для шаблонизации, выпущенная в 2004 году. Она используется в таких популярных CMS, как Drupal (через модули), PrestaShop и многих самописных проектах. По оценкам аналитиков, уязвимость потенциально затрагивает более 100 000 веб-сайтов по всему миру.

Это не первая серьезная проблема безопасности в библиотеке. В 2021 году была обнаружена уязвимость CVE-2021-29454, связанная с инъекцией шаблонов. Разработчики Smarty оперативно выпускают исправления, но число устаревших версий в продакшене остается высок

Рекомендуем библотеки