В системе безопасности LangChainGo, Go-реализации фреймворка LangChain для работы с большими языковыми моделями, обнаружена критическая уязвимость, позволяющая злоумышленникам читать произвольные файлы на сервере путём внедрения вредоносных шаблонов промптов. Проблема получила идентификатор CVE-2025-9556 и была официально объявлена 12 сентября 2025 года.
Детали уязвимости
Уязвимость возникает из-за особенностей работы движка Gonja, который применяется в LangChainGo для обработки шаблонов и поддерживает синтаксис Jinja2. Именно эта поддержка становится вектором атаки: злоумышленники могут манипулировать такими директивами, как {% include %}, {% from %} и {% extends %}, чтобы заставить систему загружать и отображать содержимое файлов из файловой системы сервера.
В нормальных условиях эти функции предназначены для создания модульных и повторно используемых шаблонов. Однако если ввод, контролируемый пользователем, передаётся непосредственно в движок шаблонов, возникает риск выполнения серверной инъекции шаблонов (SSTI). Это позволяет атакующему получить доступ к критически важным системным файлам, таким как /etc/passwd, конфигурационные файлы, закрытые ключи или учетные данные пользователей.
Эксплуатация уязвимости не требует от злоумышленника специальных привилегий - достаточно доступа к полю ввода промпта. Это особенно опасно в средах, где LangChainGo используется для чат-ботов или других сервисов на основе языковых моделей. Раскрытие чувствительной информации может открыть путь к дальнейшим атакам, включая повышение привилегий или перемещение внутри сети.
Разработчики LangChainGo уже отреагировали на угрозу и выпустили обновление, в которое добавили функцию RenderTemplateFS. Этот механизм изолирует процесс обработки шаблонов от прямого доступа к файловой системе и предоставляет безопасный способ включения только разрешённых файлов. Также в движок были добавлены проверки, блокирующие несанкционированное чтение файлов.
Пользователям настоятельно рекомендуется немедленно обновить LangChainGo до последней версии, выполнив команду:
1 | go get github.com/tmc/langchaingo@latest |
После обновления следует проверить пользовательские шаблоны и убедиться, что для их обработки используется RenderTemplateFS вместо устаревших функций.
Обнаружение и описание уязвимости было выполнено при участии экспертов KBCert, которые подчеркивают важность своевременного применения исправлений и пересмотра практик работы с шаблонами в разработке приложений с использованием языковых моделей.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2025-9556
- https://nvd.nist.gov/vuln/detail/CVE-2025-9556
- https://github.com/tmc/langchaingo/pull/1348
- https://github.com/tmc/langchaingo/security/advisories/GHSA-mgcj-g55g-rf6h