Критическая уязвимость в LMCache, программном обеспечении с открытым исходным кодом, которое ускоряет работу серверов больших языковых моделей (LLM), таких как vLLM, позволяет злоумышленнику выполнять код на сервере кэша без входа в систему, и исправленная версия не доступна.
Недостаток заключается в многопроцессном режиме LMCache, где кэш работает как отдельный сервер, к которому обращаются рабочие LLM через библиотеку обмена сообщениями ZeroMQ. Одно сетевое сообщение на этот сервер может выполнять команды от имени пользователя, под которым работает процесс LMCache.
Сервер можно достичь с другой машины только в том случае, если оператор настроит его на прослушивание на маршрутизируемом адресе, а не на локальном хосте, который используется по умолчанию.
JFrog раскрыл уязвимость 7 октября и присвоил ей оценку серьезности 9.8 из 10, в критической категории, что соответствует серверу, привязанному к маршрутизируемому адресу.
Уязвимость, отслеживаемая как CVE-2026-105192, затрагивает LMCache с версии 0.3.9, выпущенной в октябре 2025 года, до 0.5.5, последней стабильной версии, и также присутствует в кандидатах на выпуск 0.5.6 и в ветке разработки. Исправленная версия не существует.
Наличие уязвимости на сервере зависит от одной настройки. По умолчанию многопроцессный сервер прослушивает только на локальной машине, поэтому другой хост не может к нему обратиться. Он становится доступным, когда оператор запускает его с маршрутизируемым адресом, подобно тому, как многонодовые развертывания делят кэш между машинами.
Собственный пример развертывания Kubernetes для LMCache запускает сервер таким образом, прослушивая на каждом сетевом интерфейсе. Копия LMCache, работающая внутри одного процесса vLLM, вообще не открывает порт.
Сокет ZeroMQ, который многопроцессный сервер открывает для регистрации рабочих процессов и обмена кэшированными данными, не имеет аутентификации. Один тип сообщения распаковывается с помощью pickle, формата Python, который может содержать код и выполнять его по мере декодирования данных. Сервер распаковывает его, все еще читая аргументы сообщения, до любой проверки типа сообщения, поэтому сконструированное сообщение может выполнить код отправителя.
Код выполняется с привилегиями процесса LMCache. На официальных контейнерных образах проекта этот процесс работает от имени root, согласно JFrog. Уязвимость была обнаружена Ювалом Моравчиком из команды безопасности JFrog.
Исправленного релиза нет. Пока он не будет выпущен, JFrog советует операторам не назначать многопроцессному серверу маршрутизируемый адрес и держать его порт на локальной машине или в доверенной кластерной сети. Брандмауэр, который ограничивает доступ к порту, снижает риск, но не устраняет его, так как любой хост, который все еще может открыть соединение, может выполнить код.
LMCache не опубликовал уведомление о безопасности по этой уязвимости. Уведомление JFrog не предоставляет операторам способа определить, был ли сервер уже атакован.
Другие отчеты и связанное исправление vLLM
Отдельно пользователь GitHub открыл шесть дополнительных отчетов о безопасности LMCache 6 октября, за день до того, как CVE-2026-105192 стал публичным. В них утверждается о неаутентифицированном доступе к кэшированным данным, принадлежащим различным арендаторам, а также к нескольким сетевым службам, которые выполняют команды без входа в систему.
Отчеты поступили от одной учетной записи, основаны на заявлениях о доказательствах концепции и не имеют CVE, подтверждения от поддерживающих и исправления. Один из них указывает на стандартный LMCache, который с тех пор изменился: HTTP-сервер администратора, который прослушивал на каждом сетевом интерфейсе в 0.5.5, теперь прослушивает только на локальном хосте в кандидатах на выпуск 0.5.6.
Связанная уязвимость в vLLM уже исправлена. До версии 0.30.0, выпущенной 22 сентября, один запрос с некорректным значением cache_salt мог привести к сбою движка на развертываниях, использующих многопроцессный коннектор LMCache, что является уязвимостью типа отказ в обслуживании, отслеживаемой как CVE-2026-105756. Она оценена в 6.5 и не позволяет выполнять код.
Основная ошибка, передача данных от неаутентифицированного сетевого сокета в pickle, является той же, которую исследователи обнаружили в других фреймворках вывода ИИ в ноябре 2025 года, в группе уязвимостей, которую они назвали ShadowMQ. Не установлено, делит ли код LMCache общий источник с этими проектами.
Считаете эту статью интересной? Подписывайтесь на нас в Google News, Twitter и LinkedIn, чтобы читать больше эксклюзивного контента, который мы публикуем.