Executive Summary

Summary
Title TCP may keep its offered receive window closed indefinitely (RFC 1122)
Informations
Name VU#723308 First vendor Publication 2009-11-23
Vendor VU-CERT Last vendor Modification 2009-11-25
Severity (Vendor) N/A Revision M

Security-Database Scoring CVSS v3

Cvss vector : N/A
Overall CVSS Score NA
Base Score NA Environmental Score NA
impact SubScore NA Temporal Score NA
Exploitabality Sub Score NA
 
Calculate full CVSS 3.0 Vectors scores

Security-Database Scoring CVSS v2

Cvss vector : (AV:N/AC:L/Au:N/C:N/I:N/A:C)
Cvss Base Score 7.8 Attack Range Network
Cvss Impact Score 6.9 Attack Complexity Low
Cvss Expoit Score 10 Authentication None Required
Calculate full CVSS 2.0 Vectors scores

Detail

Vulnerability Note VU#723308

TCP may keep its offered receive window closed indefinitely (RFC 1122)

Overview

Part of the Transmission Control Protocol (TCP) specification (RFC 1122) allows a receiver to advertise a zero byte window, instructing the sender to maintain the connection but not send additional TCP payload data. The sender should then probe the receiver to check if the receiver is ready to accept data. Narrow interpretation of this part of the specification can create a denial-of-service vulnerability. By advertising a zero receive window and acknowledging probes, a malicious receiver can cause a sender to consume resources (TCP state, buffers, and application memory), preventing the targeted service or system from handling legitimate connections.

I. Description

TCP implementations from multiple vendors are vulnerable to malicious or misbehaving connections that indefinitely advertize a zero receive window. RFC 1122 section 4.2.2.17 states that "A TCP MAY keep its offered receive window closed indefinitely. As long as the receiving TCP continues to send acknowledgments in response to the probe segments, the sending TCP MUST allow the connection to stay open." The TCP connection is open however no data is being transmitted. This "stalled" state is generally referred to as the TCP persist condition.

The intent of RFC 1122 section 4.2.2.17 is that TCP must not terminate connections in the persist condition under normal operating conditions. It is possible to interpret the language narrowly to mean that TCP must not terminate connections in the persist condition under any circumstances, and this interpretation is likely to cause denial-of-services vulnerabilities. An attacker can asymmetrically consume server resources by making TCP connections, optionally requesting data, then setting the receive window to zero and repeatedly acknowledging window probes from the server.

General consensus of the IETF TCP Maintenance and Minor Extensions (TCPM) working group is that an operating system or application can abort TCP connections for any reason, including resource exhaustion. TCP itself cannot reliably decide to abort connections, and doing so would violate protocol standards, however there is no guidance against an operating system or application from aborting connections to recover memory resources.

This vulnerability, one specific attack (section 3), and a proposed defense (section 7) are further described in the individual IETF Internet-Draft "Clarification of sender behaviour in persist condition." A more comprehensive review of TCP state vulnerabilities is presented in CPNI Technical Note 3/2009: Security Assessment of the Transmission Control Protocol (TCP). The CPNI document describes the persist condition in section 3.7.2 and suggests countermeasures in section 7.1.2.

Persist condition attacks are implemented in the sockstress and Nkiller2 tools. Typically, these tools leverage a lightweight userland connection framework to generate many attacking connections without the overhead of full TCP state. There are different variants of attacks that exploit the persist condition, and some attack tools exploit other timers and states in TCP. Please see the CERT-FI Advisory on the Outpost24 TCP Issues for further information about sockstress including vendor responses.

The security aspects of the TCP persist condition has been discussed on the TCPM working group mailing list since at least 2006.

II. Impact

A remote, unauthenticated attacker can cause a denial of service. The attacker may be able to cause the operating system or network application to be unresponsive for the duration of the attack.

III. Solution

