CVE-2026-84939 в Debian: обход ограничений путей в FreeMarker и текущий статус патча

CVE: CVE-2026-84939
Продукт: Debian
Дата публикации: 10.09.2026
Критичность: CRITICAL
CVSS: 9.1 (3.1)
EPSS: 0,83%; процентиль 55,51%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В Apache FreeMarker обнаружена критическая уязвимость обхода ограничений путей (CWE-23). Злоумышленник может загрузить произвольные файлы, если приложение позволяет управлять идентификатором локали.

В Debian пакет libfreemarker-java уязвим во всех актуальных релизах, исправление пока не выпущено. Статья описывает механику атаки, статус в Debian и временные меры защиты.

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


Риск заключается в возможности загрузки произвольных файлов через манипуляцию идентификатором локали, что может привести к утечке конфиденциальных данных или изменению состояния системы. Уязвимость активна по умолчанию, так как локальный поиск включен в стандартной конфигурации.

  • Тип ошибки: CWE-23 (Path Traversal). Нарушение логики проверки пути при загрузке шаблонов.
  • CVSS 3.1: 9.1 (CRITICAL). Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N. Высокая сложность эксплуатации не требуется, аутентификация не нужна.
  • Условия атаки: Злоумышленник должен иметь возможность передать произвольный идентификатор локали в приложение, использующее FreeMarker.
  • Эксплуатация: В каталоге CISA KEV не подтверждена. EPSS 0,83% (процентиль 55,51%) указывает на умеренную вероятность эксплуатации в ближайшие 30 дней.

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


Уязвимость затрагивает Apache FreeMarker версии от 2.2.0 до 2.3.34 включительно. В дистрибутиве Debian пакет libfreemarker-java содержит уязвимые версии во всех поддерживаемых и тестовых ветках. Исправленная версия 2.3.35 в репозиториях Debian отсутствует.

  • Debian bookworm: версия 2.3.31-2, статус «open», исправление не назначено.
  • Debian trixie: версия 2.3.32-2.1, статус «open», исправление не назначено.
  • Debian forky: версия 2.3.32-2.1, статус «open», исправление не назначено.
  • Debian sid (unstable): версия 2.3.32-2.1, статус «open», исправление не назначено.

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


Причина уязвимости кроется в механизме загрузки шаблонов Apache FreeMarker. Библиотека поддерживает локализацию, позволяя загружать разные версии шаблонов для разных языковых регионов. Если в конфигурации включен локальный поиск (по умолчанию он включен), FreeMarker использует переданный идентификатор локали для формирования пути к файлу шаблона.

Проверка пути не нормализует и не валидирует идентификатор локали должным образом. Злоумышленник может передать специально сформированный «некорректный» идентификатор, содержащий последовательности символов, которые интерпретируются как переход в родительские каталоги (например, ../). Это позволяет обойти ограничения, наложенные на базовый каталог загрузки шаблонов, и обратиться к файлам за его пределами.

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


Атака эксплуатирует доверие приложения к данным, переданным пользователем, в контексте выбора локали. Приложение, использующее FreeMarker, принимает от пользователя параметр, определяющий язык или регион (например, через HTTP-заголовок Accept-Language или параметр запроса). Этот параметр передается в FreeMarker как идентификатор локали.

Если локальный поиск включен, FreeMarker пытается загрузить шаблон, имя которого зависит от локали. Злоумышленник подменяет стандартный идентификатор (например, en-US) на строку, содержащую последовательности ../. FreeMarker интерпретирует эти последовательности как навигацию по файловой системе.

В результате вместо ожидаемого шаблона загружается произвольный файл, доступный процессу приложения. Ограничения TemplateLoader (например, FileTemplateLoader) могут сработать, но только если они настроены на строгий контроль базового каталога; в некоторых конфигурациях или при использовании других реализаций загрузчика эти ограничения могут быть обойдены.

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


Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:

  • Приложение использует Apache FreeMarker версии от 2.2.0 до 2.3.34.
  • В конфигурации FreeMarker включен локальный поиск (localized lookup). По умолчанию эта опция включена.
  • Злоумышленник имеет возможность контролировать значение идентификатора локали, передаваемого в FreeMarker. Это возможно, если приложение принимает данные о языке/регионе от внешнего пользователя и передает их напрямую в шаблонизатор без валидации.
  • Целевой файл, который злоумышленник пытается загрузить, доступен процессу приложения (читаемые права).

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


Типичный сценарий атаки выглядит следующим образом. Веб-приложение на Java использует FreeMarker для рендеринга страниц. Пользователь может выбрать язык интерфейса через параметр ?lang=ru. Приложение передает это значение в FreeMarker как locale.

Злоумышленник отправляет запрос с параметром ?lang=../../etc/passwd. FreeMarker, пытаясь загрузить локализированный шаблон, формирует путь, включающий ../../etc/passwd. Если TemplateLoader не блокирует выход за базовый каталог, FreeMarker загружает файл /etc/passwd как шаблон.

