Test pf and stack with double atomic IPv6 fragments.
authorbluhm <bluhm@openbsd.org>
Fri, 8 Sep 2023 21:15:02 +0000 (21:15 +0000)
committerbluhm <bluhm@openbsd.org>
Fri, 8 Sep 2023 21:15:02 +0000 (21:15 +0000)
commit45550d4a98dbed629b022333d58322e23454c128
tree97fc3d0e0bda234c4db13f8d7ced109015346301
parent745c2f60e98fd1f418c104960a567e120624d705
Test pf and stack with double atomic IPv6 fragments.

That means the IPv6 header chain contains two fragment header that
spawn the whole packet.  Such packets are illegal and pf drops them.
Otherwise they could bypass pf rules as described in CVE-2023-4809.
OpenBSD is not affected as pf_walk_header6() drops them with "IPv6
multiple fragment" log message.  This check exists since 2013 when
special support for atomic fragments was added to pf.

If pf is disabled, the IPv6 stack accepts such packets.  I do not
consider this a security issue.
regress/sys/netinet6/frag6/Makefile
regress/sys/netinet6/frag6/frag6_doubleatomic.py [new file with mode: 0644]