SQL 藏进字符串字面量即可绕过 LLM 门控,schemagate 1.15.1 修复

Temporary_Papaya1058 · reddit · 2026-10-29

安全研究员 Artur Chlebicki 报告了 schemagate(text-to-SQL agent 的开源访问层)的一个绕过漏洞:外部查询不直接引用任何表名,而是把真正的查询藏在字符串字面量里传给能在服务端执行 SQL 的函数,例如 Postgres 的 querytoxml('SELECT FROM hrcompensation', ...)。只检查"SQL 触及哪些表"的门控看不到任何表名就会放行。同类漏洞在 Oracle(DBMSXMLGEN.GETXML)和 SQL Server(OPENQUERY/spexecutesql)中同样存在。

1.15.1 的修复包括:拒绝所有从字符串执行 SQL 的函数(Postgres toxml/dblink、Oracle DBMS/UTL、SQL Server OPENROWSET/xp、Snowflake IDENTIFIER() 等);兜底策略是拒绝任何"看起来像查询且引用了隐藏表的字符串"参数;新增 31 个测试(其中 23 个在 1.15.0 上失败)。作者坦承仍有缺口:通过拼接构造、传给未被列入清单的函数的字符串仍可能穿透;解析器级门控只能收窄风险,真正锁死还要靠只读数据库授权。给自建类似门控者的建议:用藏在字符串里的 SQL 测试你的门控。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →