SQL Server 2019授予ALTER ANY EVENT SESSION权限的安全风险问询
SQL Server 2019中授予ALTER ANY EVENT SESSION和VIEW SERVER STATE权限的风险分析
一、可能存在的意外后果
- 服务器运维信息泄露:
VIEW SERVER STATE权限会让用户查看全服务器范围的状态数据,包括所有数据库的连接数、资源占用率、正在运行的会话详情,甚至能看到其他用户的执行计划轮廓,这些信息可能包含敏感的运维细节(比如核心业务库的访问峰值、内部监控策略)。 - 服务器性能损耗:持有
ALTER ANY EVENT SESSION权限的用户可以创建任意扩展事件会话,若创建了全量捕获sql_statement_completed、rpc_completed这类高频率事件的会话,会大幅增加服务器的CPU、IO消耗,甚至导致事务日志或扩展事件文件暴涨,挤占磁盘空间。 - 破坏现有监控体系:用户可以修改、删除其他用户(包括DBA)创建的扩展事件会话,比如删除用于审计或性能监控的核心会话,导致运维团队失去对服务器状态的监控能力。
二、能否访问未授权的数据库?
直接读取未授权数据库的数据是做不到的,但可以间接获取敏感的元数据或查询信息:
- 捕获敏感查询文本:通过创建扩展事件会话捕获
sql_statement_starting、sql_statement_completed事件,能看到其他用户执行的查询语句,其中可能包含未授权数据库的表名、字段名,甚至如果查询包含硬编码的敏感数据(比如密码、身份证号),也会被捕获到。 - 获取数据库对象元数据:利用
object_created、object_altered这类事件,可以监控到未授权数据库中新建、修改的表、存储过程等对象的结构信息。 - 推断数据特征:如果捕获
sqlserver.query_post_execution_showplan事件,能看到执行计划中的预估行数、数据分布统计,虽然不是实际数据,但可以推断出未授权数据库的数据规模、字段取值范围等敏感信息。
三、是否存在权限提升风险?
在SQL Server 2019默认配置下,直接通过这两个权限提权到sysadmin的可能性极低,但存在间接风险:
- 窃取高权限操作信息:如果用户创建的扩展事件会话捕获到sysadmin等高权限用户的操作(比如执行
GRANT权限语句、修改登录名密码),可能获取到提权的方法或敏感凭据,进而实施提权。 - 配合其他漏洞提权:若服务器存在其他配置漏洞(比如扩展事件的输出文件路径设置在可被用户访问的目录,且用户有文件系统写入权限),可能通过扩展事件写入恶意文件,结合操作系统漏洞实现提权,但这属于多漏洞组合的场景,并非这两个权限直接导致。
- 干扰权限审计:用户可以删除或修改用于权限审计的扩展事件会话,掩盖自身的违规操作,间接绕过权限管控。
内容的提问来源于stack exchange,提问作者William




