CVE-2026-82531 в Debian: инъекция PHP-кода в Smarty через наследование шаблонов и что делать администратору

CVE: CVE-2026-82531
Продукт: Debian
Дата публикации: 06.10.2026
Критичность: CRITICAL
CVSS: 9.2 (4.0)
EPSS: 0,82%; процентиль 55,95%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В шаблонизаторе Smarty (версии до 4.5.8 в ветке 4.x и до 5.8.5 в ветке 5.x) обнаружена уязвимость CWE-94 — внедрение кода, приводящая к удалённому выполнению произвольного PHP. В Debian уязвимы пакеты smarty3 и smarty4; по данным Debian Security Tracker, исправленные версии в репозиториях дистрибутива пока не опубликованы, поэтому администраторам нужно контролировать статус пакета и применять компенсирующие меры.

Основные характеристики​


Суть риска: атакующий может через данные, передаваемые в шаблоны Smarty, внедрить PHP-код в кеш-файл шаблонизатора, который выполнится при подключении — это прямой путь к удалённому выполнению кода на веб-сервере.

Ключевые параметры:

  • Тип ошибки: CWE-94 (code injection) — внедрение кода через некорректно обрабатываемые данные шаблонов.
  • CVSS v4.0: 9.2, CRITICAL, вектор CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X — сетевой вектор без прав и взаимодействия с пользователем, но с повышенными условиями атаки (AT:P).
  • Затронутые версии Smarty: до 4.5.8 (ветка 4.x) и до 5.8.5 (ветка 5.x).
  • Статус в Debian: для пакетов smarty3 и smarty4 уязвимость открыта во всех отслеживаемых релизах, исправленные версии пока не назначены.
  • EPSS: 0,821% (процентиль 55,96%) — оценка вероятности эксплуатации в ближайшие 30 дней; метрика может измениться.
  • CISA KEV: подтверждения присутствия в каталоге нет.

Какие продукты и версии затронуты​


Уязвимость касается библиотеки Smarty — шаблонизатора PHP, который в Debian поставляется отдельными пакетами. По данным Debian Security Tracker затронуты:

  • smarty3 — в bookworm (3.1.47-2+deb12u1), trixie, sid и forky (3.1.48-2); исправленная версия не назначена.
  • smarty4 — в bookworm (4.3.0-1+deb12u2), trixie, sid и forky (4.5.5-1); исправленная версия не назначена, зарегистрирован баг Debian №1150192.

Версии пакетов Debian и версии самой библиотеки — разные вещи: уязвимы все Smarty до 4.5.8 и 5.x до 5.8.5. Пакеты smarty3/smarty4 содержат ветки 3.x и 4.x соответственно, то есть обе попадают в уязвимый диапазон. Список затронутых продуктов на уровне NVD на момент анализа ещё не заполнен (статус «Awaiting Analysis»).

Причина уязвимости​


Причина — дефект обработки наследования шаблонов. При использовании механизма extends: и многосоставного наследования шаблонов (multi-component template inheritance) верхнеуровневое значение nocache_hash не восстанавливается и остаётся null.

Из-за этого нарушается целостность механизма кеширования Smarty: маркеры SmartyNocache, предназначенные для разграничения кешируемого и некешируемого содержимого, перестают проверяться корректно. Атакующий может передать в назначенных шаблону данных (assigned data) поддельный маркер SmartyNocache, который копируется дословно в заново генерируемый PHP-файл кеша.

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

Как работает атака​


Путь данных выглядит так: внешние данные, назначенные шаблону (assigned data), попадают в процесс компиляции шаблона. При наследовании через extends: или многосоставное наследование nocache_hash верхнего уровня не восстанавливается и остаётся null, из-за чего контроль за маркерами SmartyNocache ослабевает.

Далее поддельный маркер SmartyNocache, содержащийся в назначенных данных, копируется без фильтрации в regenerated PHP cache file — файл кеша, который Smarty генерирует как обычный PHP-код. Когда этот кеш-файл подключается через include, внедрённый PHP-код выполняется на сервере с правами процесса PHP.

Результат — удалённое выполнение произвольного кода (RCE). Конкретные сценарии доставки данных (какие поля приложения достигают assigned data) зависят от приложения и в доступных источниках не описаны; администраторам следует оценивать, есть ли в их приложениях пути, по которым контролируемые пользователем данные попадают в шаблоны.

Условия успешной эксплуатации​


Точные условия эксплуатации в описании CVE даны лишь частично. Подтверждённые и логически следующие из описания условия:

  • уязвимая версия Smarty (до 4.5.8 или 5.x до 5.8.5);
  • использование наследования шаблонов через extends: или многосоставное наследование;
  • возможность атакующего влиять на данные, назначаемые шаблону (assigned data), с содержимым, включающим поддельный маркер SmartyNocache;
  • активное кеширование шаблонов с записью PHP-файлов кеша и их последующим подключением.

Вектор CVSS указывает на сетевую атаку без привилегий и без участия пользователя, но с повышенными условиями проведения (AT:P). Какие прикладные конфигурации делают assigned data управляемыми извне — в источниках не раскрыто и требует индивидуального анализа приложения.

Возможный сценарий атаки​


Разумный сценарий (защитный вывод, а не подтверждённый факт эксплуатации): приложение на PHP использует Smarty с наследованием шаблонов и передаёт в шаблоны данные, частично контролируемые пользователем.

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

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

Есть ли публичный эксплойт​


В переданных источниках нет сведений о публичном PoC-коде, техническом разборе с готовой эксплуатацией или подтверждённых атаках в дикой природе.

Отсутствие таких сведений не означает, что эксплойт невозможен: уязвимость опубликована недавно, а описание достаточно детально для самостоятельной разработки эксплойта.

