受影响的产品:
Microsoft SQL Server 版本:
2000
这是什么?
Microsoft Security Response Center (MSRC) 已经公布了 Microsoft Security Bulletin MS02-039,该公告指出了3个薄弱环节,其中最严重的会使攻击者获得受影响的安装了 SQL Server 2000 机器的控制权。 在该公告中,MSRC 发布了一个修复这3个薄弱环节的补丁。建议客户阅读该公告、并且如果可行的话,在他们的环境中测试并应用该补丁。
薄弱环节的影响:
3个薄弱环节,其中最严重的会使攻击者获得受影响的安装了 SQL Server 机器的控制权。
技术细节:
3个薄弱环节:
目标服务。然而,这些实例不能都使用标准的服务器 session 端口 ( TCP 协议,端口号:1433)。默认的实例会用 TCP 协议监听 1433 端口,别的实例则监听其它被分配的端口。用 UDP 协议在 1434 端口进行操作的 SQL Server 解析服务,提供了在客户端通过查询网络端点来使用某个 SQL Server 实例的方法。
这里会导致 3 个安全隐患,前两个是缓冲区溢出。攻击者可以通过传送一个精心组织的包给SQL Server解析服务,来覆盖一部分系统内存(一种情况下是堆,另一种情况下是栈),如果使用随机数据来覆盖这块内存区域会导致 SQL Server 服务出现故障;而如果使用精心挑选的数据来覆盖这块内存区域可能会允许攻击者在 SQL Server 服务的安全上下文中运行代码。
第三个安全隐患会导致系统拒绝服务。SQL 用了保持活动(Keep-alive)机制来区分活动和非活动的实例。建立一个保持活动包、传送信息给SQL Server解析服务、并致使 SQL Server 2000 来回应相同的信息是有可能的。建立这种包的攻击者,对系统欺骗了原始地址,从而使这些信息看上去像是从一个 SQL Server 2000 系统传过来的一样;并且,如果给一个邻近的 SQL Server 2000 系统发送这种信息,会导致两个系统进入无休止地互相传送保持活动包的周期中去。这会消耗两个系统的资源,降低系统效率。
缓解因素:
解决 SQL Server 缓冲区溢出的服务包:
SQL Server 2000 在由系统管理员在安装的时候挑选的安全上下文中运行。默认情况下,它作为一个域用户来运行。这样一来,尽管攻击者的代码能在数据库中进行任何期望的操作,但如果遵循了最佳实践 (Best Practice) 的话,它在操作系统级别上并没有很大的权限。
如果可能,通过在防火墙里阻止 1434 端口的数据,由该薄弱环节带来的风险便可以减轻。
通过 SQL Server 问题解决包来拒绝服务:
通过重新启动任何一方的 SQL Server 2000 服务,可以中断攻击者的攻击。一旦攻击中止,两个系统就会继续正常的服务了。
该薄弱环节并没有提供任何获取系统权限的方法,仅仅造成系统拒绝服务。
相关知识库文章: Q323875
安全公告链接:http://www.microsoft.com/technet/security/bulletin/MS02-039.asp,该URL对本公告有效。
若要得到本公告的更多信息,请访问http://www.microsoft.com/technet/security。