Modifications can be made to TCP implementations, interfaces, operating systems, and network applications, however any changes should consider the balance between improved resiliency and decreased interoperability. The IETF TCPM is considering the problem and any potential changes to TCP or guidance to implementors. As of the publication of this vulnerability note, the IETF has not yet decided whether additional clarifications of the TCP specifications are necessary. Some vendors have implemented changes to improve resiliency against zero window and other TCP state attacks.

Consider the analysis and advice provided in the CPNI assessment.

Abort misbehaving TCP connections under resource exhaustion conditions

The consensus of the TCPM discussion seems to be that an operating system or application that faces resource exhaustion can selectively abort TCP connections that appear to be malicious (i.e., in persist condition and consuming relatively large amounts of memory). TCP must implement the persist behavior in RFC 1122, but a higher protocol layer can decide to abort a connection for any reason, including resource exhaustion. How and when to abort connections are open questions, and beyond the scope of the TCP protocol specification.

Section 7 of the "Clarification..." I-D describes an approach in which an application can limit how long the underlying TCP socket should tolerate connections in the persist condition. However, section 7.1.2 of the CPNI assessment warns that "...an attacker could simply open the window (i.e., advertise a TCP window larger than zero) from time to time to prevent this enforced limit from causing his malicious connections to be aborted."

A system that aborts TCP connections too aggressively is likely to drop legitimate connections. Carefully consider the likelihood of attack, the cost of dropping legitimate connections, and the benefit of dropping malicious connections before making design or configuration changes to TCP components of operating systems and applications. It is unlikely that one setting will work well for every TCP system.

Restrict Access

Restricting access or limiting connections to TCP services using firewalls can mitigate zero window attacks, at the cost of potentially blocking legitimate connections.

Systems Affected


Generally, any system or product that implements or uses TCP could be affected by this vulnerability, depending on how the product handles resource exhaustion and TCP connections in persist. By design, TCP does not inherently defend against denial-of-service attacks based on resource exhaustion. Decisions about how to detect and respond to such attacks are the responsibility of individual systems or products.

Please see the CERT-FI Advisory on the Outpost24 TCP Issues for further vendor information.

