search menu icon-carat-right cmu-wordmark

CERT Coordination Center

TCP does not adequately validate segments before updating timestamp value

Vulnerability Note VU#637934

Original Release Date: 2005-05-18 | Last Revised: 2005-08-23

Overview

Certain TCP implementations may allow a remote attacker to arbitrarily modify host timestamp values, leading to a denial-of-service condition.

Description

The Transmission Control Protocol (TCP) is defined in RFC 793 as a means to provide reliable host-to-host transmission between hosts in a packet-switched computer networks. RFC 1323 introduced techniques to increase the performance of TCP. Two such techniques are TCP timestamps and Protection Against Wrapped Sequence Numbers (PAWS).

In certain implementations of TCP with timestamps enabled, both hosts maintain an internal timer that is used to detect segment loss and regulate traffic flow. PAWS uses timestamps to prevent duplicate or old segments from corrupting an active connection. In PAWS with the timestamps option enabled, hosts use an internal timer to track the value of the timestamp in incoming segments against the last valid timestamp recorded. If the segment's timestamp is larger than the value of the last valid timestamp and the sequence number is less than the last acknowledgement sent, then the host's internal timer is updated with the new timestamp value and the segment is passed on for further processing. Otherwise, the segment is rejected as too old or a duplicate.

If a remote attacker can determine the source and destination ports as well as IP addresses of both hosts engaged in an active connection, that attacker may be able to inject a specially crafted segment into the connection. When the spoofed segment is received the host's internal timer value will be changed to the value in the crafted segment. Please note that, in certain TCP implementations, sequence numbers are not properly validated before the internal timer is updated, soan attacker does not need to know a correct sequence number to change the internal timer. If the internal timer value is set to a large value, then it will likely be larger than the timestamp value in subsequent incoming segments. This will cause new, legitimate TCP segments to be evaluated as too old and discarded. As segments are rejected, the flow of data between hosts stops, resulting in a denial-of-service condition.

For more information about TCP, timestamps, and PAWS please see RFC 793 and RFC 1323.

Impact

An unauthenticated, remote attacker could cause TCP connections to abort/drop segments, leading to a denial-of-service condition.

Solution

Apply a patch
Users who suspect they are vulnerable are encouraged to check with their vendor to determine the appropriate action to take. Please see the list of vendors we have notified below.

Disable PAWS


As a workaround, disable PAWS and TCP timestamps if they are not needed.

Vendor Information

637934
 

View all 81 vendors View less vendors


CVSS Metrics

Group Score Vector
Base
Temporal
Environmental

References

Acknowledgements

Thanks to Noritoshi Demizu for researching and reporting this vulnerability.

This document was written by Jeff Gennari.

Other Information

CVE IDs: CVE-2005-0356
Severity Metric: 4.73
Date Public: 2005-05-18
Date First Published: 2005-05-18
Date Last Updated: 2005-08-23 15:39 UTC
Document Revision: 217

Sponsored by CISA.