TCP Maintenance and Minor                                        F. Gont
Extensions (tcpm)                                                UK CPNI
Internet-Draft                                           August 19, 2009
Intended status: BCP
Expires: February 20, 2010


     Security Assessment of the Transmission Control Protocol (TCP)
                  draft-ietf-tcpm-tcp-security-00.txt

Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on February 20, 2010.

Copyright Notice

   Copyright (c) 2009 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents in effect on the date of
   publication of this document (http://trustee.ietf.org/license-info).
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.

Abstract

   This document contains a security assessment of the specifications of
   the Transmission Control Protocol (TCP), and of a number of



Gont                    Expires February 20, 2010               [Page 1]


Internet-Draft           TCP Security Assessment             August 2009


   mechanisms and policies in use by popular TCP implementations.
   Additionally, it contains best current practices for hardening a TCP
   implementation.


Table of Contents

   1.  Preface  . . . . . . . . . . . . . . . . . . . . . . . . . . .  5
     1.1.  Introduction . . . . . . . . . . . . . . . . . . . . . . .  5
     1.2.  Scope of this document . . . . . . . . . . . . . . . . . .  6
     1.3.  Organization of this document  . . . . . . . . . . . . . .  7
   2.  The Transmission Control Protocol  . . . . . . . . . . . . . .  7
   3.  TCP header fields  . . . . . . . . . . . . . . . . . . . . . .  8
     3.1.  Source Port  . . . . . . . . . . . . . . . . . . . . . . .  9
       3.1.1.  Problems that may arise as a result of collisions
               of connection-id's . . . . . . . . . . . . . . . . . . 11
       3.1.2.  Port randomization algorithms  . . . . . . . . . . . . 12
       3.1.3.  TCP ephemeral port range . . . . . . . . . . . . . . . 12
     3.2.  Destination port . . . . . . . . . . . . . . . . . . . . . 12
     3.3.  Sequence number  . . . . . . . . . . . . . . . . . . . . . 13
       3.3.1.  Generation of Initial Sequence Numbers . . . . . . . . 13
     3.4.  Acknowledgement Number . . . . . . . . . . . . . . . . . . 13
     3.5.  Data Offset  . . . . . . . . . . . . . . . . . . . . . . . 13
     3.6.  Control bits . . . . . . . . . . . . . . . . . . . . . . . 13
       3.6.1.  Reserved (four bits) . . . . . . . . . . . . . . . . . 13
       3.6.2.  CWR (Congestion Window Reduced)  . . . . . . . . . . . 13
       3.6.3.  ECE (ECN-Echo) . . . . . . . . . . . . . . . . . . . . 13
       3.6.4.  URG  . . . . . . . . . . . . . . . . . . . . . . . . . 13
       3.6.5.  ACK  . . . . . . . . . . . . . . . . . . . . . . . . . 13
       3.6.6.  PSH  . . . . . . . . . . . . . . . . . . . . . . . . . 13
       3.6.7.  RST  . . . . . . . . . . . . . . . . . . . . . . . . . 13
       3.6.8.  SYN  . . . . . . . . . . . . . . . . . . . . . . . . . 13
       3.6.9.  FIN  . . . . . . . . . . . . . . . . . . . . . . . . . 13
     3.7.  Window . . . . . . . . . . . . . . . . . . . . . . . . . . 13
       3.7.1.  Security implications of the maximum TCP window
               size . . . . . . . . . . . . . . . . . . . . . . . . . 13
       3.7.2.  Security implications arising from closed windows  . . 13
     3.8.  Checksum . . . . . . . . . . . . . . . . . . . . . . . . . 13
     3.9.  Urgent pointer . . . . . . . . . . . . . . . . . . . . . . 13
       3.9.1.  Security implications arising from ambiguities in
               the processing of urgent indications . . . . . . . . . 14
       3.9.2.  Security implications arising from the
               implementation of the urgent mechanism as "out of
               band" data . . . . . . . . . . . . . . . . . . . . . . 14
     3.10. Options  . . . . . . . . . . . . . . . . . . . . . . . . . 14
     3.11. Padding  . . . . . . . . . . . . . . . . . . . . . . . . . 14
     3.12. Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
   4.  Common TCP Options . . . . . . . . . . . . . . . . . . . . . . 14



Gont                    Expires February 20, 2010               [Page 2]


Internet-Draft           TCP Security Assessment             August 2009


     4.1.  End of Option List (Kind = 0)  . . . . . . . . . . . . . . 14
     4.2.  No Operation (Kind = 1)  . . . . . . . . . . . . . . . . . 14
     4.3.  Maximum Segment Size (Kind = 2)  . . . . . . . . . . . . . 14
     4.4.  Selective Acknowledgement Option . . . . . . . . . . . . . 14
       4.4.1.  SACK-permitted Option (Kind = 4) . . . . . . . . . . . 14
       4.4.2.  SACK Option (Kind = 5) . . . . . . . . . . . . . . . . 14
     4.5.  MD5 Option (Kind=19) . . . . . . . . . . . . . . . . . . . 14
     4.6.  Window scale option (Kind = 3) . . . . . . . . . . . . . . 14
     4.7.  Timestamps option (Kind = 8) . . . . . . . . . . . . . . . 14
       4.7.1.  Generation of timestamps . . . . . . . . . . . . . . . 14
       4.7.2.  Vulnerabilities  . . . . . . . . . . . . . . . . . . . 14
   5.  Connection-establishment mechanism . . . . . . . . . . . . . . 14
     5.1.  SYN flood  . . . . . . . . . . . . . . . . . . . . . . . . 14
     5.2.  Connection forgery . . . . . . . . . . . . . . . . . . . . 14
     5.3.  Connection-flooding attack . . . . . . . . . . . . . . . . 14
       5.3.1.  Vulnerability  . . . . . . . . . . . . . . . . . . . . 14
       5.3.2.  Countermeasures  . . . . . . . . . . . . . . . . . . . 14
     5.4.  Firewall-bypassing techniques  . . . . . . . . . . . . . . 15
   6.  Connection-termination mechanism . . . . . . . . . . . . . . . 15
     6.1.  FIN-WAIT-2 flooding attack . . . . . . . . . . . . . . . . 15
       6.1.1.  Vulnerability  . . . . . . . . . . . . . . . . . . . . 15
       6.1.2.  Countermeasures  . . . . . . . . . . . . . . . . . . . 15
   7.  Buffer management  . . . . . . . . . . . . . . . . . . . . . . 15
     7.1.  TCP retransmission buffer  . . . . . . . . . . . . . . . . 15
       7.1.1.  Vulnerability  . . . . . . . . . . . . . . . . . . . . 15
       7.1.2.  Countermeasures  . . . . . . . . . . . . . . . . . . . 15
     7.2.  TCP segment reassembly buffer  . . . . . . . . . . . . . . 15
     7.3.  Automatic buffer tuning mechanisms . . . . . . . . . . . . 15
       7.3.1.  Automatic send-buffer tuning mechanisms  . . . . . . . 15
       7.3.2.  Automatic receive-buffer tuning mechanism  . . . . . . 15
   8.  TCP segment reassembly algorithm . . . . . . . . . . . . . . . 15
     8.1.  Problems that arise from ambiguity in the reassembly
           process  . . . . . . . . . . . . . . . . . . . . . . . . . 15
   9.  TCP Congestion Control . . . . . . . . . . . . . . . . . . . . 15
     9.1.  Congestion control with misbehaving receivers  . . . . . . 15
       9.1.1.  ACK division . . . . . . . . . . . . . . . . . . . . . 15
       9.1.2.  DupACK forgery . . . . . . . . . . . . . . . . . . . . 15
       9.1.3.  Optimistic ACKing  . . . . . . . . . . . . . . . . . . 15
     9.2.  Blind DupACK triggering attacks against TCP  . . . . . . . 15
       9.2.1.  Blind throughput-reduction attack  . . . . . . . . . . 15
       9.2.2.  Blind flooding attack  . . . . . . . . . . . . . . . . 16
       9.2.3.  Difficulty in performing the attacks . . . . . . . . . 16
       9.2.4.  Modifications to TCP's loss recovery algorithms  . . . 16
       9.2.5.  Countermeasures  . . . . . . . . . . . . . . . . . . . 16
     9.3.  TCP Explicit Congestion Notification (ECN) . . . . . . . . 16
       9.3.1.  Possible attacks by a compromised router . . . . . . . 16
       9.3.2.  Possible attacks by a malicious TCP endpoint . . . . . 16
   10. TCP API  . . . . . . . . . . . . . . . . . . . . . . . . . . . 16



Gont                    Expires February 20, 2010               [Page 3]


Internet-Draft           TCP Security Assessment             August 2009


     10.1. Passive opens and binding sockets  . . . . . . . . . . . . 16
     10.2. Active opens and binding sockets . . . . . . . . . . . . . 16
   11. Blind in-window attacks  . . . . . . . . . . . . . . . . . . . 16
     11.1. Blind TCP-based connection-reset attacks . . . . . . . . . 16
       11.1.1. RST flag . . . . . . . . . . . . . . . . . . . . . . . 16
       11.1.2. SYN flag . . . . . . . . . . . . . . . . . . . . . . . 16
       11.1.3. Security/Compartment . . . . . . . . . . . . . . . . . 16
       11.1.4. Precedence . . . . . . . . . . . . . . . . . . . . . . 16
       11.1.5. Illegal options  . . . . . . . . . . . . . . . . . . . 16
     11.2. Blind data-injection attacks . . . . . . . . . . . . . . . 16
   12. Information leaking  . . . . . . . . . . . . . . . . . . . . . 16
     12.1. Remote Operating System detection via TCP/IP stack
           fingerprinting . . . . . . . . . . . . . . . . . . . . . . 16
       12.1.1. FIN probe  . . . . . . . . . . . . . . . . . . . . . . 16
       12.1.2. Bogus flag test  . . . . . . . . . . . . . . . . . . . 16
       12.1.3. TCP ISN sampling . . . . . . . . . . . . . . . . . . . 17
       12.1.4. TCP initial window . . . . . . . . . . . . . . . . . . 17
       12.1.5. RST sampling . . . . . . . . . . . . . . . . . . . . . 17
       12.1.6. TCP options  . . . . . . . . . . . . . . . . . . . . . 17
       12.1.7. Retransmission Timeout (RTO) sampling  . . . . . . . . 17
     12.2. System uptime detection  . . . . . . . . . . . . . . . . . 17
   13. Covert channels  . . . . . . . . . . . . . . . . . . . . . . . 17
   14. TCP Port scanning  . . . . . . . . . . . . . . . . . . . . . . 17
     14.1. Traditional connect() scan . . . . . . . . . . . . . . . . 17
     14.2. SYN scan . . . . . . . . . . . . . . . . . . . . . . . . . 17
     14.3. FIN, NULL, and XMAS scans  . . . . . . . . . . . . . . . . 17
     14.4. Maimon scan  . . . . . . . . . . . . . . . . . . . . . . . 17
     14.5. Window scan  . . . . . . . . . . . . . . . . . . . . . . . 17
     14.6. ACK scan . . . . . . . . . . . . . . . . . . . . . . . . . 17
   15. Processing of ICMP error messages by TCP . . . . . . . . . . . 17
   16. TCP interaction with the Internet Protocol (IP)  . . . . . . . 17
     16.1. TCP-based traceroute . . . . . . . . . . . . . . . . . . . 17
     16.2. Blind TCP data injection through fragmented IP traffic . . 17
     16.3. Broadcast and multicast IP addresses . . . . . . . . . . . 17
   17. Security Considerations  . . . . . . . . . . . . . . . . . . . 17
   18. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 18
   19. References . . . . . . . . . . . . . . . . . . . . . . . . . . 18
   Appendix A.  Changes from previous versions of the draft (to
                be removed by the RFC Editor before publishing
                this document as an RFC)  . . . . . . . . . . . . . . 28
     A.1.  Changes from draft-gont-tcp-security-00  . . . . . . . . . 28
   Appendix B.  Advice and guidance to vendors  . . . . . . . . . . . 28
   Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 28








Gont                    Expires February 20, 2010               [Page 4]


Internet-Draft           TCP Security Assessment             August 2009


1.  Preface

1.1.  Introduction

   The TCP/IP protocol suite was conceived in an environment that was
   quite different from the hostile environment they currently operate
   in.  However, the effectiveness of the protocols led to their early
   adoption in production environments, to the point that, to some
   extent, the current world's economy depends on them.

   While many textbooks and articles have created the myth that the
   Internet protocols were designed for warfare environments, the top
   level goal for the DARPA Internet Program was the sharing of large
   service machines on the ARPANET [Clark, 1988].  As a result, many
   protocol specifications focus only on the operational aspects of the
   protocols they specify, and overlook their security implications.

   While the Internet technology evolved since it early inception, the
   Internet's building blocks are basically the same core protocols
   adopted by the ARPANET more than two decades ago.  During the last
   twenty years, many vulnerabilities have been identified in the TCP/IP
   stacks of a number of systems.  Some of them were based on flaws in
   some protocol implementations, affecting only a reduced number of
   systems, while others were based in flaws in the protocols
   themselves, affecting virtually every existing implementation
   [Bellovin, 1989].  Even in the last couple of years, researchers were
   still working on security problems in the core protocols [NISCC,
   2004] [NISCC, 2005].

   The discovery of vulnerabilities in the TCP/IP protocol suite usually
   led to reports being published by a number of CSIRTs (Computer
   Security Incident Response Teams) and vendors, which helped to raise
   awareness about the threats and the best mitigations known at the
   time the reports were published.  Unfortunately, this also led to the
   documentation of the discovered protocol vulnerabilities being spread
   among a large number of documents, which are sometimes difficult to
   identify.

   For some reason, much of the effort of the security community on the
   Internet protocols did not result in official documents (RFCs) being
   issued by the IETF (Internet Engineering Task Force).  This basically
   led to a situation in which "known" security problems have not always
   been addressed by all vendors.  In addition, in many cases vendors
   have implemented quick "fixes" to the identified vulnerabilities
   without a careful analysis of their effectiveness and their impact on
   interoperability [Silbersack, 2005].

   Producing a secure TCP/IP implementation nowadays is a very difficult



Gont                    Expires February 20, 2010               [Page 5]


Internet-Draft           TCP Security Assessment             August 2009


   task, in part because of the lack of a single document that serves as
   a security roadmap for the protocols.  Implementers are faced with
   the hard task of identifying relevant documentation and
   differentiating between that which provides correct advice, and that
   which provides misleading advice based on inaccurate or wrong
   assumptions.

   This document is the result of a security assessment of the IETF
   specifications of the Transmission Control Protocol (TCP), from a
   security point of view.  Possible threats are identified and, where
   possible, countermeasures are proposed.  Additionally, many
   implementation flaws that have led to security vulnerabilities have
   been referenced in the hope that future implementations will not
   incur the same problems.

   This document is heavily based on the "Security Assessment of the
   Transmission Control Protocol (TCP)" released by the UK Centre for
   the Protection of National Infrastructure (CPNI), available at: http:
   //www.cpni.gov.uk/Products/technicalnotes/
   Feb-09-security-assessment-TCP.aspx .

1.2.  Scope of this document

   While there are a number of protocols that may affect the way TCP
   operates, this document focuses only on the specifications of the
   Transmission Control Protocol (TCP) itself.

   The following IETF RFCs were selected for assessment as part of this
   work:

   o  RFC 793, "Transmission Control Protocol.  DARPA Internet Program.
      Protocol Specification" (91 pages)

   o  RFC 1122, "Requirements for Internet Hosts -- Communication
      Layers" (116 pages)

   o  RFC 1191, "Path MTU Discovery" (19 pages)

   o  RFC 1323, "TCP Extensions for High Performance" (37 pages)

   o  RFC 1948, "Defending Against Sequence Number Attacks" (6 pages)

   o  RFC 1981, "Path MTU Discovery for IP version 6" (15 pages)

   o  RFC 2018, "TCP Selective Acknowledgment Options" (12 pages)

   o  RFC 2385, "Protection of BGP Sessions via the TCP MD5 Signature
      Option" (6 pages)



Gont                    Expires February 20, 2010               [Page 6]


Internet-Draft           TCP Security Assessment             August 2009


   o  RFC 2581, "TCP Congestion Control" (14 pages)

   o  RFC 2675, "IPv6 Jumbograms" (9 pages)

   o  RFC 2883, "An Extension to the Selective Acknowledgement (SACK)
      Option for TCP" (17 pages)

   o  RFC 2884, "Performance Evaluation of Explicit Congestion
      Notification (ECN) in IP Networks" (18 pages)

   o  RFC 2988, "Computing TCP's Retransmission Timer" (8 pages)

   o  RFC 3168, "The Addition of Explicit Congestion Notification (ECN)
      to IP" (63 pages)

   o  RFC 3465, "TCP Congestion Control with Appropriate Byte Counting
      (ABC)" (10 pages)

   o  RFC 3517, "A Conservative Selective Acknowledgment (SACK)-based
      Loss Recovery Algorithm for TCP" (13 pages)

   o  RFC 3540, "Robust Explicit Congestion Notification (ECN) Signaling
      with Nonces" (13 pages)

   o  RFC 3782, "The NewReno Modification to TCP's Fast Recovery
      Algorithm" (19 pages)

1.3.  Organization of this document

   This document is basically organized in two parts.  The first part
   contains a discussion of each of the TCP header fields, identifies
   their security implications, and discusses the possible
   countermeasures.  The second part contains an analysis of the
   security implications of the mechanisms and policies implemented by
   TCP, and of a number of implementation strategies in use by a number
   of popular TCP implementations.


2.  The Transmission Control Protocol

   The Transmission Control Protocol (TCP) is a connection-oriented
   transport protocol that provides a reliable byte-stream data transfer
   service.

   Very few assumptions are made about the reliability of underlying
   data transfer services below the TCP layer.  Basically, TCP assumes
   it can obtain a simple, potentially unreliable datagram service from
   the lower level protocols.  Figure 1 illustrates where TCP fits in



Gont                    Expires February 20, 2010               [Page 7]


Internet-Draft           TCP Security Assessment             August 2009


   the DARPA reference model.

                             +---------------+
                             |  Application  |
                             +---------------+
                             |      TCP      |
                             +---------------+
                             |      IP       |
                             +---------------+
                             |    Network    |
                             +---------------+

                Figure 1: TCP in the DARPA reference model

   TCP provides facilities in the following areas:

   o  Basic Data Transfer

   o  Reliability

   o  Flow Control

   o  Multiplexing

   o  Connections

   o  Precedence and Security

   o  Congestion Control

   The core TCP specification, RFC 793 [Postel, 1981c], dates back to
   1981 and standardizes the basic mechanisms and policies of TCP.  RFC
   1122 [Braden, 1989] provides clarifications and errata for the
   original specification.  RFC 2581 [Allman et al, 1999] specifies TCP
   congestion control and avoidance mechanisms, not present in the
   original specification.  Other documents specify extensions and
   improvements for TCP.

   The large amount of documents that specify extensions, improvements,
   or modifications to existing TCP mechanisms has led the IETF to
   publish a roadmap for TCP, RFC 4614 [Duke et al, 2006], that
   clarifies the relevance of each of those documents.


3.  TCP header fields

   RFC 793 [Postel, 1981c] defines the syntax of a TCP segment, along
   with the semantics of each of the header fields.  Figure 2



Gont                    Expires February 20, 2010               [Page 8]


Internet-Draft           TCP Security Assessment             August 2009


   illustrates the syntax of a TCP segment.

        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |          Source Port          |       Destination Port        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                        Sequence Number                        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                    Acknowledgment Number                      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |  Data |       |C|E|U|A|P|R|S|F|                               |
       | Offset|Resrved|W|C|R|C|S|S|Y|I|            Window             |
       |       |       |R|E|G|K|H|T|N|N|                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |           Checksum            |         Urgent Pointer        |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                    Options                    |    Padding    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                             data                              |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


   Note that one tick mark represents one bit position

           Figure 2: Transmission Control Protocol header format

   The minimum TCP header size is 20 bytes, and corresponds to a TCP
   segment with no options and no data.  However, a TCP module might be
   handed an (illegitimate) "TCP segment" of less than 20 bytes.
   Therefore, before doing any processing of the TCP header fields, the
   following check should be performed by TCP on the segments handed by
   the internet layer:

   Segment.Size >= 20

   If a segment does not pass this check, it should be dropped.

   The following subsections contain further sanity checks that should
   be performed on TCP segments.

3.1.  Source Port

   This field contains a 16-bit number that identifies the TCP end-point
   that originated this TCP segment.  Being a 16-bit field, it can
   contain any value in the range 0-65535.

   The Internet Assigned Numbers Authority (IANA) has traditionally



Gont                    Expires February 20, 2010               [Page 9]


Internet-Draft           TCP Security Assessment             August 2009


   reserved the following use of the 16-bit port range of TCP [IANA,
   2008]:

   o  The Well Known Ports, 0 through 1023

   o  The Registered Ports, 1024 through 49151

   o  The Dynamic and/or Private Ports, 49152 through 65535

   The range of assigned ports managed by the IANA is 0-1023, with the
   remainder being registered by IANA but not assigned [IANA, 2008].  It
   is also worth noting that, while some systems restrict use of the
   port numbers in the range 0-1024 to privileged users, no trust should
   be granted based on the port numbers used for a TCP connection.

   Servers usually bind specific ports on which specific services are
   usually provided, while clients usually make use of the so-called
   "ephemeral ports" for the source port of their outgoing connections
   with the only requirement that the resulting four-tuple must be
   unique (not currently in use by any other transport protocol
   instance).

   While the only requirement for a selected ephemeral port is that the
   resulting four-tuple (connection-id) is unique, in practice it may be
   necessary to not allow the allocation of port numbers that are in use
   by a TCP that is in the LISTEN or CLOSED states for use as ephemeral
   ports, as this might allow an attacker to "steal" incoming
   connections from a local server application.  Section 10.2 of this
   document provides a detailed discussion of this issue.

   It should also be noted that some clients, such as DNS resolvers, are
   known to use port numbers from the "Well Known Ports" range.
   Therefore, middle-boxes such as packet filters should not assume that
   clients use port number from only the Dynamic or Registered port
   ranges.

   While port 0 is a legitimate port number, it has a special meaning in
   the UNIX Sockets API.  For example, when a TCP port number of 0 is
   passed as an argument to the bind() function, rather than binding
   port 0, an ephemeral port is selected for the corresponding TCP end-
   point.  As a result, the TCP port number 0 is never actually used in
   TCP segments.

   Different implementations have been found to respond differently to
   TCP segments that have a port number of 0 as the Source Port and/or
   the Destination Port.  As a result, TCP segments with a port number
   of 0 are usually employed for remote OS detection via TCP/IP stack
   fingerprinting [Jones, 2003].



Gont                    Expires February 20, 2010              [Page 10]


Internet-Draft           TCP Security Assessment             August 2009


   Since in practice TCP port 0 is not used by any legitimate
   application and is only used for fingerprinting purposes, a number of
   host implementations already reject TCP segments that use 0 as the
   Source Port and/or the Destination Port.  Also, a number firewalls
   filter (by default) any TCP segments that contain a port number of
   zero for the Source Port and/or the Destination Port.

   We therefore recommend that TCP implementations respond to incoming
   TCP segments that have a Source Port of 0 with an RST (provided these
   incoming segments do not have the RST bit set).

   Responding with an RST segment to incoming segments that have the RST
   bit would open the door to RST-war attacks.

   As discussed in Section 3.2, we also recommend TCP implementations to
   respond with an RST to incoming packets that have a Destination Port
   of 0 (provided these incoming segments do not have the RST bit set).

3.1.1.  Problems that may arise as a result of collisions of connection-
        id's

   A number of implementations will not allow the creation of a new
   connection if there exists a previous incarnation of the same
   connection in any state other than the fictional state CLOSED.  This
   can be problematic in scenarios in which a client establishes
   connections with a specific service at a particular server at a high
   rate: even if the connections are also closed at a high rate, one of
   the systems (the one performing the active close) will keep each of
   the closed connections in the TIME-WAIT state for 2*MSL.

   MSL (Maximum Segment Lifetime) is the maximum amount of time that a
   TCP segment can exist in an internet.  It is defined to be 2 minutes
   by RFC 793 [Postel, 1981c].

   If the connection rate is high enough, at some point all the
   ephemeral ports at the client will be in use by some connection in
   the TIME-WAIT state, thus preventing the establishment of new
   connections.  In order to overcome this problem, a number of TCP
   implementations include some heuristics to allow the creation of a
   new incarnation of a connection that is in the TIME-WAIT state.  In
   such implementations a new incarnation of a previous connection is
   allowed if:

   o  The incoming SYN segment contains a timestamp option, and the
      timestamp is greater than the last timestamp seen in the previous
      incarnation of the connection (for that direction of the data
      transfer), or,




Gont                    Expires February 20, 2010              [Page 11]


Internet-Draft           TCP Security Assessment             August 2009


   o  The incoming SYN segment does not contain a timestamp option, but
      its Initial Sequence Number (ISN) is greater than the last
      sequence number seen in the previous incarnation of the connection
      (for that direction of the data transfer)

   Unfortunately, these heuristics are optional, and thus cannot be
   relied upon.  Additionally, as indicated by [Silbersack, 2005], if
   the Timestamp or the ISN are trivially randomized, these heuristics
   might fail.

   Section 3.3.1 and Section 4.7.1 of this document recommend algorithms
   for the generation of TCP Initial Sequence Numbers and TCP
   timestamps, respectively, that provide randomization, while still
   allowing the aforementioned heuristics to work.

   Therefore, the only strategy that can be relied upon to avoid this
   interoperability problem is to minimize the rate of collisions of
   connection-id's.  A good algorithm to minimize rate of collisions of
   connection-id's would consider the time a given four-tuple {Source
   Address, Source Port, Destination Address, Destination Port} was last
   used, and would try avoid reusing it for 2*MSL.  However, an
   efficient implementation approach for this algorithm has not yet been
   devised.  A simple approach to minimize the rate collisions of
   connection-id's in most scenarios is to maximize the port reuse
   cycle, such that a port number is not reused before all the other
   port numbers in the ephemeral port range have been used for outgoing
   connections.  This is the traditional ephemeral port selection
   algorithm in 4.4BSD implementations.

   However, if a single global variable is used to keep track of the
   last ephemeral port selected, ephemeral port numbers become trivially
   predictable.

   Section 3.1.2 of this document analyzes a number of approaches for
   obfuscating the TCP ephemeral ports, such that the chances of an
   attacker of guessing the ephemeral ports used for future connections
   are reduced, while still reducing the probability of collisions of
   connection-id's.  Finally, Section 3.1.3 makes recommendations about
   the port range that should be used for the ephemeral ports.