VendorStatusDate NotifiedDate Updated
3com, Inc.Unknown2009-06-262009-06-26
ACCESSUnknown2009-06-262009-06-26
Alcatel-LucentUnknown2009-06-262009-06-26
Apple Inc.Unknown2009-06-262009-06-26
AT&TUnknown2009-06-262009-06-26
Avaya, Inc.Unknown2009-06-262009-06-26
Barracuda NetworksUnknown2009-06-262009-06-26
Belkin, Inc.Unknown2009-06-262009-06-26
Borderware TechnologiesUnknown2009-06-262009-06-26
Charlotte's Web NetworksUnknown2009-06-262009-06-26
Check Point Software TechnologiesVulnerable2009-06-262009-11-05
Cisco Systems, Inc.Vulnerable2009-06-262009-11-18
ClavisterUnknown2009-06-262009-06-26
Computer AssociatesUnknown2009-06-262009-06-26
Computer Associates eTrust Security ManagementUnknown2009-06-262009-06-26
Conectiva Inc.Unknown2009-06-262009-06-26
Cray Inc.Unknown2009-06-262009-06-26
D-Link Systems, Inc.Unknown2009-06-262009-06-26
Debian GNU/LinuxUnknown2009-06-262009-06-26
DragonFly BSD ProjectUnknown2009-06-262009-06-26
EMC CorporationUnknown2009-06-262009-06-26
Engarde Secure LinuxUnknown2009-06-262009-06-26
Enterasys NetworksUnknown2009-06-262009-06-26
EricssonUnknown2009-06-262009-06-26
eSoft, Inc.Unknown2009-06-262009-06-26
Extreme NetworksVulnerable2009-06-262009-10-14
F5 Networks, Inc.Unknown2009-06-262009-06-26
Fedora ProjectUnknown2009-06-262009-06-26
Force10 Networks, Inc.Unknown2009-06-262009-06-26
Fortinet, Inc.Unknown2009-06-262009-06-26
Foundry Networks, Inc.Unknown2009-06-262009-06-26
FreeBSD, Inc.Unknown2009-06-262009-06-26
FujitsuUnknown2009-06-262009-06-26
Gentoo LinuxUnknown2009-06-262009-06-26
Global Technology AssociatesUnknown2009-06-262009-06-26
Hewlett-Packard CompanyVulnerable2009-06-262009-11-18
HitachiUnknown2009-06-262009-06-26
IBM CorporationUnknown2009-06-262009-06-26
IBM Corporation (zseries)Unknown2009-11-232009-11-23
IBM eServerUnknown2009-06-262009-06-26
InfobloxUnknown2009-06-262009-06-26
Intel CorporationUnknown2009-06-262009-06-26
Internet Security Systems, Inc.Unknown2009-06-262009-06-26
IntotoUnknown2009-06-262009-06-26
IP FilterUnknown2009-06-262009-06-26
IP Infusion, Inc.Unknown2009-10-142009-10-14
Juniper Networks, Inc.Unknown2009-06-262009-06-26
Linux Kernel ArchivesVulnerable2009-11-18
Luminous NetworksUnknown2009-06-262009-06-26
m0n0wallUnknown2009-06-262009-06-26
Mandriva S. A.Unknown2009-06-262009-06-26
McAfeeUnknown2009-06-262009-06-26
Microsoft CorporationVulnerable2009-06-262009-11-23
MontaVista Software, Inc.Unknown2009-06-262009-06-26
Multitech, Inc.Unknown2009-06-262009-06-26
NEC CorporationUnknown2009-06-262009-06-26
NetAppNot Vulnerable2009-06-262009-10-14
NetBSDUnknown2009-06-262009-06-26
netfilterUnknown2009-06-262009-06-26
NokiaUnknown2009-06-262009-06-26
Nortel Networks, Inc.Unknown2009-06-262009-06-26
Novell, Inc.Unknown2009-06-262009-06-26
OpenBSDUnknown2009-06-262009-06-26
Openwall GNU/*/LinuxUnknown2009-06-262009-06-26
PePLinkUnknown2009-06-262009-06-26
Process SoftwareUnknown2009-06-262009-06-26
Q1 LabsUnknown2009-06-262009-06-26
QNX, Software Systems, Inc.Unknown2009-06-262009-06-26
QuaggaUnknown2009-06-262009-06-26
RadWare, Inc.Unknown2009-06-262009-06-26
Red Hat, Inc.Unknown2009-06-262009-06-26
Redback Networks, Inc.Unknown2009-06-262009-06-26
SafeNetUnknown2009-06-262009-06-26
Secureworx, Inc.Unknown2009-06-262009-06-26
Silicon Graphics, Inc.Unknown2009-06-262009-06-26
Slackware Linux Inc.Unknown2009-06-262009-06-26
SmoothWallUnknown2009-06-262009-06-26
SnortUnknown2009-06-262009-06-26
Soapstone NetworksUnknown2009-06-262009-06-26
Sony CorporationUnknown2009-06-262009-06-26
SourcefireUnknown2009-06-262009-06-26
StonesoftUnknown2009-06-262009-06-26
Sun Microsystems, Inc.Vulnerable2009-06-262009-11-05
SUSE LinuxUnknown2009-06-262009-06-26
SymantecUnknown2009-06-262009-06-26
The SCO GroupUnknown2009-06-262009-06-26
TippingPoint, Technologies, Inc.Unknown2009-06-262009-06-26
TurbolinuxUnknown2009-06-262009-06-26
U4EA Technologies, Inc.Unknown2009-06-262009-06-26
UbuntuUnknown2009-06-262009-06-26
UnisysUnknown2009-06-262009-06-26
VMwareNot Vulnerable2009-09-042009-10-14
VyattaUnknown2009-06-262009-06-26
Watchguard Technologies, Inc.Unknown2009-06-262009-06-26
Wind River Systems, Inc.Unknown2009-06-262009-06-26
ZyXELUnknown2009-06-262009-06-26

References



http://tools.ietf.org/html/rfc1122#page-92
http://tools.ietf.org/html/draft-ananth-tcpm-persist-01
http://tools.ietf.org/html/draft-mahesh-persist-timeout-02
http://www.cpni.gov.uk/Docs/tn-03-09-security-assessment-TCP.pdf
https://www.cert.fi/haavoittuvuudet/2008/tcp-vulnerabilities.html
http://shlang.com/netkill/
http://www.phrack.org/issues.html?issue=66&id=9#article
http://isc.sans.org/diary.html?storyid=5104
http://www.t2.fi/2008/08/27/jack-c-louis-and-robert-e-lee-to-talk-about-new-dos-attack-vectors/
http://www.darkreading.com/blog.asp?blog_sectionid=403&doc_id=164939&WT.svl=tease2_2
http://www.ietf.org/mail-archive/web/tcpm/current/msg04040.html
http://www.ietf.org/mail-archive/web/tcpm/current/msg03826.html
http://www.ietf.org/mail-archive/web/tcpm/current/msg03503.html
http://www.ietf.org/mail-archive/web/tcpm/current/msg02870.html
http://www.ietf.org/mail-archive/web/tcpm/current/msg02557.html
http://www.ietf.org/mail-archive/web/tcpm/current/msg02189.html
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.31.y.git;a=blob;f=net/ipv4/tcp_timer.c;h=b144a26359bcf34a4b0606e171f97dc709afdfbb;hb=120f68c426e746771e8c09736c0f753822ff3f52#l233
http://sla.ckers.org/forum/read.php?14,27324
http://www.checkpoint.com/defense/advisories/public/announcement/090809-tcpip-dos-sockstress.html
http://www.securityfocus.com/archive/1/archive/1/506331/100/0/

Credit

Thanks to Mahesh Jethanandani and CERT-FI for their efforts researching and coordinating vendor responses to this vulnerability. Thanks also to Barry Greene, Lars Eggert, Wesley Eddy, and David Borman for their review and comments.

This document was written by David Warren and Art Manion.

Other Information

Date Public:2006-07-20
Date First Published:2009-11-23
Date Last Updated:2009-11-25
CERT Advisory: 
CVE-ID(s):CVE-2009-1926; CVE-2008-4609
NVD-ID(s):CVE-2009-1926CVE-2008-4609
US-CERT Technical Alerts: 
Metric:15.59
Document Revision:116

Original Source

Url : http://www.kb.cert.org/vuls/id/723308

CWE : Common Weakness Enumeration

% Id Name
100 % CWE-16 Configuration

OVAL Definitions

Definition Id: oval:org.mitre.oval:def:18890
 
Oval ID: oval:org.mitre.oval:def:18890
Title: CRITICAL PATCH UPDATE JULY 2012
Description: The TCP implementation in (1) Linux, (2) platforms based on BSD Unix, (3) Microsoft Windows, (4) Cisco products, and probably other operating systems allows remote attackers to cause a denial of service (connection queue exhaustion) via multiple vectors that manipulate information in the TCP state table, as demonstrated by sockstress.
Family: unix Class: vulnerability
Reference(s): CVE-2008-4609
Version: 3
Platform(s): Sun Solaris 10
Product(s):
Definition Synopsis:
Definition Id: oval:org.mitre.oval:def:5965
 
Oval ID: oval:org.mitre.oval:def:5965
Title: TCP/IP Orphaned Connections Vulnerability
Description: Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP2, Vista Gold, SP1, and SP2, and Server 2008 Gold and SP2 allow remote attackers to cause a denial of service (TCP outage) via a series of TCP sessions that have pending data and a (1) small or (2) zero receive window size, and remain in the FIN-WAIT-1 or FIN-WAIT-2 state indefinitely, aka "TCP/IP Orphaned Connections Vulnerability."
Family: windows Class: vulnerability
Reference(s): CVE-2009-1926
Version: 1
Platform(s): Microsoft Windows 2000
Microsoft Windows XP
Microsoft Windows Vista
Microsoft Windows Server 2003
Microsoft Windows Server 2008
Product(s):
Definition Synopsis:
Definition Id: oval:org.mitre.oval:def:6340
 
Oval ID: oval:org.mitre.oval:def:6340
Title: TCP/IP Zero Window Size Vulnerability
Description: The TCP implementation in (1) Linux, (2) platforms based on BSD Unix, (3) Microsoft Windows, (4) Cisco products, and probably other operating systems allows remote attackers to cause a denial of service (connection queue exhaustion) via multiple vectors that manipulate information in the TCP state table, as demonstrated by sockstress.
Family: windows Class: vulnerability
Reference(s): CVE-2008-4609
Version: 1
Platform(s): Microsoft Windows 2000
Microsoft Windows XP
Microsoft Windows Vista
Microsoft Windows Server 2003
Microsoft Windows Server 2008
Product(s):
Definition Synopsis:

CPE : Common Platform Enumeration

TypeDescriptionCount
Os 5
Os 12
Os 1458
Os 5
Os 69
Os 423
Os 1
Os 2
Os 8
Os 6
Os 5
Os 1
Os 33
Os 25
Os 3
Os 1

OpenVAS Exploits

Date Description
2009-09-10 Name : Microsoft Windows TCP/IP Remote Code Execution Vulnerability (967723)
File : nvt/secpod_ms09-048.nasl

Open Source Vulnerability Database (OSVDB)

Id Description
62144 F5 Multiple Products TCP/IP Implementation Queue Connection Saturation TCP St...

61133 Citrix Multiple Products TCP/IP Implementation Queue Connection Saturation TC...

59482 Blue Coat Multiple Products TCP/IP Implementation Queue Connection Saturation...

58614 McAfee Email and Web Security Appliance TCP/IP Implementation Queue Connectio...

58321 Check Point Multiple Products TCP/IP Implementation Queue Connection Saturati...

58189 Yamaha RT Series Routers TCP/IP Implementation Queue Connection Saturation TC...

57993 Solaris TCP/IP Implementation Queue Connection Saturation TCP State Table Rem...

57797 Microsoft Windows TCP/IP Orphaned Connection Handling Remote DoS

Microsoft Windows contains a flaw that may allow a remote denial of service. The issue is triggered when an attacker sends a series of TCP sessions with pending data, and will result in loss of availability for the platform.
57795 Microsoft Windows TCP/IP Implementation Queue Connection Saturation TCP State...

57794 Multiple BSD TCP/IP Implementation Queue Connection Saturation TCP State Tabl...

57793 Multiple Linux TCP/IP Implementation Queue Connection Saturation TCP State Ta...

50286 Cisco TCP/IP Implementation Queue Connection Saturation TCP State Table Remot...

Information Assurance Vulnerability Management (IAVM)

Date Description
2009-09-10 IAVM : 2009-A-0077 - Multiple Microsoft TCP/IP Remote Code Execution Vulnerabilities
Severity : Category I - VMSKEY : V0019917

Snort® IPS/IDS

Date Description
2014-01-10 Microsoft Windows TCP stack zero window size exploit attempt
RuleID : 16294 - Revision : 15 - Type : OS-WINDOWS
2014-01-10 TCP window closed before receiving data
RuleID : 15912 - Revision : 10 - Type : OS-WINDOWS

Nessus® Vulnerability Scanner

Date Description
2014-10-10 Name : The remote device is missing a vendor-supplied security patch.
File : f5_bigip_SOL10509.nasl - Type : ACT_GATHER_INFO
2010-09-01 Name : The remote device is missing a vendor-supplied security patch.
File : cisco-sa-20090908-tcp24http.nasl - Type : ACT_GATHER_INFO
2009-09-08 Name : Multiple vulnerabilities in the Windows TCP/IP implementation could lead to d...
File : smb_nt_ms09-048.nasl - Type : ACT_GATHER_INFO