Как уязвимость LangGrinch использует инъекцию сериализации для кражи секретов?

Исследователь Ярден Порат из организации Cyata 4 декабря 2025 года сообщил о критической уязвимости в популярном Python-пакете langchain-core, который предоставляет базовые интерфейсы для приложений на основе больших языковых моделей (LLM). Уязвимость, получившая кодовое название LangGrinch и идентификатор CVE-2025-68664, была оценена как критическая с показателем 9.3 из 10.0 по шкале CVSS. Проблема кроется в механизме сериализации данных и позволяет злоумышленникам выполнять произвольный код или извлекать конфиденциальную информацию.
Как уязвимость LangGrinch использует инъекцию сериализации для кражи секретов?
Изображение носит иллюстративный характер

Техническая причина сбоя заключается в некорректной работе функций dumps() и dumpd(), которые не выполняют надлежащее экранирование пользовательских словарей, содержащих ключ «lc». В архитектуре LangChain этот ключ используется внутренними процессами для маркировки сериализованных объектов. Если контролируемые пользователем данные содержат этот ключ, система ошибочно воспринимает их как легитимный объект LangChain в процессе десериализации, а не как обычные данные, что открывает путь для инъекции сериализации.

Механизм атаки подразумевает, что злоумышленник заставляет цикл оркестрации сериализовать и затем десериализовать контент с ключом «lc». Это действие приводит к созданию небезопасного произвольного объекта, активируя пути выполнения кода, выгодные атакующему. Основным вектором атаки является промпт-инъекция, через которую злоумышленники получают контроль над такими полями, как metadata, additional_kwargs и response_metadata. Эти поля обрабатываются во время потоковых операций, позволяя вредоносному коду проникнуть в систему.

Последствия эксплуатации CVE-2025-68664 могут быть катастрофическими для безопасности приложения. Уязвимость позволяет извлекать секреты из переменных окружения, особенно если активирована настройка secrets_from_env=True. Кроме того, становится возможным небезопасное создание классов в рамках доверенных пространств имен, таких как langchain_core, langchain и langchain_community.

Помимо кражи данных, LangGrinch создает риски выполнения произвольного кода, что может быть достигнуто с использованием шаблонов Jinja2. Также злоумышленники могут манипулировать поведением LLM, влияя на ответы модели. Как отметил исследователь Ярден Порат, этот инцидент демонстрирует пересечение проблем искусственного интеллекта и классической безопасности: «Выходные данные LLM являются ненадежными входными данными».

Разработчики LangChain выпустили исправление, внедряющее строгие ограничения по умолчанию. В функции load() и loads() был добавлен новый параметр allowed_objects (белый список), определяющий допустимые классы. Использование шаблонов Jinja2 теперь заблокировано по умолчанию, а опция secrets_from_env переведена в состояние «False», что отключает автоматическую загрузку секретов из окружения.

Для устранения уязвимости в Python-пакете langchain-core пользователям версий от 0.0 до 1.2.5 необходимо обновиться до версии 1.2.5. Для тех, кто использует версии ниже 0.3.81, исправление включено в выпуск 0.3.81. Обновление является обязательным для предотвращения рисков удаленного выполнения кода и утечки данных.

Аналогичная уязвимость инъекции сериализации была обнаружена и в JavaScript-версии библиотеки — LangChain.js. Ей присвоен идентификатор CVE-2025-68665 и оценка CVSS 8.6. Проблема также связана с неправильным экранированием ключей «lc», что требует немедленного обновления затронутых пакетов в экосистеме JavaScript.

Исправления для JavaScript-экосистемы распределены по нескольким пакетам. Основная библиотека LangChain.js (версии от 0.0 до 1.1.8) исправлена в версии 1.1.8. Пакет @langchain/core версии ниже 0.3.80 обновлен в версии 0.3.80. Для пакета langchain версии от 1.0.0 до 1.2.3 патч выпущен в версии 1.2.3, а для версий ниже 0.3.37 — в 0.3.37.


Новое на сайте

19989Шесть историй, которые умещаются на ладони 19986Как 30 000 аккаунтов Facebook оказались в руках вьетнамских хакеров? 19985LofyGang вернулась: как бразильские хакеры охотятся на геймеров через поддельные читы 19984Автономная проверка защиты: как не отстать от ИИ-атак 19983Взлом Trellix: хакеры добрались до исходного кода одной из ведущих компаний по... 19982Почему почти 3000 монет в норвежском поле перевернули представление о викингах? 19981Как поддельная CAPTCHA опустошает ваш счёт и крадёт криптовалюту? 19980Слежка за каждым шагом: как ИИ превращает государство в машину тотального контроля 19979Как хакеры грабят компании через звонок в «техподдержку» 19978Почему именно Нью-Йорк стал самым уязвимым городом восточного побережья перед... 19977Как одна команда git push открывала доступ к миллионам репозиториев 19976Зачем древние народы убивали ножами и мечами: оружие как основа власти 19975Как Python-бэкдор DEEPDOOR крадёт ваши облачные пароли незаметно? 19974Послание в бутылке: математика невозможного 19973Почему ИИ-инфраструктура стала новой целью хакеров быстрее, чем ждали все?
Ссылка