3.1.2.  Port randomization algorithms

3.1.3.  TCP ephemeral port range

3.2.  Destination port






Gont                    Expires February 20, 2010              [Page 12]


Internet-Draft           TCP Security Assessment             August 2009


3.3.  Sequence number

3.3.1.  Generation of Initial Sequence Numbers

3.4.  Acknowledgement Number

3.5.  Data Offset

3.6.  Control bits

3.6.1.  Reserved (four bits)

3.6.2.  CWR (Congestion Window Reduced)

3.6.3.  ECE (ECN-Echo)

3.6.4.  URG

3.6.5.  ACK

3.6.6.  PSH

3.6.7.  RST

   [Ramaiah et al, 2008] suggests that implementations should rate-limit
   the challenge ACK segments sent as a result of implementation of this
   mechanism.

   Section 11.1 of this document describes TCP-based connection-reset
   attacks, along with a number of countermeasures to mitigate their
   impact.

3.6.8.  SYN

3.6.9.  FIN

3.7.  Window

3.7.1.  Security implications of the maximum TCP window size

3.7.2.  Security implications arising from closed windows

3.8.  Checksum

3.9.  Urgent pointer

3.9.1.  Security implications arising from ambiguities in the processing
        of urgent indications



Gont                    Expires February 20, 2010              [Page 13]


