漏洞关键信息 漏洞名称 Template Injection via Attribute Access in Prompt Templates 漏洞严重性 High (8.3/10) 影响版本 langchain_core (pip): - Affected versions: , , - Patched versions: , 漏洞描述 在LangChain的提示模板系统中存在一个模板注入漏洞,允许攻击者通过模板语法访问Python对象的内部属性。此漏洞影响接受不受信任的模板字符串(不仅仅是模板变量)的应用程序。 受影响的组件 langchain-core 包 模板格式: - F-string 模板 ( ) - 漏洞已修复 - Mustache 模板 ( ) - 防御性加固 - Jinja2 模板 ( ) - 防御性加固 影响 攻击者可以通过控制模板字符串(不仅仅是模板变量)来: 访问Python对象属性和内部属性 提取敏感信息 潜在升级为更严重的攻击 攻击向量 1. F-string 模板注入 2. Mustache 模板注入 3. Jinja2 模板注入 根源分析 1. F-string 模板使用了Python的 方法,未对属性访问进行验证 2. Mustache 模板使用 访问属性,未限制访问类型 3. Jinja2 模板默认环境允许访问非下划线属性/方法 影响范围 接受不受信任来源的模板字符串的应用 动态构建提示模板的应用 允许用户自定义或创建提示模板的应用 修复措施 F-string 模板:增加严格验证,只允许简单变量名 Mustache 和 Jinja2 模板:防御性加固,限制属性访问 风险缓解 立即行动: 1. 审查代码中来自不受信任来源的模板字符串 2. 更新到修补版本的 3. 确保模板结构与用户数据分离 最佳实践: 考虑是否需要模板,直接使用消息对象可能更安全 仅在完全控制模板内容时使用 Jinja2 模板