我们两个月前发布了安全公告MS08-020来改进DNS事务ID的随机性。您可以在这篇博客文章中阅读有关MS08-020算法更改的更多信息。增加随机性使攻击者更难伪造DNS响应。今天我们发布了MS08-037,进一步增加了伪造DNS事务的难度。
我们修改了DNS客户端和服务器解析器,使其从随机源端口发送请求。以前,攻击者只需要猜测正确的事务ID。在应用MS08-037后,攻击者需要同时猜测事务ID和源端口才能成功伪造DNS响应。简而言之,DNS事务的随机源端口为DNS事务添加了另一个独特的信息片段,这使得伪造更加困难。
在Win2k3及以下平台上,随机套接字池的默认大小为2500个端口,可以通过修改以下注册表值进行配置:
|
|
另一个值得注意的注册表值是:
|
|
有关MaxUserPort的更多信息,请参考:Microsoft Technet文档。在Win2k3上,MaxUserPort定义为通配符绑定可能分配的最大端口号。基本上,如果设置了MaxUserPort,它就定义了动态端口范围。需要注意的是,MaxUserPort在Vista和Win2k3中的含义不同。在Win2k3中,如果设置了MaxUserPort,它定义了动态端口范围(从1024到MaxUserPort)。在Vista中,如果设置了MaxUserPort,它表示动态端口的数量,因此范围是从StartRange(无论配置了什么,默认为49k)到StartRange+MaxUserPort。参考:Microsoft支持文档。
总结来说,安装补丁后Win2k3及以下平台的固定行为是:
- 如果设置了MaxUserPort,则从1024-MaxUserPort范围内随机分配端口
- 如果未设置MaxUserPort,则端口将从49152-65535范围内随机分配
默认端口池选择从与BSD传统一致的范围内随机获取端口,许多系统安全地从该范围动态分配端口。在该范围之外这样做有很小的可能导致网络故障,但在大多数情况下不会引起问题。如果您想增加随机性,可以通过修改MaxUserPort和相关注册表键来增加端口限制。
- 安全漏洞研究与防御团队 文章按"原样"提供,不提供任何担保,也不授予任何权利。