安全研究员 Alexander Klink 和 Julian Walde 发现了一个严重的漏洞,这个漏洞影响到大多数网络服务器。针对这个漏洞的攻击只需要一个 HTTP 请求,这个特殊设定的请求在提交表单数据时造成哈希碰撞。当发现时,这个攻击影响到 Python、Ruby、PHP、Java 和 ASP.NET,目前厂商正在和研究人员合作发布补丁。
Tomcat 发布了7.0.23和6.0.35两个版本,通过限制 POST 表单字段数量最大值不超过 10000,来解决这个问题。变更记录说明这个最大值是可配置的,但没提供细节。
ASP.NET 的补丁于 12 月 29 日发布。使用默认服务策略的 Windows Azure 客户会自动更新该补丁。该补丁同样限制了单个请求中的 POST 表单字段数量,为每个请求 1000 字段,比需要发动拒绝服务攻击所需的数量小很多。通过 appSetting 键值“aspnet:MaxHttpCollectionKeys”可以配置表单字段数量。目前,这个配置只能应用于全网站范围,但也有针对页面覆写这个配置的需求。还修复了一个针对 JSON 输入和反序列化逻辑的相关缺陷。
PHP 候选发布版5.4.0也提供了 max_input_vars 指令。发布说明没有提到默认值。
截止目前,我们提到的所有厂商都在网络服务器端,通过限制单请求的字段数量,解决了这个问题。另一个选择是采用随机的字符串哈希公式。Ruby 就是这样的语言。.NET 也实现同样的功能,但只限于内部版本。产品发布目前有一个集合公式,但考虑到这个问题的严重性,可能会在下一次 CLR 升级的时候有所改变。对于 Java 来说这不是很容易,JVM 规定了字符串的哈希公式,以保证开发人员在所有版本上都可以信赖它。
Oracle Glassfish 的更新据信也已完成,但还没有发布。也没有公布解决这个问题方式的任何信息。
更多关于这个问题的信息可以在 Ars Technica 和 Chaos Communication Congress 网站上找到。
查看英文原文:Major Denial of Service Vulnerability Affects Most Web Servers