系统:运行中
← 返回所有攻击
AGENTS CRITICAL NEW

SQL Server Copilot:基于正则的只读模式、提示注入与通往 sysadmin 的路径

SQL Server Management Studio 中 Copilot 的一个高危漏洞表明,只读模式应由数据库权限实现,而不是靠正则表达式或对模型的指令。

2026-10-13 // 6 分钟 affects: copilot-ssms, sql-server-management-studio

这是什么?

2026 年 9 月 30 日,研究员 Johann Rehberger(Embrace The Red)发布了他在 BlueHat Asia 2026 上关于 SQL Server Management Studio(SSMS)中 Copilot 的演讲回顾。微软将该问题记录为 SQL Server 权限提升漏洞,已于 2026 年 9 月 8 日在其安全更新指南中发布,CVSS 3.1 基础分为 9.6(严重)。最初的研究始于 2026 年 5 月。

这是代理安全中一个反复出现的错误的典型案例:所谓“只读”的安全属性由应用层的文本分析来保证,而不是由数据库本身来保证。

工作原理

据该文介绍,Copilot 的只读模式依赖基于正则表达式的分类器来判断生成的语句是否安全。这类分类器检查的是字符串,而不是效果。研究者展示了通过变量进行的动态执行可以绕过模式检查,使得修改或删除数据的语句在只读模式下仍然执行。另一个用于验证备份文件的工具路径同样会转发任意 T-SQL。

另有两点使情况更糟。其一,查询结果可通过扩展存储过程发送到远程文件共享路径,形成数据外泄通道。其二,Copilot 会读取存放在数据库内部的指令文件(以扩展属性形式保存的全库“章程”文件和按对象划分的代理指令)。对某对象仅有较低权限的用户就能附加这类指令,之后 Copilot 会以使用者的权限执行它们。

把这些环节串联起来:数据库所有者可以预先写入指令,等待 sysadmin 在该数据库上打开 Copilot,再由代理把攻击者的登录名加入 sysadmin 角色。攻击需要用户交互,但不需要利用代码:“载荷”只是代理当作指引的文本。本文不复现任何可用字符串。

示例提示

仅为示意并已脱敏:展示弱点的形态,而非可用的载荷。

# SQL Copilot:由分类器强制的只读模式(示意性、防御性、已脱敏)
# 模式:防护检查的是语句文本,而不是连接所拥有的权限。
#   “只读”检查  ->  对 T-SQL 字符串做模式匹配   [可通过间接方式绕过]
#   存放在数据库中的指令文件被当作可信指引读取 [已脱敏]
# 防御:使用确实没有写权限的登录;把存储的指令文本视为不可信输入;
# 绝不让代理以 sysadmin 身份连接。

为什么重要

数据库助手很有吸引力,因为它们以使用者的连接运行,而该连接往往权限很高。这使代理成为“被混淆的代理人”:低权限内容在驱动高权限会话。该案例也说明,“告诉过模型不要这样做”和“有个过滤器检查 SQL”都不是安全边界,只有数据库自身的权限体系才能可靠地回答某个连接能做什么。

同样的模式适用于任何带有代码执行工具的代理:代码仓库、Wiki 或数据库中的指令文件都是不可信输入,无论它们作为配置多么方便。

防御措施

把只读做成权限。 为助手会话使用确实没有写入、DDL 和执行权限的登录,而不是依赖分类器或提示词。

绝不让助手连接到 sysadmin 或所有者级别的会话。 为 AI 辅助工作使用专用的最小权限账户,并与管理会话分开。

把存储的指令视为不可信。 审查谁能写入扩展属性或类似元数据,对新出现的指令文件告警。产品允许时,关闭对这类文件的加载。

限制出站访问和危险过程。 限制对文件共享的出站访问,移除或拒绝可启用该功能的扩展存储过程。

使用厂商提供的控制项。 微软提供禁用 Copilot、设置策略和选择执行上下文的管理控制;请集中应用,并按微软最新指引保持 SSMS 更新。

记录并复核。 将助手会话执行的语句与人工会话分开审计。

状态

项目参考日期说明
厂商公告CVE-2026-656692026-09-08SQL Server 权限提升;CVSS 3.1 基础分 9.6(严重);涉及 SSMS 中的 Copilot
研究者文章Embrace The Red2026-09-30BlueHat Asia 2026 演讲;研究始于 2026 年 5 月
修复版本所查阅来源未说明不适用请查阅微软最新指引以获取 SSMS 的修复版本

Sources