CISA KEV не содержит подтверждения эксплуатации. Статус NVD — «Awaiting Analysis», что ограничивает полноту оценки.

Признаки эксплуатации​


Специфичные IOC для этой уязвимости в доступных источниках не опубликованы. Неспецифичные точки контроля, применимые к любому внедрению кода через кеш шаблонов:

  • неожиданные изменения или аномальное содержимое файлов в каталоге кеша Smarty (compile/cache-директории);
  • записи веб-сервера и PHP-логов о запросах, после которых происходила перегенерация кеша;
  • появление новых PHP-файлов или необычных конструкций в существующих кеш-файлах;
  • исходящие соединения от процессов PHP, не характерные для приложения.

Эти признаки не являются подтверждёнными индикаторами именно CVE-2026-82531 и служат общими точками мониторинга.

Как обнаружить атаку​


Обнаружение строится на двух уровнях. Первый — инвентаризация: определить, используется ли в системе Smarty и какой версии, через пакетный менеджер Debian (команды приведены ниже) либо через composer-зависимости приложения.

Второй — поведенческий контроль. Поскольку специфичных IOC нет, разумно:

  • настроить мониторинг целостности каталогов кеша/компиляции Smarty (например, средствами AIDE или аналогов);
  • проверять кеш-файлы на наличие маркеров SmartyNocache в сочетании с подозрительным PHP-кодом;
  • анализировать журналы веб-сервера на запросы, приводящие к перегенерации кеша.

Это общие меры, а не подтверждённые сигнатуры атаки.

Как проверить свою версию​


Проверка версии Debian и установленных пакетов:

bash
cat /etc/debian_version
cat /etc/os-release

Проверка установленных версий уязвимых пакетов (замените <имя-пакета> на smarty3 или smarty4):

bash
apt-cache policy <имя-пакета>
dpkg-query -W -f='${Package} ${Version}\n' <имя-пакета>

Сверьте вывод с версиями из Debian Security Tracker: для smarty3 в bookworm это 3.1.47-2+deb12u1, для smarty4 в bookworm — 4.3.0-1+deb12u2; в trixie/sid/forky — 3.1.48-2 и 4.5.5-1 соответственно. Все перечисленные версии уязвимы, исправленных пока нет. Если приложение ставит Smarty через Composer, дополнительно проверьте версию библиотеки в composer.lock.

Исправление​


Верхнеуровневое исправление выпущено в Smarty 4.5.8 (ветка 4.x) и 5.8.5 (ветка 5.x) — соответствующие релизы и коммиты опубликованы в репозитории проекта smarty-php на GitHub.

Для Debian ситуация на момент подготовки материала иная: по данным Debian Security Tracker для пакетов smarty3 и smarty4 во всех отслеживаемых релизах (bookworm, trixie, sid, forky) статус «open», исправленные версии не назначены, срочность — «not yet assigned». Готового обновления в репозиториях дистрибутива пока нет.

Практические шаги:

  • отслеживать страницу CVE-2026-82531 в Debian Security Tracker до появления исправленных версий;
  • для приложений, управляющих зависимостями через Composer, обновить библиотеку Smarty до 4.5.8/5.8.5 в соответствии с политикой организации;
  • использовать зарегистрированный в Debian баг №1150192 (для smarty4) для отслеживания прогресса исправления.

Временные меры защиты​


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

  • исключить или ограничить использование наследования шаблонов через extends: и многосоставное наследование там, где это возможно;
  • гарантировать, что данные, назначаемые шаблонам, не содержат контролируемых пользователем фрагментов, способных сформировать маркер SmartyNocache;
  • ограничить права процесса PHP на запись в каталоги кеша только необходимыми путями;
  • очистить каталоги кеша/компиляции Smarty после изменения конфигурации и контролировать их целостность.

Эти меры снижают вероятность эксплуатации, но не заменяют обновление до исправленной версии библиотеки.

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


После появления исправленного пакета в Debian проверка выполняется так:

bash
apt-cache policy <имя-пакета>
dpkg-query -W -f='${Package} ${Version}\n' <имя-пакета>

Код:
(замените `<имя-пакета>` на `smarty3` или `smarty4`). Убедитесь, что установленная версия не ниже исправленной, указанной в Debian Security Tracker, и что статус записи CVE для вашего релиза сменился с «open» на «fixed». Для Composer-приложений проверьте версию Smarty в `composer.lock` и убедитесь, что она не ниже 4.5.8 или 5.8.5.

## Вывод

CVE-2026-82531 — критическая (CVSS 4.0: 9.2) уязвимость внедрения PHP-кода в Smarty, исправленная в апстриме в версиях 4.5.8 и 5.8.5. В Debian исправленные пакеты пока не опубликованы, поэтому обновление «через apt» на данный момент недоступно.

Реакцию откладывать не стоит: зафиксируйте факт использования Smarty, оцените, попадают ли внешние данные в шаблоны, примените компенсирующие меры и следите за Debian Security Tracker.

Для приложений с Composer-зависимостями прямое обновление библиотеки до исправленной версии — самый быстрый путь закрытия риска.

## Официальные источники

1. [NVD — CVE-2026-82531](https://nvd.nist.gov/vuln/detail/CVE-2026-82531)
2. [Debian Security Tracker — CVE-2026-82531](https://security-tracker.debian.org/tracker/CVE-2026-82531)
3. [FIRST EPSS — CVE-2026-82531](https://api.first.org/data/v1/epss?cve=CVE-2026-82531)

## История обновлений статьи

- **08.10.2026** — Опубликована первая версия материала.
 
Назад
Верх Низ