| 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-0953, CAN-2005-1260
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
Path Revision
--------------------------------------------------------------------------------------------------------
| 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
|