Internet-Draft           TCP Security Assessment             August 2009


3.9.2.  Security implications arising from the implementation of the
        urgent mechanism as "out of band" data

3.10.  Options

3.11.  Padding

3.12.  Data


4.  Common TCP Options

4.1.  End of Option List (Kind = 0)

4.2.  No Operation (Kind = 1)

4.3.  Maximum Segment Size (Kind = 2)

4.4.  Selective Acknowledgement Option

4.4.1.  SACK-permitted Option (Kind = 4)

4.4.2.  SACK Option (Kind = 5)

4.5.  MD5 Option (Kind=19)

4.6.  Window scale option (Kind = 3)

4.7.  Timestamps option (Kind = 8)

4.7.1.  Generation of timestamps

4.7.2.  Vulnerabilities


5.  Connection-establishment mechanism

5.1.  SYN flood

5.2.  Connection forgery

5.3.  Connection-flooding attack

5.3.1.  Vulnerability

5.3.2.  Countermeasures





Gont                    Expires February 20, 2010              [Page 14]


Internet-Draft           TCP Security Assessment             August 2009


5.4.  Firewall-bypassing techniques


6.  Connection-termination mechanism

6.1.  FIN-WAIT-2 flooding attack

6.1.1.  Vulnerability

6.1.2.  Countermeasures


