langchain序列化漏洞 CVE-2025-68664分析
- 内容介绍
- 文章标签
- 相关推荐
langchain序列化漏洞 CVE-2025-68664分析
影响版本
langchain-core < 0.3.81
langchain-core >= 1.0.0 且 < 1.2.5
概要
具体位于这里
from langchain_core.load import dumps, dumpd, load, loads
dumps()与dumpd()函数在处理字典对象时没有对lc这个键进行转义
这个键属于内部保留键,如果用户手动添加这个键值,就能伪造成内部的操作
实现窃取环境变量等操作
调试分析/源码逻辑
从loads开始调试
可以清楚的看到经过dumpd()函数的字典中的lc键并没有被转义
1457×431 60.2 KB
步入进beta()装饰器,这个不重要,在return回外部时步入即可
进入loads()函数本身:
@beta()
def loads(
text: str,
*,
secrets_map: Optional[dict[str, str]] = None,
valid_namespaces: Optional[list[str]] = None,
secrets_from_env: bool = True,
additional_import_mappings: Optional[dict[tuple[str, ...], tuple[str, ...]]] = None,
ignore_unserial
langchain序列化漏洞 CVE-2025-68664分析
影响版本
langchain-core < 0.3.81
langchain-core >= 1.0.0 且 < 1.2.5
概要
具体位于这里
from langchain_core.load import dumps, dumpd, load, loads
dumps()与dumpd()函数在处理字典对象时没有对lc这个键进行转义
这个键属于内部保留键,如果用户手动添加这个键值,就能伪造成内部的操作
实现窃取环境变量等操作
调试分析/源码逻辑
从loads开始调试
可以清楚的看到经过dumpd()函数的字典中的lc键并没有被转义
1457×431 60.2 KB
步入进beta()装饰器,这个不重要,在return回外部时步入即可
进入loads()函数本身:
@beta()
def loads(
text: str,
*,
secrets_map: Optional[dict[str, str]] = None,
valid_namespaces: Optional[list[str]] = None,
secrets_from_env: bool = True,
additional_import_mappings: Optional[dict[tuple[str, ...], tuple[str, ...]]] = None,
ignore_unserial

