漏洞概述
本月发布的MS09-048补丁修复了Windows TCP/IP协议栈中的三个漏洞。其中CVE-2009-1925因存在远程代码执行(RCE)风险被评定为"严重"级别,另外两个漏洞则是会导致内存耗尽的拒绝服务(DoS)问题,但不具备RCE风险。
漏洞严重性分析
为何公告评级为"严重"?
TCP/IP协议栈作为Windows内核组件,负责处理IP、TCP和UDP等底层网络协议。CVE-2009-1925漏洞可使攻击者在特定条件下促使TCP/IP协议栈执行无效地址的代码,且远程匿名攻击者即可实现此操作。由于执行无效地址可能被利用实现RCE,我们基于最坏影响将公告评定为"严重"级别。
为何可利用性指数仅为中等?
可利用性指数用于指导补丁部署优先级,其评级基于公告发布后30天内产生可靠代码执行攻击的概率。针对该漏洞:
- 根本原因是TCP/IP错误地将包含TCP连接哈希值的字段当作函数指针使用
- 哈希值采用Toeplitz算法生成(详见技术文档),该算法使用随机密钥作为输入
- 攻击者无法知晓或控制该随机密钥,导致最终哈希值不可控
- 这意味着被调用的函数指针地址是攻击者无法预测的随机值
- 即使通过内核内存喷射(memory spraying)植入恶意载荷,随机命中的可能性仍极低
因此除攻击者已知目标计算机随机密钥的特殊场景外,RCE攻击均不可靠,故评定为中等可利用性。
拒绝服务攻击可靠性
攻击者可通过触发该漏洞导致系统崩溃(蓝屏),实现系统级拒绝服务。建议暴露于不可信用户的系统及时安装补丁,也可通过配置网络防火墙过滤攻击流量进行防护。
内存耗尽攻击新防护机制
本次更新在TCP/IP协议栈中引入了内存耗尽攻击防护功能:
- 默认在Windows Server 2003/2008启用,Windows Vista需手动配置
- 当系统非分页内核内存严重不足时自动激活
- 通过随机断开TCP连接维持系统运行
- 支持通过netsh和注册表(详见KB 974288)进行配置
常规运行中高负载的服务器可能触发该防护机制导致连接中断。管理员可参照KB 974288禁用防护或排除特定TCP端口。对于无法使用该功能的系统(如Windows 2000),可采用NAT或反向代理进行防护。
参考文献
- 微软可利用性指数:technet.microsoft.com/en-us/secur…
(2009年9月11日更新:添加KB 974288相关说明以回应客户咨询)
——Mark Wodrich, MSRC工程团队
本文按"原样"提供,不提供任何担保,亦不授予任何权利。