CVE-2025-64104CVE-2025-64104是LangGraph项目中一个高危SQL注入漏洞。LangGraph是一个用于构建有状态、多参与者应用程序的框架,其SQLite Checkpoint实现提供了基于SQLite数据库的检查点保存功能(支持同步和异步操作,通过aiosqlite实现)。在2.0.11之前的版本中,该SQLite存储实现存在严重的安全缺陷:开发人员在构建SQL查询时使用了直接字符串拼接的方式,而没有采用参数化查询(Prepared Statements)进行输入过滤和转义。这一设计缺陷使得攻击者可以通过构造特殊的输入数据,向SQL查询中注入任意SQL语句,从而绕过应用程序的访问控制机制。攻击者利用此漏洞可以在数据库层面执行未授权的操作,包括但不限于读取、修改或删除敏感数据,甚至可能在特定条件下获取服务器控制权限。由于该漏洞的CVSS评分为7.3,属于高危级别,且攻击向量为本地(AV:L),需要低权限(PR:L)即可利用,因此对使用受影响版本LangGraph的应用程序构成严重威胁。建议所有用户立即升级到2.0.11或更高版本以修复此漏洞。
该SQL注入漏洞的根本原因在于LangGraph的SQLite存储实现中,SQL查询的构建方式存在安全缺陷。开发人员在构造SQL语句时,直接将用户输入或应用程序数据拼接到SQL字符串中,而没有使用参数化查询(Prepared Statements)进行安全处理。这种不安全的编程实践允许攻击者通过在输入中注入SQL元字符和命令来操纵查询逻辑。攻击者可以构造包含SQL特殊字符(如单引号、分号、UNION等)的输入,利用字符串拼接的漏洞改变原本SQL语句的结构和执行逻辑。例如,攻击者可以通过注入恶意的thread_id或checkpoint_id值,在WHERE子句中构造永真条件或添加额外的SQL语句,从而绕过访问控制并访问未授权的数据。在某些配置下,攻击者甚至可能通过多语句执行(需要SQLite特定配置)来执行DROP TABLE等破坏性操作。修复后的版本2.0.11采用了参数化查询的方式,将用户输入作为绑定参数传递,而不是直接拼接到SQL字符串中,从而从根本上杜绝了SQL注入的可能性。