CVE-2026-43632 в Ubuntu: Use-After-Free в llama.cpp

CVE: CVE-2026-43632
Продукт: Ubuntu
Дата публикации: 07.08.2026
Критичность: CRITICAL
CVSS: 9.2 (4.0)
EPSS: 0,33%; процентиль 25,87%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В Ubuntu 26.04 LTS выявлена уязвимость CVE-2026-43632 (CVSS 9.2) в пакете llama.cpp версии 8681+dfsg-1. Ошибка Use-After-Free в llama-server затрагивает шесть токенизационных эндпоинтов. При использовании флага --sleep-idle-seconds возникает гонка состояний, позволяющая вызвать сбой сервиса или потенциально выполнить код.

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


Уязвимость затрагивает сборки llama.cpp от b7492 до b9060. В Ubuntu 26.04 LTS это соответствует пакету версии 8681+dfsg-1. Проблема локализована в компоненте llama-server: шесть HTTP-эндпоинтов токенизации (/tokenize, /detokenize, /infill, /apply-template, /rerank, /anthropic/count_tokens) обращаются к структуре ctx_server.vocab напрямую, минуя очередь задач. Это создает условие для гонки состояний (TOCTOU) между рабочими потоками и основным потоком. Оценка CVSS v4.0 составляет 9.2 (Critical), классификация Ubuntu — medium. EPSS равен 0.33%.

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


Затронута операционная система Ubuntu 26.04 LTS. Уязвим исходный пакет llama.cpp версии 8681+dfsg-1. Под воздействием находятся следующие бинарные пакеты этой версии: libllama0, llama.cpp, llama.cpp-examples, llama.cpp-tests, llama.cpp-tools, llama.cpp-tools-extra и python3-gguf.

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


Причиной является нарушение потоковой безопасности в реализации llama-server. Указанные токенизационные эндпоинты обходят стандартный механизм очереди задач и получают прямой доступ к словарю (vocab) из HTTP-рабочих потоков. Синхронизация не гарантирует сохранность словаря на протяжении всего времени обработки запроса. При активации механизма сна (--sleep-idle-seconds) основной поток может освободить память словаря сразу после снятия блокировки, пока рабочий поток продолжает использовать указатель на эту память.

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


Эксплуатация базируется на гонке состояний Time-of-Check-Time-of-Use. Атакующий направляет запросы на уязвимые эндпоинты. В момент, когда основной поток инициирует освобождение словаря (например, по таймауту --sleep-idle-seconds), он снимает синхронизационную блокировку. Если рабочий HTTP-поток в этот интервал обращается к уже освобожденной памяти, происходит обращение к висячему указателю (Use-After-Free). Результатом является неопределенное поведение: от немедленного краша процесса (DoS) до возможности выполнения произвольного кода при контроле содержимого переприоблаженной памяти.

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


Необходимо наличие запущенного llama-server с уязвимой версией пакета. Критическим условием является использование конфигурации с флагом --sleep-idle-seconds, который активирует механизм освобождения ресурсов словаря. Атакующий должен иметь сетевой доступ к HTTP-интерфейсу сервера. Уязвимость позволяет удаленную эксплуатацию без аутентификации (PR:N), но требует сложных условий доступа (AC:H) и наличия специфической конфигурации (AT:P).

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


Атакующий обнаруживает экземпляр llama-server с открытым HTTP-интерфейсом. Он отправляет серию запросов на эндпоинты токенизации, например /tokenize. Параллельно атакующий пытается спровоцировать срабатывание таймера --sleep-idle-seconds, чтобы заставить основной поток освободить словарь. В момент освобождения памяти атакующий продолжает отправлять запросы, пытаясь поймать момент, когда рабочий поток попытается прочитать уже освобожденную область памяти. Успешная гонка приводит к падению сервиса (отказ в обслуживании) или, в более сложном сценарии, к выполнению вредоносного кода.

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


