Суть проблемы в том, что многие ИИ-сервера принимают сообщения через ZeroMQ и сразу же десериализуют их с помощью небезопасного Python pickle. Если злоумышленник может достучаться до такого сокета, он получает возможность выполнить любой код на сервере.
🕖 История началась с того, что исследователи обнаружили уязвимость в Meta* Llama Stack — одном из наиболее популярных стеков для развёртывания LLM в продакшене. Во время анализа они заметили, что опасный вызов recv_pyobj() из ZeroMQ, который автоматически десериализует входящие данные через Python pickle, используется без каких-либо проверок и аутентификации.
Это уже само по себе серьёзная проблема: любой полученный объект может превращаться в исполняемый код.
Однако самое любопытное началось позже. Когда специалисты сравнили найденный у Meta* код с реализациями других инференс-серверов, стало очевидно, что дело не в случайном совпадении. Конкретные файлы и целые модули практически один в один повторяли структуру и логику уязвимого фрагмента. Линии, функции, вызовы — всё совпадало почти побитно.
Так выяснилось, что при создании инфраструктуры многие разработчики ориентировались на открытые примеры и использовали готовые шаблоны ZeroMQ для коммуникации между процессами.
И вместо того, чтобы адаптировать их или усилить безопасность, эти примеры переносились напрямую — вместе с уязвимостью.
В результате ShadowMQ «перекочевал» в другие крупные проекты:
🔅NVIDIA TensorRT-LLM — высокопроизводительная платформа инференса на GPU
🔅vLLM — один из самых популярных серверов LLM благодаря скорости и оптимизации памяти
🔅SGLang — крайне востребованный фреймворк, который используют крупнейшие техкомпании и облачные провайдеры
🔅Modular Max Server — часть новой многообещающей экосистемы Modular
🔅Microsoft Sarathi-Serve — серверная инфраструктура Microsoft для LLM
Распространение оказалось настолько широким, что исследователи сравнили его с
вирусом
, который «передаётся» через копипасту исходников. Не через зависимости, не через сторонние библиотеки, а через прямое использование одного и того же шаблонного кода, который считался безопасным, но оказался критически уязвимым.
⚡️ Почему это так опасно
Инференс-сервера — это не «второстепенные компоненты», а ядро современной AI-инфраструктуры:
🔅Они управляют вычислениями на мощных GPU-кластерах
🔅Обслуживают высоконагруженные модели
🔅Работают внутри корпоративных и облачных систем
🔅Обрабатывают пользовательские данные и результаты моделей
RCE
в такой точке превращается в серьёзную угрозу: доступ к модели, краже данных, внедрение вредоносных нагрузок, полный захват хоста. Дополнительный риск — десятки и сотни
ZMQ-сокетов
, обнаруженных открытыми в интернет без аутентификации.
🔔 Что уже исправлено, а что нет
Несколько проектов выпустили патчи достаточно быстро: Meta*, NVIDIA, vLLM и Modular закрыли уязвимости.
Но:
🔅Microsoft Sarathi-Serve до сих пор без исправления
🔅У SGLang фикс признан частичным, уязвимость остаётся в актуальной версии
И это особенно тревожно, учитывая, что SGLang используют компании масштаба AMD, NVIDIA, Intel, LinkedIn, Oracle Cloud, а также крупнейшие облака — Google Cloud, AWS и Azure.
➡️ Что делать организациям
Чтобы исключить риск эксплуатации ShadowMQ, специалисты рекомендуют: обновить затронутые компоненты до версий с патчами, закрыть ZMQ-сокеты от внешнего доступа и ограничить их внутренними сетями, включить аутентификацию сообщений, отказаться от использования pickle для обработки данных из сети.
*Meta признана экстремисской организацией на територии Российской Федерации
