-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

=============================================================================
FreeBSD-SA-05:15.tcp                                        Security Advisory
                                                          The FreeBSD Project

Topic:          TCP connection stall denial of service

Category:       core
Module:         inet
Announced:      2005-06-29
Credits:        Noritoshi Demizu
Affects:        All FreeBSD releases.
Corrected:      2005-06-29 21:38:48 UTC (RELENG_5, 5.4-STABLE)
                2005-06-29 21:41:03 UTC (RELENG_5_4, 5.4-RELEASE-p3)
                2005-06-29 21:42:33 UTC (RELENG_5_3, 5.3-RELEASE-p17)
                2005-06-29 21:43:42 UTC (RELENG_4, 4.11-STABLE)
                2005-06-29 21:45:14 UTC (RELENG_4_11, 4.11-RELEASE-p11)
                2005-06-29 21:46:15 UTC (RELENG_4_10, 4.10-RELEASE-p16)
CVE Name:       CAN-2005-0356, CAN-2005-2068

For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
<URL:http://www.freebsd.org/security/>.

I.   Background

The Transmission Control Protocol (TCP) of the TCP/IP protocol suite
provides a connection-oriented, reliable, sequence-preserving data
stream service.  TCP timestamps are used to measure Round-Trip Time
and in the Protect Against Wrapped Sequences (PAWS) algorithm.  TCP
packets with the SYN flag set are used during setup of new TCP
connections.

II.  Problem Description

Two problems have been discovered in the FreeBSD TCP stack.

First, when a TCP packets containing a timestamp is received, inadequate
checking of sequence numbers is performed, allowing an attacker to
artificially increase the internal "recent" timestamp for a connection.

Second, a TCP packet with the SYN flag set is accepted for established
connections, allowing an attacker to overwrite certain TCP options.

III. Impact

Using either of the two problems an attacker with knowledge of the
local and remote IP and port numbers associated with a connection
can cause a denial of service situation by stalling the TCP connection.
The stalled TCP connection my be closed after some time by the other
host.

IV.  Workaround

In some cases it may be possible to defend against these attacks by
blocking the attack packets using a firewall.  Packets used to effect
either of these attacks would have spoofed source IP addresses.

V.   Solution

Perform one of the following:

1) Upgrade your vulnerable system to 4-STABLE or 5-STABLE, or to the
RELENG_5_4, RELENG_5_3, RELENG_4_11, or RELENG_4_10 security branch
dated after the correction date.

2) To patch your present system:

The following patches have been verified to apply to FreeBSD 4.10,
4.11, 5.3, and 5.4 systems.

a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.

[FreeBSD 4.x]
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:15/tcp4.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:15/tcp4.patch.asc

[FreeBSD 5.x]
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:15/tcp.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-05:15/tcp.patch.asc

b) Apply the patch.

# cd /usr/src
# patch < /path/to/patch

c) Recompile your kernel as described in
<URL:http://www.freebsd.org/handbook/kernelconfig.html> and reboot the
system.

VI.  Correction details

The following list contains the revision numbers of each file that was
corrected in FreeBSD.

Branch                                                           Revision
  Path
- -------------------------------------------------------------------------
RELENG_4
  src/sys/netinet/tcp_input.c                                  1.107.2.44
RELENG_4_11
  src/UPDATING                                             1.73.2.91.2.12
  src/sys/conf/newvers.sh                                  1.44.2.39.2.15
  src/sys/netinet/tcp_input.c                              1.107.2.41.4.3
RELENG_4_10
  src/UPDATING                                             1.73.2.90.2.17
  src/sys/conf/newvers.sh                                  1.44.2.34.2.18
  src/sys/netinet/tcp_input.c                              1.107.2.41.2.1
RELENG_5
  src/sys/netinet/tcp_input.c                                  1.252.2.16
RELENG_5_4
  src/UPDATING                                            1.342.2.24.2.12
  src/sys/conf/newvers.sh                                   1.62.2.18.2.8
  src/sys/netinet/tcp_input.c                              1.252.2.14.2.1
RELENG_5_3
  src/UPDATING                                            1.342.2.13.2.20
  src/sys/conf/newvers.sh                                  1.62.2.15.2.22
  src/sys/netinet/tcp_input.c                                   1.252.4.1
- -------------------------------------------------------------------------

VII. References

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0356
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-2068
http://www.kb.cert.org/vuls/id/637934

The latest revision of this advisory is available at
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-05:15.tcp.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (FreeBSD)

iD8DBQFCwxe7FdaIBMps37IRAi39AJ9ss6PVEwloS4SlKEWi5S1hpHnzmACeJF7H
rKmK2NtleJ98dTLWW4QLMn4=
=6fBH
-----END PGP SIGNATURE-----