7.  Buffer management

7.1.  TCP retransmission buffer

7.1.1.  Vulnerability

7.1.2.  Countermeasures

7.2.  TCP segment reassembly buffer

7.3.  Automatic buffer tuning mechanisms

7.3.1.  Automatic send-buffer tuning mechanisms

7.3.2.  Automatic receive-buffer tuning mechanism


8.  TCP segment reassembly algorithm

8.1.  Problems that arise from ambiguity in the reassembly process


9.  TCP Congestion Control

9.1.  Congestion control with misbehaving receivers

9.1.1.  ACK division

9.1.2.  DupACK forgery

9.1.3.  Optimistic ACKing

9.2.  Blind DupACK triggering attacks against TCP

9.2.1.  Blind throughput-reduction attack




Gont                    Expires February 20, 2010              [Page 15]


Internet-Draft           TCP Security Assessment             August 2009


9.2.2.  Blind flooding attack

9.2.3.  Difficulty in performing the attacks

9.2.4.  Modifications to TCP's loss recovery algorithms

9.2.5.  Countermeasures

9.3.  TCP Explicit Congestion Notification (ECN)

9.3.1.  Possible attacks by a compromised router

9.3.2.  Possible attacks by a malicious TCP endpoint


10.  TCP API

10.1.  Passive opens and binding sockets

