[NETFILTER]: Fix ip6_tables protocol bypass bug
authorPatrick McHardy <kaber@trash.net>
Tue, 24 Oct 2006 23:14:04 +0000 (16:14 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Oct 2006 23:14:04 +0000 (16:14 -0700)
commit51d8b1a65291a6956b79374b6adbbadc2263bcf6
treed6b8cbd6628c11d1c3e9c8c8e9ca048acf723a71
parent2fab22f2d3290ff7c602fe62f22e825c48e97a06
[NETFILTER]: Fix ip6_tables protocol bypass bug

As reported by Mark Dowd <Mark_Dowd@McAfee.com>, ip6_tables is susceptible
to a fragmentation attack causing false negatives on protocol matches.

When the protocol header doesn't follow the fragment header immediately,
the fragment header contains the protocol number of the next extension
header. When the extension header and the protocol header are sent in
a second fragment a rule like "ip6tables .. -p udp -j DROP" will never
match.

Drop fragments that are at offset 0 and don't contain the final protocol
header regardless of the ruleset, since this should not happen normally.

With help from Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/netfilter/ip6_tables.c