研究人员在流行的开源框架LangChain中发现一个关键漏洞,该框架广泛用于驱动大型语言模型(LLM)Agent。该漏洞编号为CVE-2025-68664,CVSS评分高达9.3分,攻击者可能利用该漏洞提取敏感环境变量或触发非预期的系统操作。
漏洞根源:数据序列化缺陷
该漏洞源于LangChain处理数据序列化的方式——即将复杂对象转换为可存储或传输格式的过程。由于未能正确转义特定字典键,恶意数据可伪装成合法的LangChain对象。
问题的核心在于LangChain的dumps()和dumpd()函数。这些工具本应安全地序列化数据,但研究人员发现它们未能转义包含特定键"lc"的字典。
安全公告指出:"'lc'键被LangChain内部用于标记序列化对象。当用户可控数据包含此键结构时,系统在反序列化过程中会将其视为合法的LangChain对象而非普通用户数据。"
攻击机制:提示注入向量
这个看似微小的疏忽打开了危险之门。如果攻击者能将带有该特定键的字典注入数据流(例如通过LLM的响应元数据),就能诱使系统在加载过程中执行内部逻辑。
该漏洞最令人担忧的是其潜在攻击向量:提示注入。报告称:"最常见的攻击向量是通过LLM响应字段(如additional_kwargs或response_metadata),这些字段可通过提示注入进行控制。"
在实际攻击场景中,攻击者可操纵LLM输出特定JSON结构。当应用程序处理此输出时,会在不知情的情况下反序列化恶意负载,后果可能非常严重。
危害影响:从数据泄露到任意代码执行
报告警告:"控制序列化数据的攻击者可提取环境变量中的机密信息。"通过注入类似{"lc": 1, "type": "secret", "id": ["ENV_VAR"]}的负载,攻击者可强制应用程序解析并泄露隐藏的API密钥或密码,特别是在应用程序使用旧版设置secrets_from_env=True运行时。
除数据窃取外,该漏洞还允许在受信任命名空间中实例化任意类,可能导致"网络调用或文件操作等副作用"。
受影响版本及修复方案
该漏洞影响LangChain生态系统的多个版本:
- LangChain Core:低于0.3.81的版本
- LangChain:1.0.0至1.2.5之前的版本
维护者已发布修复版本:
- LangChain 1.2.5
- LangChain Core 0.3.81
补丁修复了序列化函数中的转义逻辑,确保用户可控的"lc"键被视为无害数据而非可执行命令。
参考来源:
The “lc” Leak: Critical 9.3 Severity LangChain Flaw Turns Prompt Injections into Secret Theft
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