В открытом доступе отсутствуют подтвержденные рабочие эксплойты (PoC) для массового использования. Техническое описание уязвимости и патчи доступны в репозиториях разработчиков. Наличие подробного описания механизма гонки состояний позволяет исследователям воспроизвести условие сбоя. Эксплуатация в реальных атаках на Ubuntu-системы не подтверждена.

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


Специфичные индикаторы компрометации (IOC) для CVE-2026-43632 не опубликованы. Общие признаки атаки включают необычные всплески запросов к эндпоинтам токенизации (/tokenize, /detokenize и др.) с последующими сбоями процесса llama-server. В системных журналах могут появляться сообщения об ошибках сегментации (segfault) или нехватки памяти в процессе llama-server. Мониторинг частоты перезапусков сервиса является неспецифичным, но полезным методом выявления аномалий.

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


Для обнаружения попыток эксплуатации рекомендуется анализировать логи HTTP-сервера на предмет интенсивных запросов к токенизационным эндпоинтам. Системы мониторинга должны отслеживать внезапные падения процесса llama-server, особенно если они коррелируют с активностью на этих эндпоинтах. Также полезно проверять системные журналы (dmesg, syslog) на наличие ошибок доступа к памяти (SIGSEGV) в процессе llama-server. Использование инструментов аудита конфигурации поможет выявить наличие флага --sleep-idle-seconds.

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


Для проверки версии установленного пакета llama.cpp в Ubuntu используйте команду:

Bash:
apt-cache policy llama.cpp

Также можно проверить версию ядра и релиз ОС:

Bash:
cat /etc/os-release
uname -r

Для комплексного анализа безопасности используйте:

Bash:
ubuntu-security-status

Если версия пакета равна 8681+dfsg-1, система уязвима.

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


Единственным надежным способом устранения уязвимости является обновление пакета llama.cpp до исправленной версии. В Ubuntu 26.04 LTS обновления распространяются через официальные репозитории. Выполните обновление системы:

Bash:
sudo apt update
sudo apt upgrade llama.cpp

Убедитесь, что установлены все пакеты из группы llama.cpp (libllama0, llama.cpp-tools и др.), так как они имеют одинаковый номер версии и могут содержать исправления. Перезапустите сервис llama-server после обновления.

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


До применения обновления можно снизить риск, изменив конфигурацию llama-server. Отключите использование флага --sleep-idle-seconds, если это возможно в вашей среде, так как именно этот параметр активирует механизм освобождения словаря, приводящий к гонке состояний. Ограничьте сетевой доступ к HTTP-интерфейсу llama-server только доверенным IP-адресам с помощью фаервола (ufw/iptables). Рассмотрите возможность временного отключения уязвимых эндпоинтов токенизации, если функциональность не требуется.

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


После обновления проверьте версию пакета:

Bash:
apt-cache policy llama.cpp

Убедитесь, что установленная версия (Installed) отличается от 8681+dfsg-1 и соответствует последней доступной в репозитории. Перезапустите сервис llama-server и проверьте логи на отсутствие ошибок сегментации. Выполните тестовые запросы к токенизационным эндпоинтам, чтобы убедиться в стабильности работы. Используйте ubuntu-security-status для подтверждения применения всех критических обновлений безопасности.

Вывод​


CVE-2026-43632 представляет серьезную угрозу для систем Ubuntu 26.04 LTS, использующих llama.cpp. Уязвимость позволяет вызывать сбой сервиса или потенциально выполнять код через гонку состояний в многопоточном доступе к словарю. Обновление пакета llama.cpp является обязательным. Временные меры, такие как отключение флага --sleep-idle-seconds и ограничение сетевого доступа, могут снизить риск до момента применения патча.

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


  1. NVD — CVE-2026-43632
  2. Ubuntu OSV — CVE-2026-43632
  3. FIRST EPSS — CVE-2026-43632

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


  • 11.08.2026 — Опубликована первая версия материала.
  • 16.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