CVE-2026-40087LangChain是一个用于构建代理和LLM应用程序的框架。在0.3.84和1.2.28版本之前,其f-string提示模板验证机制存在缺陷。首先,部分提示模板类(如DictPromptTemplate和ImagePromptTemplate)接受f-string模板并在格式化时未强制执行属性访问验证,导致可能评估属性访问或索引表达式。其次,基于解析字段名的验证未能拒绝格式说明符内的嵌套替换字段。攻击者可利用这些漏洞通过特制的提示模板访问敏感对象属性,导致信息泄露。该漏洞已在0.3.84和1.2.28版本中修复。
该漏洞的核心在于LangChain对f-string模板的解析和验证逻辑存在绕过。Python的f-string允许在字符串中直接执行表达式,LangChain试图限制这一行为以防止安全风险,但验证机制不完善。具体而言,第一个漏洞点在于`DictPromptTemplate`和`ImagePromptTemplate`在处理模板时,没有像`PromptTemplate`那样严格校验属性访问,攻击者可以构造包含属性链式调用或索引操作的模板字符串。第二个漏洞点在于验证逻辑仅解析了顶层的字段名,忽略了格式说明符内部的嵌套字段(例如`{user:{config.key}}`),这些嵌套字段在运行时仍会被Python执行。利用时,攻击者若能控制提示模板的内容,即可通过构造恶意的f-string语法,读取LangChain运行时上下文中的敏感对象属性,如环境变量、API密钥或内部系统提示词。