CVE-2025-67644CVE-2025-67644是LangGraph框架中SQLite Checkpoint组件的一个高危安全漏洞。该漏洞存在于LangGraph的检查点保存功能实现中,影响使用SQLite数据库进行状态持久化的应用程序。漏洞根源在于_metadata_predicate()函数在构建SQL查询时,直接将元数据过滤器键(filter keys)插入到SQL语句中,而没有进行任何输入验证或参数化处理。这使得攻击者可以通过在检查点搜索操作中传入恶意的元数据过滤器键来操纵SQL查询结构,从而执行任意SQL代码。该漏洞的CVSS评分为7.3,属于高危级别,攻击复杂度低且不需要特殊权限,攻击者只需能够向受影响应用提供元数据过滤器键即可触发漏洞。虽然攻击向量为本地(AV:L),但对于在多用户环境或处理不可信输入的场景中部署的LangGraph应用,该漏洞构成严重威胁。漏洞已在版本3.0.1中得到修复。
LangGraph SQLite Checkpoint是LangGraph框架的检查点保存器实现,支持同步和异步两种模式(通过aiosqlite库)。该组件允许应用程序将LangGraph的执行状态持久化到SQLite数据库中,以便于恢复和状态管理。在检查点搜索功能中,应用可以基于元数据进行过滤查询,而问题就出在这个元数据过滤的实现上。具体来说,_metadata_predicate()函数负责根据用户提供的元数据过滤器构造SQL WHERE子句。该函数使用Python的f-string将filter keys直接内联到SQL语句中,例如:f"{key} = ?",其中key直接来自用户输入而未经过任何验证或转义处理。攻击者可以通过传入类似"1=1"、"' OR '1'='1"或更复杂的SQL片段作为filter key,使构造出的SQL语句偏离预期逻辑,从而实现SQL注入攻击。这种注入与传统的参数值注入不同,它直接污染SQL语句结构,可能导致数据泄露、数据库损坏或在特定配置下执行系统命令。攻击者利用此漏洞可以读取数据库中的敏感信息、修改或删除数据,甚至可能通过SQL语句执行系统命令。