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** — Опубликована первая версия материала.
