Subject: NetBSD Security Advisory 2001-007: IP Filter may incorrectly pass packets
To: None <netbsd-announce@netbsd.org>
From: None <security-officer@netbsd.org>
List: netbsd-announce
Date: 05/30/2001 16:25:50
-----BEGIN PGP SIGNED MESSAGE-----

                 NetBSD Security Advisory 2001-007
                 =================================

Topic:		IP Filter may incorrectly pass packets
Version:	NetBSD 1.4, 1.5, -current
Severity:       Unexpected network packets may be received by the system
Fixed:		NetBSD-current:    April  6, 2001
		NetBSD-1.5 branch: April 14, 2001
		NetBSD-1.4 branch: April 14, 2001

Abstract
========

IP Filter (ipf) - the IP packet filtering software in NetBSD - has a
bug where the checks on a fragmented packet are incomplete and
it may be possible to abuse this to bypass filter rules.


Technical Details
=================

Fragmented packets may be stored in a ``fragment cache'' in certain
circumstances.  The fragment cache is checked for a packet match
before any of the filter rules are checked. There were insufficient
checks made on fragmented packets before inserting the packet into
the fragment cache.

This problem is most likely to occur if "keep frags" or "keep state"
is used in the ipf rules, but it is possible if the ftp NAT proxy
is used in the ipnat rules.


Solutions and Workarounds
=========================

Upgrade the system from newer sources or binaries.

Systems running NetBSD-current dated from before April 6, 2001
should be upgraded to NetBSD-current dated April 6, 2001 or later.

Systems running NetBSD 1.5.x systems dated from before April 14, 2001
should be upgraded to NetBSD 1.5.x dated April 14, 2001 or later.
NetBSD 1.5.1 will ship with the fix.

Systems running NetBSD 1.4.x systems dated from before April 14, 2001
should be upgraded to NetBSD 1.4.x dated April 14, 2001 or later.

If you cannot upgrade the kernel and if you are running on a platform
that supports it, you can patch the kernel binary using gdb: 
	
	# gdb --write /netbsd
	(gdb) set ipfr_inuse=1000000
	(gdb) quit

Then reboot your system for the change to take effect. The value 1000000
is not important, it just has to be greater than the IPFT_SIZE constant.


Thanks To
=========

Thomas Lopatic for reporting the problem, and Darren Reed for fixing it.


Revision History
================

        2001-05-29 - Initial Release


More Information
================

An up-to-date PGP signed copy of this release will be maintained at
  ftp://ftp.netbsd.org/pub/NetBSD/security/advisories/NetBSD-SA2001-007.txt.asc

Information about NetBSD and NetBSD security can be found at
http://www.NetBSD.ORG/ and http://www.NetBSD.ORG/Security/.


Copyright 2001, The NetBSD Foundation, Inc.  All Rights Reserved.

$NetBSD: NetBSD-SA2001-007.txt,v 1.4 2001/05/29 05:58:42 lukem Exp $
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.5 (NetBSD)
Comment: For info see http://www.gnupg.org

iQCVAwUBOxM/hT5Ru2/4N2IFAQE6OQP/f9IEZ7nWZ/AVNUDmP3DA9rHUZEIw05VG
sUpFPWYOK6Oi543gi0lGeH+SlxnuQgWLT32JWEPzFAq3/oTGOsx3nk5JdFG4tznU
JG+wuDDheXA+v6jgYDCzc3T7USkE5bipyv8mJdzib4FtAXskwkXRTXhoMKdgz5n0
ChcLdWUF+wQ=
=JDHk
-----END PGP SIGNATURE-----