Содержимое файла может быть выведено на страницу или использовано для выполнения кода, если шаблон содержит директивы FreeMarker. В случае использования FileTemplateLoader с корректно настроенным baseDir, атака может быть заблокирована, но это зависит от реализации и конфигурации приложения.

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


Публичные эксплойты для CVE-2026-84939 не подтверждены в каталоге CISA KEV. В открытых источниках (NVD, Apache Mailing List) отсутствуют сведения о готовых PoC или подтвержденной эксплуатации в реальных атаках.

Однако техническое описание уязвимости достаточно подробно, чтобы разработать эксплойт. EPSS 0,83% указывает на низкую, но ненулевую вероятность эксплуатации в ближайшие 30 дней. Отсутствие публичного эксплойта не означает, что уязвимость не может быть эксплуатирована; она может быть использована целевыми злоумышленниками.

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


Специфичные индикаторы компрометации (IOC) для CVE-2026-84939 в официальных источниках не опубликованы. Ниже приведены неспецифичные признаки, которые могут указывать на попытку эксплуатации:

  • Запросы к приложению с аномальными значениями параметров, связанных с языком или локалью (например, ?lang=../.., ?locale=../../etc/passwd).
  • Запросы, содержащие последовательности ../ в параметрах, которые обычно содержат идентификаторы языков.
  • Аномальные ответы приложения, содержащие содержимое системных файлов (например, строки из /etc/passwd или /etc/shadow).
  • Увеличение объема исходящего трафика или попытки доступа к файлам вне каталога приложения.

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


Для обнаружения попыток эксплуатации следует анализировать логи веб-сервера и приложения. Ищите запросы, в которых параметры, связанные с локалью или языком, содержат последовательности ../ или абсолютные пути.

Также полезно мониторить логи FreeMarker (если они включены) на попытки загрузки шаблонов с некорректными именами. В логах операционной системы можно отслеживать попытки доступа к файлам вне каталога приложения процессом Java. Использование WAF с правилами для детектирования path traversal в параметрах запроса может помочь в перехвате атак.

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


Для проверки версии пакета libfreemarker-java в Debian используйте следующие команды. Замените <имя-пакета> на libfreemarker-java.

Bash:
cat /etc/debian_version
cat /etc/os-release
apt-cache policy libfreemarker-java
dpkg-query -W -f='${Package} ${Version}\n' libfreemarker-java

Если версия пакета ниже 2.3.35, система уязвима. В Debian на момент публикации статьи исправленная версия отсутствует во всех репозиториях.

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


Официальное исправление для Debian еще не выпущено. Пакет libfreemarker-java во всех релизах Debian (bookworm, trixie, forky, sid) содержит уязвимые версии. Рекомендуется следить за обновлениями в Debian Security Tracker.

Временная мера — отключить локальный поиск в конфигурации FreeMarker. Это можно сделать, установив параметр localized_lookup в false в конфигурации Configuration объекта FreeMarker. Если локализация не используется, это полностью устраняет уязвимость.

После выхода исправления в Debian обновите пакет через apt update && apt upgrade libfreemarker-java.

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


Пока исправление не выпущено в Debian, можно применить следующие временные меры:

  • Отключите локальный поиск в FreeMarker. В коде приложения, где инициализируется Configuration FreeMarker, установите cfg.setLocalizedLookup(false). Это предотвратит использование идентификатора локали для формирования пути к шаблону.
  • Ограничьте доступ к файловой системе. Убедитесь, что процесс приложения имеет минимально необходимые права на чтение файлов. Используйте FileTemplateLoader с четко определенным baseDir и убедитесь, что он настроен на строгий контроль путей.
  • Валидируйте входные данные. Если приложение принимает параметр локали от пользователя, валидируйте его до передачи в FreeMarker. Разрешайте только стандартные идентификаторы (например, en-US, ru-RU) и отклоняйте любые значения, содержащие ../ или абсолютные пути.

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


После применения временных мер или установки исправления проверьте, что уязвимость устранена. Для временной меры (отключение локального поиска) убедитесь, что параметр localized_lookup установлен в false в конфигурации FreeMarker.

Можно написать тестовый запрос с параметром локали, содержащим ../, и убедиться, что приложение не пытается загрузить файл вне базового каталога. Для исправления (обновление пакета) проверьте версию пакета с помощью dpkg-query -W -f='${Package} ${Version}\n' libfreemarker-java. Версия должна быть 2.3.35 или выше.

Также можно проверить, что локальный поиск по-прежнему отключен, если вы его отключали вручную.

Вывод​


CVE-2026-84939 представляет собой критическую уязвимость в Apache FreeMarker, позволяющую злоумышленнику загрузить произвольные файлы через манипуляцию идентификатором локали. В Debian пакет libfreemarker-java уязвим во всех актуальных релизах, и исправление пока не выпущено.

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

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


  1. NVD — CVE-2026-84939
  2. Debian Security Tracker — CVE-2026-84939
  3. FIRST EPSS — CVE-2026-84939

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


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