MS13-018:难以释放的TCP/IP资源耗尽漏洞解析

本文详细分析了MS13-018安全公告中涉及的Windows TCP/IP栈资源耗尽漏洞,攻击者可通过特定TCP连接状态操纵耗尽非分页池内存,导致服务器无法建立新连接。文章包含攻击场景、技术细节及防护影响评估。

MS13-018:难以释放 | MSRC博客

安全研究与防御
作者:swiat / 2013年2月12日 / 阅读时间:2分钟

MS13-018修复了Windows TCP/IP栈中一个潜在的拒绝服务条件。攻击者在特定情况下可利用此漏洞耗尽服务器的非分页池内存,阻止其建立新的TCP连接。漏洞详情如下:

  1. Windows受害机与远程攻击机之间存在处于ESTABLISHED状态的TCP/IP连接,且Windows受害机(非攻击机)向远程攻击机发送FIN包以启动连接拆除序列(符合RFC 793规范)。
  2. 远程攻击机接收FIN包后回复ACK包,但将窗口大小设置为0。此时Windows受害机上的连接会持续“卡在”TCP FIN_WAIT_2状态。

在此场景下,Windows系统不会释放与该TCP连接关联的非分页池数据结构。若上述步骤重复发生,可能耗尽Windows机器的非分页池内存,导致无法新建TCP连接。下图展示了连接被卡住的FIN_WAIT_2状态:

要触发此资源耗尽漏洞,攻击者需反复与Windows受害机建立TCP连接,并每次诱使受害机通过发送TCP FIN包启动连接拆除序列。

互联网攻击者显然会被现有防火墙阻挡,且难以找到方法使Windows受害机上的目标应用程序主动向攻击机发送FIN包。此外,我们已确认IIS所依赖的HTTP.sys内核驱动不受此漏洞影响。该问题更可能对防火墙内网的攻击者暴露。

下图展示了通宵运行重复执行上述步骤的自定义脚本后,内核非分页池使用情况:

如图所示,模拟攻击会持续消耗受害机的非分页池内存,直至内存管理机制限制使用并使内存消耗趋于稳定。此时资源耗尽将阻止新建任何TCP连接,破坏服务器的正常功能。

感谢Swamy Shivaganga Nagaraju对此案例的调查工作。

  • Neil Sikka, MSRC工程团队

网络协议

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计