Security-Announce archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

NetBSD Security Advisory 2009-001: PF firewall remote Denial Of Service attack

Hash: SHA1

                 NetBSD Security Advisory 2009-001

Topic:          PF firewall remote Denial Of Service attack

Version:        NetBSD-current:         affected
                NetBSD 5.0:             not affected
                NetBSD 4.0.*:           not affected
                NetBSD 4.0:             not affected
                NetBSD 3.1.*:           not affected
                NetBSD 3.1:             not affected
                NetBSD 3.0.*:           not affected
                NetBSD 3.0:             not affected

Severity:       Denial of service

Fixed:          NetBSD-current:         April 14, 2009
                NetBSD-5 branch:        April 14, 2009
                        (5.0 includes the fix)

Please note that NetBSD releases prior to 4.0 are no longer supported.
It is recommended that all users upgrade to a supported release.


PF firewalls suffer from a remote denial of service attack (system
panic) due to mishandling of some ICMP and ICMPV6 packets.

Technical Details

When a PF firewall using nat or rdr receives a specially crafted
packet, a null pointer dereference causes a kernel panic.

In pf_test_rule() ICMP logic was implied for IPv6 packets and ICMPv6 logic
was implied for IPv4 packets. The wrong ICMP header length is used and an
assertion fails due to the attempt to access unallocated memory.

See also:

Solutions and Workarounds

Only kernels compiled with the following option are vulnerable to this issue:

        pseudo-device pf

As a temporary workaround recompile the kernel with the above option 
commented out.  The default NetBSD GENERIC kernels do not have this
option enabled.  In addition to this the system must be running
with nat and/or rdr rules present in the active ruleset.

An additional workaround can be to add the following rules to your 
/etc/pf.conf configuration file:

nat/rdr ... inet proto { tcp udp icmp } ...
nat/rdr ... inet6 proto { tcp udp icmp6 } ...

For all NetBSD versions, you need to obtain fixed kernel sources,
rebuild and install the new kernel, and reboot the system.
The fixed source may be obtained from the NetBSD CVS repository.        
The following instructions briefly summarize how to upgrade your        
kernel.  In these instructions, replace:

  ARCH     with your architecture (from uname -m), and                  
  KERNCONF with the name of your kernel configuration file.    

To update from CVS, re-build, and re-install the kernel:

        # cd src
        # cvs update -d -P sys/dist/pf/net/pf.c
        # ./ kernel=KERNCONF
        # mv /netbsd /netbsd.old
        # cp sys/arch/ARCH/compile/obj/KERNCONF/netbsd /netbsd 
        # shutdown -r now

For more information on how to do this, see:

Thanks To

"Rembrandt" is credited with the discovery of this issue.
Christos Zoulas for applying the OpenBSD fix.

Revision History

        2009-03-15      Initial release

More Information

Advisories may be updated as new information becomes available.
The most recent version of this advisory (PGP signed) can be found at

Information about NetBSD and NetBSD security can be found at and

Copyright 2009, The NetBSD Foundation, Inc.  All Rights Reserved.
Redistribution permitted only in full, unmodified form.

$NetBSD: NetBSD-SA2009-001.txt,v 1.1 2009/06/22 19:31:01 tonnerre Exp $

Version: GnuPG v1.4.9 (NetBSD)


Home | Main Index | Thread Index | Old Index