Pet*_*ith 5 sql-server-2008 security
我有另一个数据库 Ydb 访问数据库 Kdb 中的数据。他们都有相同的所有者。
为了允许跨数据库链接,我似乎需要在 Kdb 中启用来宾用户。
我是这样做的:
USE [master];
GO
ALTER DATABASE Ydb SET DB_CHAINING ON;
ALTER DATABASE Kdb SET DB_CHAINING ON;
GO
USE [Kdb]
GO
GRANT CONNECT TO guest;
Run Code Online (Sandbox Code Playgroud)
我意识到这意味着由 Ydb 的所有者创建的 Ydb 中的存储过程可以在由同一登录名创建时自由访问 Kdb 中的对象。这会开启什么样的攻击?
它不会直接遭受“攻击”。这仅意味着数据库 1 (Kdb) 中的任何用户也可以访问数据库 2 (Ydb)。通常更关键的是,当您拥有具有 DDL 权限(创建视图、过程)的用户时,他们还能够访问数据库2 中的对象。也许比普通客人能做的还要多。这取决于您计划授予来宾的对象所有者和权限。
2012 年之前的 SQL Server 存在一个小安全漏洞,如下所述: Security-issue: guest-guest impersonation,但这是一个非常有限的场景