最新消息:关注人工智能 AI赋能新媒体运营

LLM调度框架LangChain核心组件序列化注入漏洞,可能导致环境变量敏感信息泄露

科技资讯 admin 浏览

知名大型语言模型调度开源框架LangChain团队发布安全通报,揭露核心包langchain-core存在序列化注入漏洞CVE-2025-68664,该漏洞CVSS 3.1基础评分达9.3,属严重等级。受影响版本为langchain-core小于0.3.81,或介于1.0.0以上且低于1.2.5。官方已发布修复版本0.3.81与1.2.5,并同步收紧load()与loads()的默认行为,以降低误用风险。

漏洞源于langchain-core自身的dumps与dumpd序列化功能。LangChain有一套内部数据格式,使用lc这个保留字段标记数据可在后续还原为LangChain对象。官方指出,问题在于dumps()与dumpd()在序列化普通字典数据时,未妥善处理恰好包含lc字段的外部可控内容。结果是这些数据在后续通过load()或loads()还原时,可能被误认为是合法的LangChain对象并实例化,从而引发安全风险。

官方指出,更常见的攻击场景并非攻击者直接提供序列化内容要求系统加载,而是大型语言模型在提示词注入影响下,被诱导生成攻击者设计的结构,例如metadata、additional_kwargs或response_metadata等字段。当这些字段经由框架原有流程被序列化,并在流式事件、日志记录等路径中再次反序列化时,可能突破开发者预设的信任边界,形成可利用的注入点。

可能造成的后果包括:一是环境变量敏感信息泄露,当反序列化时启用了secrets_from_env选项,攻击者若能使注入结构被还原,即可从环境变量中提取敏感数据;二是不安全对象实例化,虽然LangChain对可还原类别的命名空间做了限制,但仍可能在受信任命名空间内实例化Serializable子类,若其构造过程伴随网络请求或文件操作等副作用,将显著扩大安全风险。

LangChain在本次修复中,除修补序列化跳转漏洞外,还一并收紧了load()与loads()的默认行为。官方解释,新版本引入更严格的白名单策略,并将secrets_from_env默认值由True改为False,同时通过init_validator默认阻止Jinja2模板等高风险初始化行为。官方提醒,这些变更可能对少数依赖旧默认行为的场景造成破坏性影响,用户需检查相关依赖代码是否兼容新策略。

LangChain的JavaScript版本也发布了类似机制的安全通报CVE-2025-68665,指出toJSON方法未对含lc键的用户可控对象进行转义,可能导致后续load()时引发环境变量敏感信息泄露与不安全实例化。该版本已明确将secretsFromEnv默认值设为false,以降低敏感信息泄露和不安全实例化的风险。