10.2.  Active opens and binding sockets


11.  Blind in-window attacks

11.1.  Blind TCP-based connection-reset attacks

11.1.1.  RST flag

11.1.2.  SYN flag

11.1.3.  Security/Compartment

11.1.4.  Precedence

11.1.5.  Illegal options

11.2.  Blind data-injection attacks


12.  Information leaking

12.1.  Remote Operating System detection via TCP/IP stack fingerprinting

12.1.1.  FIN probe

12.1.2.  Bogus flag test





Gont                    Expires February 20, 2010              [Page 16]


Internet-Draft           TCP Security Assessment             August 2009


12.1.3.  TCP ISN sampling

12.1.4.  TCP initial window

12.1.5.  RST sampling

12.1.6.  TCP options

12.1.7.  Retransmission Timeout (RTO) sampling

12.2.  System uptime detection


13.  Covert channels


14.  TCP Port scanning

14.1.  Traditional connect() scan

14.2.  SYN scan

14.3.  FIN, NULL, and XMAS scans

14.4.  Maimon scan

14.5.  Window scan

14.6.  ACK scan


15.  Processing of ICMP error messages by TCP


16.  TCP interaction with the Internet Protocol (IP)

16.1.  TCP-based traceroute

16.2.  Blind TCP data injection through fragmented IP traffic

16.3.  Broadcast and multicast IP addresses


17.  Security Considerations







Gont                    Expires February 20, 2010              [Page 17]


Internet-Draft           TCP Security Assessment             August 2009


18.  Acknowledgements

   This document is based on the document "Security Assessment of the
   Transmission Control Protocol (TCP)" [CPNI, 2009] written by Fernando
   Gont on behalf of CPNI (Centre for the Protection of National
   Infrastructure).

   The author would like to thank (in alphabetical order) Randall
   Atkinson, Guillermo Gont, Alfred Hoenes, Jamshid Mahdavi, Stanislav
   Shalunov, Michael Welzl, Dan Wing, Andrew Yourtchenko, Michael
   Zalewski, and Christos Zoulas, for providing valuable feedback on
   earlier versions of the UK CPNI document.

   Additionally, the author would like to thank (in alphabetical order)
   Mark Allman, David Black, Ethan Blanton, David Borman, James Chacon,
   John Heffner, Jerrold Leichter, Jamshid Mahdavi, Keith Scott, Bill
   Squier, and David White, who generously answered a number of
   questions that araised while the aforementioned document was being
   written.

   Finally, the author would like to thank CPNI (formely NISCC) for
   their continued support.


19.  References

   Abley, J., Savola, P., Neville-Neil, G. 2007.  Deprecation of Type 0
   Routing Headers in IPv6.  RFC 5095.

   Allman, M. 2003.  TCP Congestion Control with Appropriate Byte
   Counting (ABC).  RFC 3465.

   Allman, M. 2008.  Comments On Selecting Ephemeral Ports.  Available
   at: http://www.icir.org/mallman/share/ports-dec08.pdf

   Allman, M., Paxson, V., Stevens, W. 1999.  TCP Congestion Control.
   RFC 2581.

   Allman, M., Balakrishnan, H., Floyd, S. 2001.  Enhancing TCP's Loss
   Recovery Using Limited Transmit.  RFC 3042.

   Allman, M., Floyd, S., and C. Partridge. 2002.  Increasing TCP's
   Initial Window.  RFC 3390.

   Baker, F. 1995.  Requirements for IP Version 4 Routers.  RFC 1812.

   Baker, F., Savola, P. 2004.  Ingress Filtering for Multihomed
   Networks.  RFC 3704.



Gont                    Expires February 20, 2010              [Page 18]


Internet-Draft           TCP Security Assessment             August 2009


   Barisani, A. 2006.  FTester - Firewall and IDS testing tool.
   Available at: http://dev.inversepath.com/trac/ftester

   Beck, R. 2001.  Passive-Aggressive Resistance: OS Fingerprint
   Evasion.  Linux Journal.

   Bellovin, S. M. 1989.  Security Problems in the TCP/IP Protocol
   Suite.  Computer Communication Review, Vol. 19, No. 2, pp. 32-48.

   Bellovin, S. M. 1996.  Defending Against Sequence Number Attacks.
   RFC 1948.

   Bellovin, S. M. 2006.  Towards a TCP Security Option.  IETF Internet-
   Draft (draft-bellovin-tcpsec-00.txt), work in progress.

   Bernstein, D. J. 1996.  SYN cookies.  Available at:
   http://cr.yp.to/syncookies.html

   Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., and Weiss,
   W., 1998.  An Architecture for Differentiated Services.  RFC 2475.

   Blanton, E., Allman, M., Fall, K., Wang, L. 2003.  A Conservative
   Selective Acknowledgment (SACK)-based Loss Recovery Algorithm for
   TCP.  RFC 3517.

   Borman, D. 1997.  Post to the tcp-impl mailing-list.  Message-Id:
   <199706061526.KAA01535@frantic.BSDI.COM>.  Available at:
   http://www.kohala.com/start/borman.97jun06.txt

   Borman, D., Deering, S., Hinden, R. 1999.  IPv6 Jumbograms.  RFC
   2675.

   Braden, R. 1989.  Requirements for Internet Hosts -- Communication
   Layers.  RFC 1122.

   Braden, R. 1992.  Extending TCP for Transactions -- Concepts.  RFC
   1379.

   Braden, R. 1994.  T/TCP -- TCP Extensions for Transactions Functional
   Specification.  RFC 1644.

   CCSDS. 2006.  Consultative Committee for Space Data Systems (CCSDS)
   Recommendation Communications Protocol Specification (SCPS) --
   Transport Protocol (SCPS-TP).  Blue Book.  Issue 2.  Available at:
   http://public.ccsds.org/publications/archive/714x0b2.pdf

   CERT. 1996.  CERT Advisory CA-1996-21: TCP SYN Flooding and IP
   Spoofing Attacks.  Available at:



Gont                    Expires February 20, 2010              [Page 19]


