【发布时间】:2012-08-29 18:00:30
【问题描述】:
我想问一个关于 Linux 内核 (net/ipv4/inet_fragment.c) 中的 IPv4 片段管理器的问题。我不明白为什么结构 inet_frags (include/net/inet_frag.h) 有一个“rnd”字段,显然是用随机数填充的。我的意思是,我不希望我的 IPv4 堆栈以随机顺序重新组合我的数据包^^。
你能帮我吗?提前谢谢。 (内核 3.4.4)
【问题讨论】:
我想问一个关于 Linux 内核 (net/ipv4/inet_fragment.c) 中的 IPv4 片段管理器的问题。我不明白为什么结构 inet_frags (include/net/inet_frag.h) 有一个“rnd”字段,显然是用随机数填充的。我的意思是,我不希望我的 IPv4 堆栈以随机顺序重新组合我的数据包^^。
你能帮我吗?提前谢谢。 (内核 3.4.4)
【问题讨论】:
该实现使用散列来存储 IP 数据报片段。具有固定哈希函数的哈希表容易出现拒绝服务hash collision attack。因此,他们为每个哈希函数添加了一个随机种子以防止攻击。
见http://www.iss.net/security_center/reference/vuln/linux-kernel-packets-dos.htm:
Linux 内核容易受到拒绝服务攻击,这是由于 TCP/IP 片段重组处理不当造成的。远程攻击者可以发送特制数据包,导致大量哈希表冲突,从而消耗所有可用的 CPU 资源。
【讨论】: