TUCoPS :: BSD :: bsd5270.htm

FreeBSD syncache/syncookies denial of service
17th Apr 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

	- -------------------------------------------------------------------------

	

TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2024 AOH