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


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

19216Смертельный симбиоз спама и эксплойтов: как хакеры захватывают корпоративные сети за 11... 19215Как новые SaaS-платформы вроде Starkiller и 1Phish позволяют киберпреступникам незаметно... 19214Инженерия ужаса: как паровые машины и математика создали гений Эдгара Аллана по 19213Трансформация первой линии SOC: три шага к предиктивной безопасности 19212Архитектура смыслов в профессиональной редактуре 19211Манипуляция легитимными редиректами OAuth как вектор скрытых атак на правительственные... 19210Как активно эксплуатируемая уязвимость CVE-2026-21385 в графике Qualcomm привела к... 19209Как беспрецедентный бунт чернокожих женщин в суде Бостона разрушил планы рабовладельцев? 19208Как новые поколения троянов удаленного доступа захватывают системы ради кибершпионажа и... 19207Почему мировые киберпреступники захватили рекламные сети, и как Meta вместе с властями... 19206Как фальшивый пакет StripeApi.Net в NuGet Gallery незаметно похищал финансовые API-токены... 19205Зачем неизвестная группировка UAT-10027 внедряет бэкдор Dohdoor в системы образования и... 19204Ритуальный предсвадебный плач как форма протеста в традиционном Китае 19203Невидимая угроза в оперативной памяти: масштабная атака северокорейских хакеров на... 19202Как уязвимость нулевого дня в Cisco SD-WAN позволяет хакерам незаметно захватывать...
Ссылка