MS09-048:TCP/IP 漏洞说明 [转译]

《本文转译自 Microsoft Security Research & Defense  博客文章 MS09-048: TCP/IP vulnerabilities ”》

本月我们发布 MS09-048,解决了 Windows TCP/IP 协议栈中的三个漏洞问题。漏洞之一的 CVE-2009-1925 因会导致远程代码执行(RCE)而被定为严重级别;另外两个漏洞会导致拒绝服务(DoS)问题(因为内存耗尽),而不存在 RCE 的风险。

CVE-2009-1925 的利用指数是 2(中等),这篇博客文章会提供关于这个漏洞的可利用性的更多信息,同时还会解释为什么 RCE 的风险级别要低于严重等级。我们还会提供关于新的内存耗尽保护的信息,它的实现解决了DoS漏洞问题。

为什么把公告定为 “严重” 等级?

TCP/IP 协议栈是 Windows 内核的一部分,它处理低级的网络协议,如 IP、TCP 和 UDP。CVE-2009-1925 所述漏洞允许攻击者在一定条件下使 TCP/IP 协议栈在一个无效的地址上执行代码。这可以被远程的匿名攻击者实现。由于在无效的地址上执行代码可能被攻击者进一步改变为远程代码执行,所以我们把这个公告定为“最坏案例”,也就是安全公告中的严重级别。

为什么把利用指数定为中等级别?

利用指数是为了提供指导,来帮助大家确定部署补丁的优先次序。利用指数的等级是基于补丁发布后 30 天内确定的代码执行攻击的可能性[1]。基于以下多种原因,我们认为不一定会产生针对这个漏洞的确定的代码执行攻击。

  • 漏洞是由 TCP/IP 协议栈为 TCP 连接错误地使用包含哈希值的域导致的,它把该哈希值当做函数指针。
  • 该哈希值是用 Toeplitz Hash(点此查看详细描述)计算出来的。这个哈希算法选取一个随机密钥作为输入。该密钥不为攻击者所知,而且不为攻击者所控,这意味着结果的哈希值不为攻击者所控。
  • 这充分表明会作为函数指针被调用的地址是一个随机值,不可能被攻击者预测。
  • 攻击者可能会用他们的恶意数据 “spray” 内存,这会增加一个随机地址在他们控制的数据内的机会。但这也是不确定的。

基于以上原因,除非出现戏剧性的攻击场景,即攻击者知道目标机器使用的随机密钥的细节,否则 RCE 攻击是不可能的。所以我们把利用指数定为中等级别。

一定会有拒绝服务攻击( DoS)吗?

当在无效地址上执行代码时,攻击者就能触发这个漏洞来引起系统崩溃(bugcheck)——这是系统级的拒绝服务攻击(DoS)。暴漏给不可信用户的系统要安装更新来防范 DoS 攻击。也可以使用阻止攻击的网络防火墙来缓解攻击。

针对内存耗尽攻击的新保护

在这个安全更新中,我们在 TCP/IP 协议栈中引入了阻止内存耗尽攻击的新保护。这个特征可以使用 netsh 命令控制,在KB 974288 中有所介绍。这个新保护默认启用,会在系统处于较高的内存压力时激活。这样,TCP 连接会被随机释放,帮助保障系统的可操作性。

参考:

[1] 微软利用指数:https://technet.microsoft.com/en-us/security/cc998259.aspx

- Mark Wodrich, MSRC Engineering

*帖子内容是“按目前情况”,不作任何保证,且不赋予任何权利*