接下来让我们看一种linux内核算法上出现的漏洞。先来简单介绍一下这个漏洞,当linux系统接收到攻击者经过特殊构造的包后,会引起hash表产生冲突导致服务器资源被耗尽。这里所说的hash冲突就是指:许多数值经过某种hash算法运算以后得出的值相同,并且这些值都被储存在同一个hash槽内,这就使hash表变成了一个单向链表。而对此hash表的插入操作会从原来的复杂度O(n)变为O(n*n)。这样就会导致系统消耗巨大的cpu资源,从而产生了DoS攻击效果。我们先看一下在linux中使用的hash算法,这个算法用在对linux route catch的索引与分片重组的操作中。在今年五月Rice University计算机科学系的Scott A. Crosby与Dan S. Wallach提出了一种新的低带宽的DoS攻击方法,即针对应用程序所使用的hash算法的脆弱性进行攻击。这种方法提出:如果应用程序使用的hash算法存在弱点,也就是说hash算法不能有效地把数据进行散列,攻击者就可以通过构造特殊的值使hash算法产生冲突引起DoS攻击。