Internet-Draft           TCP Security Assessment             August 2009


   http://www.cert.org/advisories/CA-1996-21.html

   CERT. 1997.  CERT Advisory CA-1997-28 IP Denial-of-Service Attacks.
   Available at: http://www.cert.org/advisories/CA-1997-28.html

   CERT. 2000.  CERT Advisory CA-2000-21: Denial-of-Service
   Vulnerabilities in TCP/IP Stacks.  Available at:
   http://www.cert.org/advisories/CA-2000-21.html

   CERT. 2001.  CERT Advisory CA-2001-09: Statistical Weaknesses in
   TCP/IP Initial Sequence Numbers.  Available at:
   http://www.cert.org/advisories/CA-2001-09.html

   CERT. 2003.  CERT Advisory CA-2003-13 Multiple Vulnerabilities in
   Snort Preprocessors.  Available at:
   http://www.cert.org/advisories/CA-2003-13.html

   Cisco. 2008a.  Cisco Security Appliance Command Reference, Version
   7.0.  Available at: http://www.cisco.com/en/US/docs/security/asa/
   asa70/command/reference/tz.html#wp1288756

   Cisco. 2008b.  Cisco Security Appliance System Log Messages, Version
   8.0.  Available at: http://www.cisco.com/en/US/docs/security/asa/
   asa80/system/message/logmsgs.html#wp4773952

   Clark, D.D. 1982.  Fault isolation and recovery.  RFC 816.

   Clark, D.D. 1988.  The Design Philosophy of the DARPA Internet
   Protocols, Computer Communication Review, Vol. 18, No.4, pp. 106-114.

   Connolly, T., Amer, P., Conrad, P. 1994.  An Extension to TCP :
   Partial Order Service.  RFC 1693.

   Conta, A., Deering, S., Gupta, M. 2006.  Internet Control Message
   Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6)
   Specification.  RFC 4443.

   CORE. 2003.  Core Secure Technologies Advisory CORE-2003-0307: Snort
   TCP Stream Reassembly Integer Overflow Vulnerability.  Available at:
   http://www.coresecurity.com/common/showdoc.php?idx=313&idxseccion=10

   CPNI, 2008.  Security Assessment of the Internet Protocol.  Available
   at: http://www.cpni.gov.uk/Docs/InternetProtocol.pdf

   CPNI, 2009.  Security Assessment of the Transmission Control Protocol
   (TCP).  Available at:
   http://www.cpni.gov.uk/Docs/tn-03-09-security-assessment-TCP.pdf




Gont                    Expires February 20, 2010              [Page 20]


Internet-Draft           TCP Security Assessment             August 2009


   daemon9, route, and infinity. 1996.  IP-spoofing Demystified (Trust-
   Relationship Exploitation), Phrack Magazine, Volume Seven, Issue
   Forty-Eight, File 14 of 18.  Available at:
   http://www.phrack.org/archives/48/P48-14

   Deering, S., Hinden, R. 1998.  Internet Protocol, Version 6 (IPv6)
   Specification.  RFC 2460.

   Dharmapurikar, S., Paxson, V. 2005.  Robust TCP Stream Reassembly In
   the Presence of Adversaries.  Proceedings of the USENIX Security
   Symposium 2005.

   Duke, M., Braden, R., Eddy, W., Blanton, E. 2006.  A Roadmap for
   Transmission Control Protocol (TCP) Specification Documents.  RFC
   4614.

   Ed3f. 2002.  Firewall spotting and networks analisys with a broken
   CRC.  Phrack Magazine, Volume 0x0b, Issue 0x3c, Phile #0x0c of 0x10.
   Available at: http://www.phrack.org/phrack/60/p60-0x0c.txt

   Eddy, W. 2007.  TCP SYN Flooding Attacks and Common Mitigations.  RFC
   4987.

   Fenner, B. 2006.  Experimental Values in IPv4, IPv6, ICMPv4, ICMPv6,
   UDP, and TCP Headers.  RFC 4727.

   Ferguson, P., and Senie, D. 2000.  Network Ingress Filtering:
   Defeating Denial of Service Attacks which employ IP Source Address
   Spoofing.  RFC 2827.

   Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L.,
   Leach, P., and Berners-Lee, T. 1999.  Hypertext Transfer Protocol --
   HTTP/1.1.  RFC 2616.

   Floyd, S., Mahdavi, J., Mathis, M., Podolsky, M. 2000.  An Extension
   to the Selective Acknowledgement (SACK) Option for TCP.  RFC 2883.

   Floyd, S., Henderson, T., Gurtov, A. 2004.  The NewReno Modification
   to TCP's Fast Recovery Algorithm.  RFC 3782.

   Floyd, S., Allman, M., Jain, A., Sarolahti, P. 2007.  Quick-Start for
   TCP and IP.  RFC 4782.

   Fyodor. 1998.  Remote OS Detection via TCP/IP Stack Fingerprinting.
   Phrack Magazine, Volume 8, Issue, 54.

   Fyodor. 2006a.  Remote OS Detection via TCP/IP Fingerprinting (2nd
   Generation).  Available at: http://insecure.org/nmap/osdetect/.



Gont                    Expires February 20, 2010              [Page 21]


Internet-Draft           TCP Security Assessment             August 2009


   Fyodor. 2006b.  Nmap - Free Security Scanner For Network Exploration
   and Audit.  Available at: http://www.insecure.org/nmap.

   Fyodor. 2008.  Nmap Reference Guide: Port Scanning Techniques.
   Available at: http://nmap.org/book/man-port-scanning-techniques.html

   GIAC. 2000.  Egress Filtering v 0.2.  Available at:
   http://www.sans.org/y2k/egress.htm

   Giffin, J., Greenstadt, R., Litwack, P., Tibbetts, R. 2002.  Covert
   Messaging through TCP Timestamps.  PET2002 (Workshop on Privacy
   Enhancing Technologies), San Francisco, CA, USA, April  2002.
   Available at:
   http://web.mit.edu/greenie/Public/CovertMessaginginTCP.ps

   Gill, V., Heasley, J., Meyer, D., Savola, P, Pignataro, C. 2007.  The
   Generalized TTL Security Mechanism (GTSM).  RFC 5082.

   Gont, F. 2006.  Advanced ICMP packet filtering.  Available at:
   http://www.gont.com.ar/papers/icmp-filtering.html

   Gont, F. 2008a.  ICMP attacks against TCP.  IETF Internet-Draft
   (draft-ietf-tcpm-icmp-attacks-04.txt), work in progress.

   Gont, F.. 2008b.  TCP's Reaction to Soft Errors.  IETF Internet-Draft
   (draft-ietf-tcpm-tcp-soft-errors-09.txt), work in progress.

   Gont, F. 2009.  On the generation of TCP timestamps.  IETF Internet-
   Draft (draft-gont-tcpm-tcp-timestamps-01.txt), work in progress.

   Gont, F., Srisuresh, P. 2008.  Security Implications of Network
   Address Translators (NATs).  IETF Internet-Draft
   (draft-gont-behave-nat-security-01.txt), work in progress.

   Gont, F., Yourtchenko, A. 2009.  On the implementation of TCP urgent
   data.  IETF Internet-Draft (draft-gont-tcpm-urgent-data-01.txt), work
   in progress.

   Heffernan, A. 1998.  Protection of BGP Sessions via the TCP MD5
   Signature Option.  RFC 2385.

   Heffner, J. 2002.  High Bandwidth TCP Queuing.  Senior Thesis.

   Hoenes, A. 2007.  TCP options - tcp-parameters IANA registry.  Post
   to the tcpm wg mailing-list.  Available at:
   http://www.ietf.org/mail-archive/web/tcpm/current/msg03199.html

   IANA. 2007.  Transmission Control Protocol (TCP) Option Numbers.



Gont                    Expires February 20, 2010              [Page 22]


