CVE-2026-40315PraisonAI是一个多代理团队系统。在4.5.133版本之前,其SQLiteConversationStore组件中存在严重的SQL标识符注入漏洞。该漏洞源于table_prefix配置值直接通过f-字符串拼接到SQL查询中,且未经过任何验证或清理。由于SQL标识符无法像参数值那样安全地进行参数化处理,攻击者如果能够控制table_prefix值(例如通过from_yaml或from_dict配置输入),就可以注入任意SQL片段来改变查询结构。成功利用此漏洞可能导致未经授权的数据访问,如读取内部SQLite表,以及通过基于UNION的注入技术篡改查询结果。
该漏洞的核心技术原因在于PraisonAI在处理SQLite数据库存储时,对用户可控的配置项缺乏严格的过滤。漏洞触发路径始于config.py中的配置输入(如from_yaml或from_dict方法),经由factory.py的工厂模式处理,最终传递至sqlite.py进行SQL查询构建。在sqlite.py中,table_prefix参数直接使用f-string格式化字符串的方式嵌入SQL语句,而非使用参数化查询。由于SQLite不支持对标识符(如表名、列名)进行参数化绑定,这种字符串拼接方式直接导致了SQL标识符注入。攻击者可以通过构造恶意的table_prefix值,注入如`UNION SELECT * FROM sqlite_master`等SQL片段,从而绕过逻辑限制,读取数据库结构信息,窃取敏感数据,甚至通过UNION查询获取其他表的数据。