LangChain核心严重漏洞通过序列化注入泄漏密钥

admin 2025-12-27 02:06:07 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: LangChainCore曝出高危漏洞CVE-2025-68664,代号LangGrinch,CVSS评分9.3。该漏洞源于序列化函数未转义lc键,导致攻击者可窃取环境变量密钥、实例化任意对象及进行提示注入。官方已在1.2.5和0.3.81版本修复,引入允许列表并默认关闭密钥自动加载,建议用户立即升级,LangChain.js也受类似漏洞影响。 综合评分: 81 文章分类: 漏洞预警,AI安全,数据安全


cover_image

LangChain核心严重漏洞通过序列化注入泄漏密钥

原创

网络安全9527

安全圈的那点事儿

2025年12月26日 18:11 辽宁

LangChain Core中披露了一个严重的安全漏洞,攻击者可以利用该漏洞窃取敏感信息,甚至通过提示注入影响大型语言模型 (LLM) 的响应。

LangChain Core(即langchain-core)是 LangChain 生态系统的一部分,是一个核心 Python 包,它为构建由 LLM 驱动的应用程序提供核心接口和与模型无关的抽象。

该漏洞编号为 CVE-2025-68664,CVSS 评分为 9.3 分(满分 10 分)。安全研究员 Yarden Porat 于 2025 年 12 月 4 日报告了该漏洞。该漏洞的代号为LangGrinch

LangChain项目维护者在一份安全公告中指出:“LangChain的dumps()和dumpd()函数存在序列化注入漏洞。这些函数在序列化自由格式字典时,不会对键为‘lc’的字典进行转义。”

“LangChain 内部使用‘lc’键来标记序列化对象。当用户控制的数据包含此键结构时,在反序列化过程中,它将被视为合法的 LangChain 对象,而不是普通的用户数据。”

据 Cyata 研究员 Porat 称,问题的关键在于这两个函数无法转义包含“lc”键的用户控制字典。“lc”标记在框架的内部序列化格式中代表 LangChain 对象。

Porat说: “因此,一旦攻击者能够让 LangChain 编排循环序列化并随后反序列化包含‘lc’键的内容,他们就会实例化一个不安全的任意对象,从而可能触发许多对攻击者友好的路径。 ”

这可能会产生各种结果,包括当使用“secrets_from_env=True”(以前默认设置)执行反序列化时从环境变量中提取秘密信息,在预先批准的受信任命名空间(如langchain_core、langchain和langchain_community)中实例化类,甚至可能通过Jinja2模板执行任意代码。

此外,该漏洞还允许通过提示注入,利用用户控制的字段(如 metadata、additional_kwargs 或 response_metadata)注入 LangChain 对象结构。

LangChain 发布的补丁通过一个名为“allowed_objects”的允许列表参数,在 load()loads() 函数中引入了新的限制性默认值,允许用户指定哪些类可以序列化/反序列化。此外,默认情况下会阻止 Jinja2 模板,并且现在将“secrets_from_env”选项设置为“False”,以禁用从环境变量自动加载密钥。

以下版本的 langchain-core 受 CVE-2025-68664 影响 –

  • 版本 >= 1.0.0,< 1.2.5(已在 1.2.5 版本中修复)
  • < 0.3.81(已在 0.3.81 版本中修复)

值得注意的是,LangChain.js 中也存在类似的序列化注入漏洞,该漏洞同样源于未正确转义带有“lc”键的对象,从而导致密钥提取和提示符注入。此漏洞的 CVE 编号为 CVE-2025-68665(CVSS 评分:8.6)。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全圈的那点事儿 网络安全9527《LangChain核心严重漏洞通过序列化注入泄漏密钥》

评论:0   参与:  6