26th Sep 2002 [SBWID-5270]
COMMAND
	FreeBSD syncache/syncookies denial of service
SYSTEMS AFFECTED
	 FreeBSD 4.5-RELEASE
	 FreeBSD 4.4-STABLE after 2001-12-14 19:53:01 UTC
	 FreeBSD 4.5-STABLE prior to the correction date 
	 Corrected:      2002-02-20 16:48:49 UTC (RELENG_4)
	                 2002-02-21 16:38:39 UTC (RELENG_4_5, 4.5-RELEASE-p1)
PROBLEM
	In FreeBSD Security Advisory FreeBSD-SA-02:20.syncache a  bug  regarding
	syncache and syncookie mechanism has been detected and corrected :
	 Background
	 ==========
	The SYN cache ("syncache") and SYN cookie  mechanism  ("syncookie")  are
	features of the TCP/IP stack intended to improve resistance to  a  class
	of denial of service attacks known as SYN floods.
	 Problem Description
	 ===================
	Two related problems with syncache were triggered when  syncookies  were
	implemented.
	1) When a SYN was accepted via a syncookie,  it  used  an  uninitialized
	pointer to find the TCP options for the new socket. This pointer may  be
	a null pointer, which will cause the machine to crash.
	2) A syncache entry is created when a SYN arrives on  a  listen  socket.
	If the application which  created  the  listen  socket  was  killed  and
	restarted  ---  and  therefore  recreated  the  listen  socket  with   a
	different inpcb --- an ACK (or duplicate SYN) which  later  arrived  and
	matched the existing syncache entry would cause a reference to  the  old
	inpcb pointer. Depending on the pointer's contents,  this  might  result
	in a system crash.
	Because syncache/syncookies support was added prior to  the  release  of
	FreeBSD 4.5-RELEASE, no other releases are affected.
	 Impact
	 ======
	Legitimate TCP/IP traffic may cause the machine to crash.
SOLUTION
	 Workaround
	 ==========
	The first issue described may be worked around by  disabling  syncookies
	using sysctl.  Issue the following command as root:
	
	  # sysctl -w net.inet.tcp.syncookies=0
	
	However, there is no workaround for the second issue.
	 Solution
	 ========
	1) Upgrade your  vulnerable  system  to  4.5-STABLE  or  the  RELENG_4_5
	security branch dated after the respective correction dates.
	2) To patch your present system: download the relevant  patch  from  the
	below location, and execute the following commands as root:
	
	# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-02:20/syncache.patch
	# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-02:20/syncache.patch.asc
	
	This patch has been verified to apply to 4.5-RELEASE only.
	Verify the detached PGP signature using your PGP utility.
	Execute the following commands as root:
	
	# cd /usr/src
	# patch -p < /path/to/patch
	
	Recompile        your        kernel        as        described        in
	http://www.freebsd.org/handbook/kernelconfig.html   and    reboot    the
	system.
	 Correction details
	 ==================
	The following list contains the revision numbers of each file  that  was
	corrected in the FreeBSD ports collection.
	
	Path                                                             Revision
	  Branch
	- -------------------------------------------------------------------------
	src/sys/conf/newvers.sh
	  RELENG_4_5                                                1.44.2.20.2.2
	src/sys/netinet/tcp_syncache.c
	  RELENG_4                                                        1.5.2.5
	  RELENG_4_5                                                  1.5.2.4.2.1
	- -------------------------------------------------------------------------