Как уязвимость 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.


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

19817В Луксоре нашли стелу с римским императором в образе фараона 19816Экипаж Artemis II о моменте, когда земля исчезла за луной 19815Почему луна выглядит по-разному в разных точках земли? 19814Adobe экстренно закрыла опасную дыру в Acrobat Reader, которую хакеры использовали с... 19813Метеорный поток, рождённый из умирающего астероида 19812Когда робот пишет за тебя прощальную смс 19811Что общего у лунной миссии, толстого попугая, загадочной плащаницы и лекарства от диабета? 19810Какие снимки Artemis II уже стали иконами лунной программы? 19809Кто на самом деле хочет сладкого — вы или ваши бактерии? 19808Как рекламные данные 500 миллионов телефонов оказались в руках спецслужб? 19807Экипаж Artemis II вернулся на землю после десяти дней в космосе 19806Зелёная и коричневая луна: почему геологи Artemis II уже не могут усидеть на месте 19805Эксперты уверены в теплозащитном щите Artemis II, несмотря на проблемы предшественника 19804Выжить внутри торнадо: каково это — когда тебя засасывает в воронку 19803Аляскинские косатки-охотники на млекопитающих замечены у берегов Сиэтла
Ссылка