Уязвимость в LangChainGo позволяет считывать конфиденциальные данные через внедрение вредоносных промптов

vulnerability

В системе безопасности LangChainGo, Go-реализации фреймворка LangChain для работы с большими языковыми моделями, обнаружена критическая уязвимость, позволяющая злоумышленникам читать произвольные файлы на сервере путём внедрения вредоносных шаблонов промптов. Проблема получила идентификатор CVE-2025-9556 и была официально объявлена 12 сентября 2025 года.

Детали уязвимости

Уязвимость возникает из-за особенностей работы движка Gonja, который применяется в LangChainGo для обработки шаблонов и поддерживает синтаксис Jinja2. Именно эта поддержка становится вектором атаки: злоумышленники могут манипулировать такими директивами, как {% include %}, {% from %} и {% extends %}, чтобы заставить систему загружать и отображать содержимое файлов из файловой системы сервера.

В нормальных условиях эти функции предназначены для создания модульных и повторно используемых шаблонов. Однако если ввод, контролируемый пользователем, передаётся непосредственно в движок шаблонов, возникает риск выполнения серверной инъекции шаблонов (SSTI). Это позволяет атакующему получить доступ к критически важным системным файлам, таким как /etc/passwd, конфигурационные файлы, закрытые ключи или учетные данные пользователей.

Эксплуатация уязвимости не требует от злоумышленника специальных привилегий - достаточно доступа к полю ввода промпта. Это особенно опасно в средах, где LangChainGo используется для чат-ботов или других сервисов на основе языковых моделей. Раскрытие чувствительной информации может открыть путь к дальнейшим атакам, включая повышение привилегий или перемещение внутри сети.

Разработчики LangChainGo уже отреагировали на угрозу и выпустили обновление, в которое добавили функцию RenderTemplateFS. Этот механизм изолирует процесс обработки шаблонов от прямого доступа к файловой системе и предоставляет безопасный способ включения только разрешённых файлов. Также в движок были добавлены проверки, блокирующие несанкционированное чтение файлов.

Пользователям настоятельно рекомендуется немедленно обновить LangChainGo до последней версии, выполнив команду:

После обновления следует проверить пользовательские шаблоны и убедиться, что для их обработки используется RenderTemplateFS вместо устаревших функций.

Обнаружение и описание уязвимости было выполнено при участии экспертов KBCert, которые подчеркивают важность своевременного применения исправлений и пересмотра практик работы с шаблонами в разработке приложений с использованием языковых моделей.

Ссылки

Комментарии: 0