Check Point:从 SQLi 到 RCE——利用 LangGraph Checkpointer 反序列化链

LangGraph SQLite checkpointer 的 CVE-2025-67644(SQLi)与 CVE-2026-28277(msgpack 反序列化)可链成 RCE;Redis 版另涉 CVE-2026-27022,自托管且暴露 get_state_history() 带用户可控 filter 风险最高。

📖 原文翻译与解读。原文:From SQLi to RCE - Exploiting LangGraph's Checkpointer(Check Point Research,2026-06-11)

一、漏洞概述

Check Point 的 Yarden Porat 分析了开源有状态 AI agent 框架 LangGraph(PyPI 月下载超 5,000 万)的持久化层 checkpointer 中多个漏洞。SQLite checkpointer 存在 SQL 注入 CVE-2025-67644;该 SQLi 与 msgpack 不安全反序列化 CVE-2026-28277 可链式组合导致远程代码执行(RCE);Redis checkpointer 存在同类注入 CVE-2026-27022(用户可控 filter 键直接拼接进查询)。此外 SQLite 与 PostgreSQL checkpointer 的 LIMIT、ttl 等整数参数也存在防御性 SQL 注入(直接拼接而非参数化)。LangSmith Deployment(原 LangGraph Platform,用 PostgreSQL)不受影响。

二、SQLi 链 msgpack 反序列化至 RCE

Checkpointer 表 checkpoints 含 metadata(JSON) 与 checkpoint(BLOB) 列。CVE-2025-67644 点位于 sqliteSaver.list() 的 filter 参数:_metadata_predicatef"json_extract(CAST(metadata AS TEXT), '$.{query_key}') {operator}" 直接将攻击者控制的 query_key 拼入 SQL,可用 ' 逃逸注入任意 SQL。利用 UNION SELECT 注入伪造 checkpoint 行(type='msgpack'、BLOB 为恶意数据),代码随后对结果调用 self.serde.loads_typed((type, checkpoint)) 触发反序列化。CVE-2026-28277 的 loads_typed 对 msgpack 类型调用 ormsgpack.unpackb 并经 ext_hook:当 code == EXT_CONSTRUCTOR_SINGLE_ARG 时执行 getattr(importlib.import_module(tup[0]), tup[1])(tup[2]),攻击者可构造 ("os","system","命令") 实现 os.system() 任意命令执行。

三、Redis 版同类问题

langgraph-checkpoint-redis 中 filter 键同样未参数化插值(CVE-2026-27022)。攻击链:应用暴露 get_state_history() 且 filter 来自用户输入 → 调用 checkpointer.list() → 构造恶意 msgpack payload → 发送恶意 filter 利用 SQLi 注入含 payload 的伪 checkpoint 行 → 应用处理查询结果时反序列化恶意 msgpack 触发 RCE。披露时间线:2025-11-19 向 LangChain 披露,厂商快速分步修复。

四、修复与防护

升级:langgraph-checkpoint-sqlite 3.0.1+(2025-12-10 修复 CVE-2025-67644)、langgraph 1.0.10+langgraph-checkpoint-redis 1.0.2+(2026-02-20 修复 CVE-2026-27022)、langgraph-checkpoint 4.0.1(2026-03-05 修复 CVE-2026-28277)。自托管并用 SQLite/Redis checkpointer 且暴露 get_state_history() 带用户可控 filter 的团队应尽快更新;开发上对 filter、LIMIT、ttl 等参数使用参数化查询,绝不信任用户可控的反序列化数据。

了解更多行业资讯,请访问 行业资讯首页 或致电 021-69753778 获取安全咨询服务。

相关文章


—— ztpop.net 编辑团队 译