Internet-Draft           TCP Security Assessment             August 2009


   Avialable at: http://www.iana.org/assignments/tcp-parameters/

   IANA. 2008.  Port Numbers.  Available at:
   http://www.iana.org/assignments/port-numbers

   Jacobson, V. 1988.  Congestion Avoidance and Control.  Computer
   Communication Review, vol. 18, no. 4, pp. 314-329.  Available at:
   ftp://ftp.ee.lbl.gov/papers/congavoid.ps.Z

   Jacobson, V., Braden, R. 1988.  TCP Extensions for Long-Delay Paths.
   RFC 1072.

   Jacobson, V., Braden, R., Borman, D. 1992.  TCP Extensions for High
   Performance.  RFC 1323.

   Jones, S. 2003.  Port 0 OS Fingerprinting.  Available at:
   http://www.gont.com.ar/docs/port-0-os-fingerprinting.txt

   Kent, S. and Seo, K. 2005.  Security Architecture for the Internet
   Protocol.  RFC 4301.

   Klensin, J. 2008.  Simple Mail Transfer Protocol.  RFC 5321.

   Ko, Y., Ko, S., and Ko, M. 2001.  NIDS Evasion Method named SeolMa.
   Phrack Magazine, Volume 0x0b, Issue 0x39, phile #0x03 of 0x12.
   Available at: http://www.phrack.org/issues.html?issue=57&id=3#article

   Lahey, K. 2000.  TCP Problems with Path MTU Discovery.  RFC 2923.

   Larsen, M., Gont, F. 2008.  Port Randomization.  IETF Internet-Draft
   (draft-ietf-tsvwg-port-randomization-02), work in progress.

   Lemon, 2002.  Resisting SYN flood DoS attacks with a SYN cache.
   Proceedings of the BSDCon 2002 Conference, pp 89-98.

   Maimon, U. 1996.  Port Scanning without the SYN flag.  Phrack
   Magazine, Volume Seven, Issue Fourty-Nine, phile #0x0f of 0x10.
   Available at:
   http://www.phrack.org/issues.html?issue=49&id=15#article

   Mathis, M., Mahdavi, J., Floyd, S. Romanow, A. 1996.  TCP Selective
   Acknowledgment Options.  RFC 2018.

   Mathis, M., and Heffner, J. 2007.  Packetization Layer Path MTU
   Discovery.  RFC 4821.

   McCann, J., Deering, S., Mogul, J. 1996.  Path MTU Discovery for IP
   version 6.  RFC 1981.



Gont                    Expires February 20, 2010              [Page 23]


Internet-Draft           TCP Security Assessment             August 2009


   McKusick, M., Bostic, K., Karels, M., and J. Quarterman. 1996.  The
   Design and Implementation of the 4.4BSD Operating System.  Addison-
   Wesley.

   Meltman. 1997. new TCP/IP bug in win95.  Post to the bugtraq mailing-
   list.  Available at: http://insecure.org/sploits/land.ip.DOS.html

   Miller, T. 2006.  Passive OS Fingerprinting: Details and Techniques.
   Available at: http://www.ouah.org/incosfingerp.htm .

   Mogul, J., and Deering, S. 1990.  Path MTU Discovery.  RFC 1191.

   Morris, R. 1985.  A Weakness in the 4.2BSD Unix TCP/IP Software.
   Technical Report CSTR-117, AT&T Bell Laboratories.  Available at:
   http://pdos.csail.mit.edu/~rtm/papers/117.pdf .

   Myst. 1997.  Windows 95/NT DoS.  Post to the bugtraq mailing-list.
   Available at: http://seclists.org/bugtraq/1997/May/0039.html

   Nichols, K., Blake, S., Baker, F., and Black, D. 1998.  Definition of
   the Differentiated Services Field (DS Field) in the IPv4 and IPv6
   Headers.  RFC 2474.

   NISCC. 2004.  NISCC Vulnerability Advisory 236929: Vulnerability
   Issues in TCP.  Available at:
   http://www.uniras.gov.uk/niscc/docs/re-20040420-00391.pdf

   NISCC. 2005.  NISCC Vulnerability Advisory 532967/NISCC/ICMP:
   Vulnerability Issues in ICMP packets with TCP payloads.  Available
   at: http://www.niscc.gov.uk/niscc/docs/re-20050412-00303.pdf

   NISCC. 2006.  NISCC Technical Note 01/2006: Egress and Ingress
   Filtering.  Available at:
   http://www.niscc.gov.uk/niscc/docs/re-20060420-00294.pdf?lang=en

   Ostermann, S. 2008. tcptrace tool.  Tool and documentation available
   at: http://www.tcptrace.org.

   Paxson, V., Allman, M. 2000.  Computing TCP's Retransmission Timer.
   RFC 2988.

   PCNWG. 2009.  Congestion and Pre-Congestion Notification (pcn)
   charter.  Available at:
   http://www.ietf.org/html.charters/pcn-charter.html

   PMTUDWG. 2007.  Path MTU Discovery (pmtud) charter.  Available at:
   http://www.ietf.org/html.charters/OLD/pmtud-charter.html




Gont                    Expires February 20, 2010              [Page 24]


Internet-Draft           TCP Security Assessment             August 2009


   Postel, J. 1981a.  Internet Protocol.  DARPA Internet Program.
   Protocol Specification.  RFC 791.

   Postel, J. 1981b.  Internet Control Message Protocol.  RFC 792.

   Postel, J. 1981c.  Transmission Control Protocol.  DARPA Internet
   Program.  Protocol Specification.  RFC 793.

   Postel, J. 1987.  TCP AND IP BAKE OFF.  RFC 1025.

   Ptacek, T. H., and Newsham, T. N. 1998.  Insertion, Evasion and
   Denial of Service: Eluding Network Intrusion Detection.  Secure
   Networks, Inc. Available at:
   http://www.aciri.org/vern/Ptacek-Newsham-Evasion-98.ps

   Ramaiah, A., Stewart, R., and Dalal, M. 2008.  Improving TCP's
   Robustness to Blind In-Window Attacks.  IETF Internet-Draft
   (draft-ietf-tcpm-tcpsecure-10.txt), work in progress.

   Ramakrishnan, K., Floyd, S., and Black, D. 2001.  The Addition of
   Explicit Congestion Notification (ECN) to IP.  RFC 3168.

   Rekhter, Y., Li, T., Hares, S. 2006.  A Border Gateway Protocol 4
   (BGP-4).  RFC 4271.

   Rivest, R. 1992.  The MD5 Message-Digest Algorithm.  RFC 1321.

   Rowland, C. 1997.  Covert Channels in the TCP/IP Protocol Suite.
   First Monday Journal, Volume 2, Number 5.  Available at:
   http://www.firstmonday.org/issues/issue2_5/rowland/

   Savage, S., Cardwell, N., Wetherall, D., Anderson, T. 1999.  TCP
   Congestion Control with a Misbehaving Receiver.  ACM Computer
   Communication Review, 29(5), October 1999.

   Semke, J., Mahdavi, J., Mathis, M. 1998.  Automatic TCP Buffer
   Tuning.  ACM Computer Communication Review, Vol. 28, No. 4.

   Shalunov, S. 2000.  Netkill.  Available at:
   http://www.internet2.edu/~shalunov/netkill/netkill.html

   Shimomura, T. 1995.  Technical details of the attack described by
   Markoff in NYT.  Message posted in USENET's comp.security.misc
   newsgroup, Message-ID: <3g5gkl$5j1@ariel.sdsc.edu>.  Available at:
   http://www.gont.com.ar/docs/post-shimomura-usenet.txt.

   Silbersack, M. 2005.  Improving TCP/IP security through randomization
   without sacrificing interoperability.  EuroBSDCon 2005 Conference.



