IPBUF安全漏洞报告
English
CVE-2025-68664 CVSS 9.3 严重

CVE-2025-68664 LangChain序列化注入漏洞

披露日期: 2025-12-23

漏洞信息

漏洞编号
CVE-2025-68664
漏洞类型
序列化注入
CVSS评分
9.3 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
LangChain

相关标签

序列化注入LangChain代码执行PythonLLM应用CVE-2025-68664关键漏洞

漏洞概述

CVE-2025-68664是LangChain框架中的一个高危序列化注入漏洞。该漏洞存在于LangChain的dumps()和dumpd()函数中,在序列化包含'lc'键的自由格式字典时,未对这些键进行适当的转义处理。由于'lc'键是LangChain内部用于标记序列化对象的特殊标识符,攻击者可以通过在用户可控数据中构造恶意的'lc'键结构,使反序列化过程将其误认为是合法的LangChain对象,从而可能导致任意代码执行或敏感数据泄露。此漏洞影响LangChain 0.3.81之前和1.2.5之前的所有版本,CVSS评分高达9.3,属于严重级别。

技术细节

LangChain框架使用'lc'键作为内部序列化标记,用于标识对象的类型和序列化格式。当dumps()或dumpd()函数处理包含'lc'键的字典时,会将其识别为LangChain的序列化对象而非普通用户数据。攻击者可以利用这一特性,在用户输入中注入精心构造的'lc'结构,绕过安全检查并触发反序列化漏洞。具体来说,攻击者构造的恶意数据可能包含指向危险类的引用或利用链,在反序列化过程中触发代码执行。由于该漏洞无需认证即可利用,且可通过网络远程触发,因此风险极高。

攻击链分析

STEP 1
步骤1
攻击者识别目标应用使用LangChain框架处理用户输入
STEP 2
步骤2
攻击者构造包含恶意'lc'键结构的序列化数据
STEP 3
步骤3
恶意数据通过dumps()函数序列化,未被正确转义
STEP 4
步骤4
序列化后的数据被传输到目标系统
STEP 5
步骤5
目标系统使用loads()或loadsd()反序列化数据
STEP 6
步骤6
反序列化过程将'lc'结构识别为LangChain对象,执行恶意代码

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import langchain_core from langchain_core.messages import HumanMessage # 恶意构造的序列化数据,注入lc结构 malicious_data = { "lc": 1, "id": ["__main__", "MaliciousClass", null], "kwargs": { "command": "whoami" } } # 尝试序列化包含恶意lc结构的数据 try: serialized = langchain_core.dumps(malicious_data) print(f"Serialized: {serialized}") # 反序列化时会将lc结构当作LangChain对象处理 deserialized = langchain_core.loads(serialized) print(f"Deserialized: {deserialized}") except Exception as e: print(f"Error: {e}") # 攻击场景示例 attack_payload = { "user_input": "normal data", "lc": { "serializer": "json", "version": 1, "type": "constructor", "id": ["os", "system"] } } serialized_attack = langchain_core.dumpd(attack_payload)

影响范围

LangChain < 0.3.81
LangChain < 1.2.5

防御指南

临时缓解措施
在官方补丁发布前,应避免将用户可控数据直接传递给LangChain的序列化函数。对所有包含'lc'键的用户输入进行过滤或转义处理,或使用沙箱环境隔离反序列化操作。建议尽快升级到官方发布的安全版本0.3.81或1.2.5。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表