Web app框架漏洞促微软及时修补ASP.net
许多Web应用程序框架易受到针对哈希表(hash tables)处理方式的拒绝服务攻击,研究人员本周三发现该漏洞。微软几小时后也立即宣布了其将推出ASP.NET平台的“波段”补丁。
哈希表通过将数据分发到列表中不同的插槽(该列表基于计算结果的方式,能够执行数据本身,即哈希函数),以快速存储和检索数据。在理想的情况下,哈希函数将为每一个可能的数据项返回不同的结果或哈希(或散列)。但实际上在现实中并非如此,而是会出现“哈希冲突”的情况,即其中两个或两个以上的不同部分数据生成相同的散列。
这种冲突将减缓相关数据的存储和检索,操作时间通常随着冲突中涉及项目数的平方的速度增加。
了解Web应用程序如何计算散列的攻击者将发送能造成多种此类冲突的数据量,通过一个HTTP请求就能够耗尽CPU。
PHP 5、Java和ASP.NET都容易受到攻击。微软星期三晚些时候承认,ASP.NET中的漏洞可能导致拒绝服务攻击,并承诺将提出解决方案。此后不久,微软宣布将打破其常规的安全更新安排,在太平洋时间周四上午10 点左右为该漏洞发布补丁。
Java应用服务器Apache Tomcat已经修补,以限制使用一个配置参数的参数面板的请求数量,阻止攻击者一次造成太多的哈希冲突。研究者称,10000的默认值将提供足够的保护,7.0.23和6.0.35起的Tomcat版本已有该更新。
实际上,Web应用程序平台的开发者已经多次警告这个问题的存在,据称早在2003年就已经发现这种攻击手法,最早出现在由Scott A. Crosby 和Dan S. Wallach撰写的Usenix安全白皮书《通过算法复杂性攻击的拒绝服务》(Denial of Service via Algorithmic Complexity Attacks)中。
随后的几年中Perl将哈希计算方法进行了随机化的改变,以防止攻击者提前计算出冲突,CRuby1.9以后的版本也进行了相应的调整。