Gont                    Expires February 20, 2010              [Page 25]


Internet-Draft           TCP Security Assessment             August 2009


   SinFP. 2006.  Net::SinFP - a Perl module to do OS fingerprinting.
   Available at:
   http://www.gomor.org/cgi-bin/index.pl?mode=view;page=sinfp

   Smart, M., Malan, G., Jahanian, F. 2000.  Defeating TCP/IP Stack
   Fingerprinting.  Proceedings of the 9th USENIX Security Symposium,
   pp. 229-240.  Available at: http://www.usenix.org/publications/
   library/proceedings/sec2000/full_papers/smart/smart_html/index.html

   Smith, C., Grundl, P. 2002.  Know Your Enemy: Passive Fingerprinting.
   The Honeynet Project.

   Spring, N., Wetherall, D., Ely, D. 2003.  Robust Explicit Congestion
   Notification (ECN) Signaling with Nonces.  RFC 3540.

   Srisuresh, P., Egevang, K. 2001.  Traditional IP Network Address
   Translator (Traditional NAT).  RFC 3022.

   Stevens, W. R. 1994.  TCP/IP Illustrated, Volume 1: The Protocols.
   Addison-Wesley Professional Computing Series.

   TBIT. 2001.  TBIT, the TCP Behavior Inference Tool.  Available at:
   http://www.icir.org/tbit/

   Touch, J. 2007.  Defending TCP Against Spoofing Attacks.  RFC 4953.

   US-CERT. 2001.  US-CERT Vulnerability Note VU#498440: Multiple TCP/IP
   implementations may use statistically predictable initial sequence
   numbers.  Available at: http://www.kb.cert.org/vuls/id/498440

   US-CERT. 2003a.  US-CERT Vulnerability Note VU#26825: Cisco Secure
   PIX Firewall TCP Reset Vulnerability.  Available at:
   http://www.kb.cert.org/vuls/id/26825

   US-CERT. 2003b.  US-CERT Vulnerability Note VU#464113: TCP/IP
   implementations handle unusual flag combinations inconsistently.
   Available at: http://www.kb.cert.org/vuls/id/464113

   US-CERT. 2004a.  US-CERT Vulnerability Note VU#395670: FreeBSD fails
   to limit number of TCP segments held in reassembly queue.  Available
   at: http://www.kb.cert.org/vuls/id/395670

   US-CERT. 2005a.  US-CERT Vulnerability Note VU#102014: Optimistic TCP
   acknowledgements can cause denial of service.  Available at:
   http://www.kb.cert.org/vuls/id/102014

   US-CERT. 2005b.  US-CERT Vulnerability Note VU#396645: Microsoft
   Windows vulnerable to DoS via LAND attack.  Available at:



Gont                    Expires February 20, 2010              [Page 26]


Internet-Draft           TCP Security Assessment             August 2009


   http://www.kb.cert.org/vuls/id/396645

   US-CERT. 2005c.  US-CERT Vulnerability Note VU#637934: TCP does not
   adequately validate segments before updating timestamp value.
   Available at: http://www.kb.cert.org/vuls/id/637934

   US-CERT. 2005d.  US-CERT Vulnerability Note VU#853540: Cisco PIX
   fails to verify TCP checksum.  Available at:
   http://www.kb.cert.org/vuls/id/853540.

   Veysset, F., Courtay, O., Heen, O. 2002.  New Tool And Technique For
   Remote Operating System Fingerprinting.  Intranode Research Team.

   Watson, P. 2004.  Slipping in the Window: TCP Reset Attacks,
   CanSecWest 2004 Conference.

   Welzl, M. 2008.  Internet congestion control: evolution and current
   open issues.  CAIA guest talk, Swinburne University, Melbourne,
   Australia.  Available at:
   http://www.welzl.at/research/publications/caia-jan08.pdf

   Wright, G. and W. Stevens. 1994.  TCP/IP Illustrated, Volume 2: The
   Implementation.  Addison-Wesley.

   Zalewski, M. 2001a.  Strange Attractors and TCP/IP Sequence Number
   Analysis.  Available at:
   http://lcamtuf.coredump.cx/oldtcp/tcpseq.html

   Zalewski, M. 2001b.  Delivering Signals for Fun and Profit.
   Available at: http://lcamtuf.coredump.cx/signals.txt

   Zalewski, M. 2002.  Strange Attractors and TCP/IP Sequence Number
   Analysis - One Year Later.  Available at:
   http://lcamtuf.coredump.cx/newtcp/

   Zalewski, M. 2003a.  Windows URG mystery solved!  Post to the bugtraq
   mailing-list.  Available at:
   http://lcamtuf.coredump.cx/p0f-help/p0f/doc/win-memleak.txt

   Zalewski, M. 2003b.  A new TCP/IP blind data injection technique?
   Post to the bugtraq mailing-list.  Available at:
   http://lcamtuf.coredump.cx/ipfrag.txt

   Zalewski, M. 2006a. p0f passive fingerprinting tool.  Available at:
   http://lcamtuf.coredump.cx/p0f.shtml

   Zalewski, M. 2006b. p0f - RST+ signatures.  Available at:
   http://lcamtuf.coredump.cx/p0f-help/p0f/p0fr.fp



Gont                    Expires February 20, 2010              [Page 27]


Internet-Draft           TCP Security Assessment             August 2009


   Zalewski, M. 2007. 0trace - traceroute on established connections.
   Post to the bugtraq mailing-list.  Available at:
   http://seclists.org/bugtraq/2007/Jan/0176.html

   Zalewski, M. 2008.  Museum of broken packets.  Available at:
   http://lcamtuf.coredump.cx/mobp/

   Zander, S. 2008.  Covert Channels in Computer Networks.  Available
   at: http://caia.swin.edu.au/cv/szander/cc/index.html

   Zuquete, A. 2002.  Improving the functionality of SYN cookies. 6th
   IFIP Communications and Multimedia Security Conference (CMS 2002).
   Available at: http://www.ieeta.pt/~avz/pubs/CMS02.html

   Zweig, J., Partridge, C. 1990.  TCP Alternate Checksum Options.  RFC
   1146.


Appendix A.  Changes from previous versions of the draft (to be removed
             by the RFC Editor before publishing this document as an
             RFC)

A.1.  Changes from draft-gont-tcp-security-00

   o  Draft resubmitted as draft-ietf (boilerplate updated as required).


Appendix B.  Advice and guidance to vendors

   Vendors are urged to contact CSIRTUK (csirt@cpni.gsi.gov.uk) if they
   think they may be affected by the issues described in this document.
   As the lead coordination center for these issues, CPNI is well placed
   to give advice and guidance as required.

   CPNI works extensively with government departments and agencies,
   commercial organizations and the academic community to research
   vulnerabilities and potential threats to IT systems especially where
   they may have an impact on Critical National Infrastructure's (CNI).

   Other ways to contact CPNI, plus CPNI's PGP public key, are available
   at http://www.cpni.gov.uk/ .










Gont                    Expires February 20, 2010              [Page 28]


Internet-Draft           TCP Security Assessment             August 2009


Author's Address

   Fernando Gont
   UK Centre for the Protection of National Infrastructure

   Email: fernando@gont.com.ar
   URI:   http://www.cpni.gov.uk












































Gont                    Expires February 20, 2010              [Page 29]