在广受欢迎的大语言模型编排框架LangChain的Go语言实现版本LangChainGo中,发现了一个高严重性漏洞。
该漏洞编号为CVE-2025-9556,允许未认证的攻击者通过恶意构造的提示词模板执行任意文件读取操作,无需直接获取系统访问权限即可有效泄露敏感的服务器文件。
1. CVE-2025-9556, Jinja2 prompt injection enables arbitrary file reads.
2. Requires only prompt access, exposing shared deployments.
3. Fixed with RenderTemplateFS or NewSecureTemplate.
服务器端模板注入
LangChainGo依赖于Gonja模板引擎(Python的Jinja2在Go语言中的移植版本)来解析和渲染动态提示词。
CERT协调中心和软件工程研究所报告称,Gonja与Jinja2指令(如{% include %}、{% from %}和{% extends %})的兼容性支持可重用模板,但在渲染不可信内容时也会引入危险的文件系统交互。
攻击者提交的提示中包含如下之类的有效载荷:
这可能会迫使LangChainGo加载并返回内容。由于Gonja原生支持Jinja2语法,因此可以使用嵌套语句或自定义宏等高级模板结构,在单个注入字符串中遍历目录或链接多个文件读取操作。
在由LangChainGo驱动的大语言模型聊天环境中,唯一的前提条件是能够访问提示词提交界面,这使得远程威胁攻击者的利用行为变得轻而易举。
风险因素 | 详情 |
受影响的产品 | 浪潮围棋<0.18.2 |
影响 | 任意文件读取;数据泄露 |
漏洞利用前提条件 | 访问大语言模型提示词接口 |
CVSS 3.1评分 | 9.8(严重) |
缓解措施
该漏洞会破坏机密性,并削弱基于大语言模型的系统的核心信任模型。攻击者可以窃取存储在服务器上的SSH密钥、环境文件、API凭证或其他专有数据。
一旦拥有这些文件,攻击者可能会提升权限、横向移动或窃取知识产权。在多租户部署环境中,风险会进一步放大,因为一个恶意用户可能会访问另一个租户实例的文件系统资源。
为了修复此问题,维护人员发布了一个补丁,引入了安全的RenderTemplateFS函数,该函数会强制执行一个允许的模板路径白名单,并默认禁用任意文件系统访问。
此次更新还强化了模板解析程序,以清理或拒绝任何包含Jinja2文件包含指令的提示词。LangChainGo的运营者应立即升级至0.18.2版本或更高版本,并检查其提示词处理代码中任何使用NewTemplate()进行的自定义模板实例化,将其替换为经过修复的NewSecureTemplate API()。
1. 本版块文章内容及资料部分来源于网络,不代表本站观点,不对其真实性负责,也不构成任何建议。
2. 部分内容由网友自主投稿、编辑整理上传,本站仅提供交流平台,不为该类内容的版权负责。
3. 本版块提供的信息仅作参考,不保证信息的准确性、有效性、及时性和完整性。
4. 若您发现本版块有侵犯您知识产权的内容,请及时与我们联系,我们会尽快修改或删除。
5. 使用者违规、不可抗力(如黑客攻击)或第三方擅自转载引发的争议,联盟不承担责任。
6. 联盟可修订本声明,官网发布即生效,继续使用视为接受新条款。