涉及程序:
Microsoft SQL
描述:
CERT 安全公告 CA-2002-22: Microsoft SQL的多个安全缺陷
详细:
Microsoft SQL服务器存在多个严重的安全缺陷,允许远程攻击者取得数据库的敏感信息、更改数据库内容、破坏 SQL 服务器。虽然微软过去曾发布 Security Bulletin 以解决各个问题,但仍须更加注意这些缺陷聚集的严重性。
自 2001年 12月,微软一共发布了八个 Security Bulletin,至少有十多个关于 SQL Server的安全缺陷。本文将着重介绍其中的五个最严重的安全缺陷的相关信息。
个别地看,许多缺陷都要求攻击者要想进行入侵,必须先达到一些显著的先决条件,但是若联合多个缺陷进行攻击,则能使攻击者拥有许多弹性并增加成功的机会。特别是在 VU#796313 中所描述的权限提升缺陷,允许攻击者授予 SQL Server 与操作系统相同的权限以削弱 SQL server 的安全策略,拥有完整管理者权限的 SQL Server 可以用来控制该服务器主机。
CERT/CC 建议系统管理者借此机会仔细检查一遍自己的SQL Server 并安装微软提供的相关修正程序。
VU#796313 - Microsoft SQL Server service aclearcase/" target="_blank" >ccount registry key has weak permissions that permit escalation of privileges (CAN-2002-0642)
Microsoft SQL Server 通常都是以专用的 "service account" 帐号执行,此帐号是由系统管理者在安装时所定义的,储存在 Windows registry 并有允许 SQL server 变更该 registry key 值的权限。其结果是能够存取 "xp_regwirte" 扩展存储进程的入侵者可以更改此 key 值并导致 SQL Server以 "LocalSystem" 帐号作为其提供服务的帐号。
在重新开机或重新激活 SQL service 后,SQL Server 会以具有完整系统管理权限的 "LocalSystem" 帐号执行。此能力允许远程攻击者通过发送 SQL queries 给 SQL server 而在系统上以系统管理员权限执行任意指令。
VU#225555 - pwdencrypt() 函数存在缓冲溢出 (CAN-2002-0624)
微软 SQL Server 提供使用者多种数据库的认证方法。当使用 SQL Server Authentication 时,每一个数据库用户的用户名和口令都存储在 SQL server 上的一个数据库内。当用户使用此认证方式并提供口令给服务器时,一个名为 pwdencrypt() 的函式负责将用户提供的口令编码以便与数据库中加密过的口令对比。
在 pwdencrypt() 函式中存在一个缓冲溢出的缺陷。此缺陷允许远程攻击者通过发送一个假造的密码而能在 SQL server 上执行任意程序代码。但攻击者必须先知道一个有效的用户名才能运用此缺陷,而成功的攻击能使攻击者提供的程序代码以 SQL service account 的权限被执行。
VU#627275 - Microsoft SQL Server 的扩展存储进程存在缓冲溢出缺陷(CAN-2002-0154)
微软 SQL Server 提供的扩展存储进程能够将一群 server 指令聚集在一起执行。数个微软 SQL Server 提供的扩展存储进程含有缓冲溢出的安全缺陷。这些进程提供数据库应用程序较多的功能,允许存取操作系统或网络资源。
参数透过 API 传入扩展存储进程并指定不同参数的实际长度与最大长度。有些扩展存储进程不能有效地验证所输入的参数长度,会导致缓冲区溢出的情况。
由于有些具有缺陷的进程预设为允许公开存取,未被认证的攻击者即可能利用这些缓冲区溢出缺陷进行攻击。SQL Server 数据库一般使用于web applications,因此这些具有缺陷的进程可能通过 Internet而被存取。微软 Security Bulletin MS02-020中陈述:
攻击者有两中方式运用此弱点。第一种,攻击者可以尝试加载并执行数据库查询,呼叫其中一个有缺陷的函数。第二种,若一个 web-site 或其它资料库前端软件设定为存取及处理任意查询,则攻击者可提交畸形参数和查询指令以调用有问题的函数。
VU#399260 - Microsoft SQL Server 2000 的解析服务存在堆溢出(heap buffer)缺陷(CAN-2002-0649)
微软 SQL Server 2000 引入 SQL Server Resolution Service (SSRS) 以提供在一台机器上执行多个 server instance 的 referral services。这个 service监听 UDP port 1434 并传回提供服务的SQL server instance 的 IP 地址和端口号。
SSRS 含有一个堆溢出(heap buffer)缺陷,允许未被认证的远程攻击者利用此缺陷发送伪造的 request 到 UDP port 1434 而在系统上执行任意指令,这些包含在request 内的程序代码会被 server 以 SQL Server service account 的权限执行。
VU#484891 - Microsoft SQL Server 2000的解析服务存在堆栈溢出(buffer overflow)缺陷(CAN-2002-0649)
SSRS 也存在一个堆栈溢出(buffer overflow)缺陷,允许未认证的远程攻击者利用此缺陷发送一个精心构建的 request 到 1434/udp 而在系统上执行任意指令,包含在此request 中的代码会以 SQL Server service account 的权限被执行。
受影响系统
* Microsoft SQL Server 7.0
* Microsoft SQL Server 2000
* Microsoft SQL Server Desktop Engine 2000
影响结果
VU#796313 - Microsoft SQL Server service account registry key has weak permissions that permit escalation of privileges
要利用此缺陷的先决条件为攻击者必须有能力修改 SQL service account的registry key (例如透过 "xp_regwrite" 扩展存储进程)。
此缺陷允许攻击者提升 SQL Server的权限使其以 LocalSystem 权限执行,以削弱 SQL Server 的 security policy。此缺陷还会增加其它缺陷的严重性,并可允许攻击者危害整部服务器主机。
VU#225555 - pwdencrypt() 函数存在缓冲溢出 (CAN-2002-0624)
此缺陷允许知道系统上有效帐号(username)的远程攻击者以 SQL service account的权限在系统上执行任意程序代码。
VU#627275 - Microsoft SQL Server 的扩展存储进程存在缓冲溢出缺陷
此缺陷允许未被认证的远程攻击者以 SQL service account 的权限在系统上执行任意指令。
VU#399260 - Microsoft SQL Server 2000 的解析服务存在堆溢出(heap buffer)缺陷
此缺陷允许远程攻击者以 SQL service account 的权限在系统上执行任意指令。
VU#484891 - Microsoft SQL Server 2000的解析服务存在堆栈溢出(buffer overflow)缺陷
此缺陷允许远程攻击者以 SQL service account 的权限在系统上执行任意指令。
攻击方法:
暂无有效攻击代码
解决方案:
安装微软提供的修复程序和补丁
VU#796313 - Microsoft SQL Server 服务帐号registry key 缺陷允许用户权限被非法提升
VU#225555 - pwdencrypt() 函数存在缓冲溢出 (CAN-2002-0624)
微软发布的 Security Bulletin MS02-034 修复了以上两个安全缺陷:
Microsoft SQL Server 2000:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q316333&sd=tech
VU#627275 - Microsoft SQL Server 的扩展存储进程存在缓冲溢出缺陷
微软发布的 Security Bulletin MS02-020修复了此安全缺陷:
Microsoft SQL Server 7.0:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q318268&sd=tech
Microsoft SQL Server 2000:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q316333&sd=tech
VU#399260 - Microsoft SQL Server 2000 的解析服务存在堆溢出(heap buffer)缺陷
VU#484891 - Microsoft SQL Server 2000的解析服务存在堆栈溢出(buffer overflow)缺陷
微软发布 Security Bulletin MS02-039修复了这两个安全缺陷:
Microsoft SQL Server 2000 and MSDE 2000:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=40602
临时解决方案:
阻塞外部对微软 SQL Server 通讯端口的访问
严格限制来自外部的对 SQL Server通讯端口(1433/tcp, 1433/udp, 1434/tcp,1434/udp)的访问。VU#399260 和 VU#484891 可以利用伪造合法源地址的UDP数据包来进行攻击,因此系统管理员应该限制所有发送到1434/udp的外来数据包。
附加信息:
CAN-2002-0624 ;CAN-2002-0642 ;CAN-2002-0154 ;CAN-2002-0649
相关站点:
http://www.cert.org/advisories/CA-2002-22.html