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
Возможный сценарий атаки
Атакующий обнаруживает экземпляр 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 и ограничение сетевого доступа, могут снизить риск до момента применения патча.
Официальные источники
История обновлений статьи
- 11.08.2026 — Опубликована первая версия материала.
- 16.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
