diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc3360.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc3360.txt')
-rw-r--r-- | doc/rfc/rfc3360.txt | 1067 |
1 files changed, 1067 insertions, 0 deletions
diff --git a/doc/rfc/rfc3360.txt b/doc/rfc/rfc3360.txt new file mode 100644 index 0000000..af27470 --- /dev/null +++ b/doc/rfc/rfc3360.txt @@ -0,0 +1,1067 @@ + + + + + + +Network Working Group S. Floyd +Request for Comments: 3360 ICIR +BCP: 60 August 2002 +Category: Best Current Practice + + + Inappropriate TCP Resets Considered Harmful + +Status of this Memo + + This document specifies an Internet Best Current Practices for the + Internet Community, and requests discussion and suggestions for + improvements. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2002). All Rights Reserved. + +Abstract + + This document is being written because there are a number of + firewalls in the Internet that inappropriately reset a TCP connection + upon receiving certain TCP SYN packets, in particular, packets with + flags set in the Reserved field of the TCP header. In this document + we argue that this practice is not conformant with TCP standards, and + is an inappropriate overloading of the semantics of the TCP reset. + We also consider the longer-term consequences of this and similar + actions as obstacles to the evolution of the Internet infrastructure. + +1. Introduction + + TCP uses the RST (Reset) bit in the TCP header to reset a TCP + connection. Resets are appropriately sent in response to a + connection request to a nonexistent connection, for example. The TCP + receiver of the reset aborts the TCP connection, and notifies the + application [RFC793, RFC1122, Ste94]. + + Unfortunately, a number of firewalls and load-balancers in the + current Internet send a reset in response to a TCP SYN packet that + use flags from the Reserved field in the TCP header. Section 3 below + discusses the specific example of firewalls that send resets in + response to TCP SYN packets from ECN-capable hosts. + + This document is being written to inform administrators of web + servers and firewalls of this problem, in an effort to encourage the + deployment of bug-fixes [FIXES]. A second purpose of this document + is to consider the longer-term consequences of such middlebox + behavior on the more general evolution of protocols in the Internet. + + + +Floyd Best Current Practice [Page 1] + +RFC 3360 Inappropriate TCP Resets August 2002 + + +2. The history of TCP resets. + + This section gives a brief history of the use of the TCP reset in the + TCP standards, and argues that sending a reset in response to a SYN + packet that uses bits from the Reserved field of the TCP header is + non-compliant behavior. + + RFC 793 contained the original specification of TCP in September, + 1981 [RFC793]. This document defined the RST bit in the TCP header, + and explained that reset was devised to prevent old duplicate + connection initiations from causing confusion in TCP's three-way + handshake. The reset is also used when a host receives data for a + TCP connection that no longer exists. + + RFC 793 states the following, in Section 5: + + "As a general rule, reset (RST) must be sent whenever a segment + arrives which apparently is not intended for the current connection. + A reset must not be sent if it is not clear that this is the case." + + RFC 1122 "amends, corrects, and supplements" RFC 793. RFC 1122 says + nothing specific about sending resets, or not sending resets, in + response to flags in the TCP Reserved field. + + Thus, there is nothing in RFC 793 or RFC 1122 that suggests that it + is acceptable to send a reset simply because a SYN packet uses + Reserved flags in the TCP header, and RFC 793 explicitly forbids + sending a reset for this reason. + + RFC 793 and RFC 1122 both include Jon Postel's famous robustness + principle, also from RFC 791: "Be liberal in what you accept, and + conservative in what you send." RFC 1122 reiterates that this + robustness principle "is particularly important in the Internet + layer, where one misbehaving host can deny Internet service to many + other hosts." The discussion of the robustness principle in RFC 1122 + also states that "adaptability to change must be designed into all + levels of Internet host software". The principle "be liberal in what + you accept" doesn't carry over in a clear way (if at all) to the + world of firewalls, but the issue of "adaptability to change" is + crucial nevertheless. The challenge is to protect legitimate + security interests without completely blocking the ability of the + Internet to evolve to support new applications, protocols, and + functionality. + + + + + + + + +Floyd Best Current Practice [Page 2] + +RFC 3360 Inappropriate TCP Resets August 2002 + + +2.1. The TCP Reserved Field + + RFC 793 says that the Reserved field in the TCP header is reserved + for future use, and must be zero. A rephrasing more consistent with + the rest of the document would have been to say that the Reserved + field should be zero when sent and ignored when received, unless + specified otherwise by future standards actions. However, the + phrasing in RFC 793 does not permit sending resets in response to TCP + packets with a non-zero Reserved field, as is explained in the + section above. + +2.2. Behavior of and Requirements for Internet Firewalls + + RFC 2979 on the Behavior of and Requirements for Internet Firewalls + [RFC2979], an Informational RFC, contains the following: + + "Applications have to continue to work properly in the presence of + firewalls. This translates into the following transparency rule: The + introduction of a firewall and any associated tunneling or access + negotiation facilities MUST NOT cause unintended failures of + legitimate and standards-compliant usage that would work were the + firewall not present." + + "A necessary corollary to this requirement is that when such failures + do occur it is incumbent on the firewall and associated software to + address the problem: Changes to either implementations of existing + standard protocols or the protocols themselves MUST NOT be + necessary." + + "Note that this requirement only applies to legitimate protocol usage + and gratuitous failures -- a firewall is entitled to block any sort + of access that a site deems illegitimate, regardless of whether or + not the attempted access is standards-compliant." + + We would note that RFC 2979 is an Informational RFC. RFC 2026 on + Internet Standards Process says the following in Section 4.2.2: "An + `Informational' specification is published for the general + information of the Internet community, and does not represent an + Internet community consensus or recommendation" [RFC2026]. + +2.3. Sending Resets as a Congestion Control Mechanism + + Some firewalls and hosts send resets in response to SYN packets as a + congestion control mechanism, for example, when their listen queues + are full. These resets are sent without regard to the contents of + the TCP Reserved field. Possibly in response to the use of resets as + + + + + +Floyd Best Current Practice [Page 3] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + a congestion control mechanism, several popular TCP implementations + immediately resend a SYN packet in response to a reset, up to four + times. + + We would recommend that the TCP reset not be used as a congestion + control mechanism, because this overloads the semantics of the reset + message, and inevitably leads to more aggressive behavior from TCP + implementations in response to a reset. We would suggest that simply + dropping the SYN packet is the most effective response to congestion. + The TCP sender will retransmit the SYN packet, using the default + value for the Retransmission Timeout (RTO), backing-off the + retransmit timer after each retransmit. + +2.4. Resets in Response to Changes in the Precedence Field + + RFC 793 includes the following in Section 5: + + "If an incoming segment has a security level, or compartment, or + precedence which does not exactly match the level, and compartment, + and precedence requested for the connection, a reset is sent and + connection goes to the CLOSED state." + + The "precedence" refers to the (old) Precedence field in the (old) + ToS field in the IP header. The "security" and "compartment" refer + to the obsolete IP Security option. When it was written, this was + consistent with the guideline elsewhere in RFC 793 that resets should + only be sent when a segment arrives which apparently is not intended + for the current connection. + + RFC 2873 on "TCP Processing of the IPv4 Precedence Field" discusses + specific problems raised by the sending of resets when the precedence + field has changed [RFC2873]. RFC 2873, currently a Proposed + Standard, specifies that TCP must ignore the precedence of all + received segments, and must not send a reset in response to changes + in the precedence field. We discuss this here to clarify that this + issue never permitted the sending of a reset in response to a segment + with a non-zero TCP Reserved field. + +2.5. Resets in Response to Illegal Option Lengths + + RFC 1122 says the following in Section 4.2.2.5 about TCP options + [RFC1122]: + + "A TCP MUST be able to receive a TCP option in any segment. A TCP + MUST ignore without error any TCP option it does not implement, + assuming that the option has a length field (all TCP options defined + + + + + +Floyd Best Current Practice [Page 4] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + in the future will have length fields). TCP MUST be prepared to + handle an illegal option length (e.g., zero) without crashing; a + suggested procedure is to reset the connection and log the reason." + + This makes sense, as a TCP receiver is unable to interpret the rest + of the data on a segment that has a TCP option with an illegal option + length. Again, we discuss this here to clarify that this issue never + permitted the sending of a reset in response to a segment with a + non-zero TCP Reserved field. + +3. The Specific Example of ECN + + This section has a brief explanation of ECN (Explicit Congestion + Notification) in general, and the ECN-setup SYN packet in particular. + + The Internet is based on end-to-end congestion control, and + historically the Internet has used packet drops as the only method + for routers to indicate congestion to the end nodes. ECN is a recent + addition to the IP architecture to allow routers to set a bit in the + IP packet header to inform end-nodes of congestion, instead of + dropping the packet. ECN requires the cooperation of the transport + end-nodes. + + The ECN specification, RFC 2481, was an Experimental RFC from January + 1999 until June 2001, when a revised document [RFC3168] was approved + as Proposed Standard. More information about ECN is available from + the ECN Web Page [ECN]. + + The use of ECN with TCP requires that both TCP end-nodes have been + upgraded to support the use of ECN, and that both end-nodes agree to + use ECN with this particular TCP connection. This negotiation of ECN + support between the two TCP end-nodes uses two flags that have been + allocated from the Reserved field in the TCP header [RFC2481]. + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | U | A | P | R | S | F | + | Header Length | Reserved | R | C | S | S | Y | I | + | | | G | K | H | T | N | N | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + + Figure 1: The previous definition of bytes 13 and 14 of the TCP + header. + + + + + + + + +Floyd Best Current Practice [Page 5] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + | | | C | E | U | A | P | R | S | F | + | Header Length | Reserved | W | C | R | C | S | S | Y | I | + | | | R | E | G | K | H | T | N | N | + +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + + Figure 2: The current definition of bytes 13 and 14 of the TCP + Header, from RFC 3168. + + The two ECN flags in the TCP header are defined from the last two + bits in the Reserved field of the TCP header. Bit 9 in the Reserved + field of the TCP header is designated as the ECN-Echo flag (ECE), and + Bit 8 is designated as the Congestion Window Reduced (CWR) flag. To + negotiate ECN usage, the TCP sender sends an "ECN-setup SYN packet", + a TCP SYN packet with the ECE and CWR flags set. If the TCP host at + the other end wishes to use ECN for this connection, then it sends an + "ECN-setup SYN-ACK packet", a TCP SYN packet with the ECE flag set + and the CWR flag not set. Otherwise, the TCP host at the other end + returns a SYN-ACK packet with neither the ECE nor the CWR flag set. + + So now back to TCP resets. When a TCP host negotiating ECN sends an + ECN-setup SYN packet, an old TCP implementation is expected to ignore + those flags in the Reserved field, and to send a plain SYN-ACK packet + in response. However, there are some broken firewalls and load- + balancers in the Internet that instead respond to an ECN-setup SYN + packet with a reset. Following the deployment of ECN-enabled end + nodes, there were widespread complaints that ECN-capable hosts could + not access a number of websites [Kelson00]. This has been + investigated by the Linux community, and by the TBIT project [TBIT] + in data taken from September, 2000, up to March, 2002, and has been + discussed in an article in Enterprise Linux Today [Cou01]. Some of + the offending equipment has been identified, and a web page [FIXES] + contains a list of non-compliant products and the fixes posted by the + vendors. In March 2002, six months after ECN was approved as + Proposed Standard, ECN-setup SYN packets were answered by a reset + from 203 of the 12,364 web sites tested, and ECN-setup SYN packets + were dropped for 420 of the web sites. Installing software that + blocks packets using flags in TCP's Reserved field is considerably + easier than uninstalling that software later on. + +3.1. ECN: The Work-Around. + + A work-around for maintaining connectivity in the face of the broken + equipment was described in [Floyd00], and has been specified in RFC + 3168 as a procedure that may be included in TCP implementations. We + describe this work-around briefly below. + + + + +Floyd Best Current Practice [Page 6] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + To provide robust connectivity even in the presence of faulty + equipment, a TCP host that receives a reset in response to the + transmission of an ECN-setup SYN packet may resend the SYN with CWR + and ECE cleared. This would result in a TCP connection being + established without using ECN. This also has the unfortunate result + of the ECN-capable TCP host not responding properly to the first + valid reset. If a second reset is sent in response to the second + SYN, which had CWR and ECE cleared, then the TCP host should respond + properly by aborting the connection. + + Similarly, a host that receives no reply to an ECN-setup SYN within + the normal SYN retransmission timeout interval may resend the SYN and + any subsequent SYN retransmissions with CWR and ECE cleared. To + overcome normal packet loss that results in the original SYN being + lost, the originating host may retransmit one or more ECN-setup SYN + packets before giving up and retransmitting the SYN with the CWR and + ECE bits cleared. + + Some TCP implementors have so far decided not to deploy these + workarounds, for the following reasons: + + * The work-arounds would result in ECN-capable hosts not responding + properly to the first valid reset received in response to a SYN + packet. + + * The work-arounds would limit ECN functionality in environments + without broken equipment, by disabling ECN where the first SYN or + SYN-ACK packet was dropped in the network. + + * The work-arounds in many cases would involve a delay of six seconds + or more before connectivity is established with the remote server, + in the case of broken equipment that drops ECN-setup SYN packets. + By accommodating this broken equipment, the work-arounds have been + judged as implicitly accepting both this delay and the broken + equipment that would be causing this delay. + + One possibility would be for such work-arounds to be configurable by + the user. + + One unavoidable consequence of the work-around of resending a + modified SYN packet in response to a reset is to further erode the + semantics of the TCP reset. Thus, when a box sends a reset, the TCP + host receiving that reset does not know if the reset was sent simply + because of the ECN-related flags in the TCP header, or because of + some more fundamental problem. Therefore, the TCP host resends the + TCP SYN packet without the ECN-related flags in the TCP header. The + ultimate consequence of this absence of clear communications from the + middlebox to the end-nodes could be an extended spiral of + + + +Floyd Best Current Practice [Page 7] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + communications specified for transport protocols, as end nodes + attempt to sacrifice as little functionality as possible in the + process of determining which packets will and will not be forwarded + to the other end. This is discussed in more detail in Section 6.1 + below. + +4. On Combating Obstacles to the Proper Evolution of the Internet + Infrastructure + + One of the reasons that this issue of inappropriate resets is + important (to me) is that it has complicated the deployment of ECN in + the Internet (though it has fortunately not blocked the deployment + completely). It has also added an unnecessary obstacle to the future + effectiveness of ECN. + + However, a second, more general reason why this issue is important is + that the presence of equipment in the Internet that rejects valid TCP + packets limits the future evolution of TCP, completely aside from the + issue of ECN. That is, the widespread deployment of equipment that + rejects TCP packets that use Reserved flags in the TCP header could + effectively prevent the deployment of new mechanisms that use any of + these Reserved flags. It doesn't matter if these new mechanisms have + the protection of Experimental or Proposed Standard status from the + IETF, because the broken equipment in the Internet does not stop to + look up the current status of the protocols before rejecting the + packets. TCP is good, and useful, but it would be a pity for the + deployment of broken equipment in the Internet to result in the + "freezing" of TCP in its current state, without the ability to use + the Reserved flags in the future evolution of TCP. + + In the specific case of middleboxes that block TCP SYN packets + attempting to negotiate ECN, the work-around described in Section 3.1 + is sufficient to ensure that end-nodes could still establish + connectivity. However, there are likely to be additional uses of the + TCP Reserved Field standardized in the next year or two, and these + additional uses might not coexist quite as successfully with + middleboxes that send resets. Consider the difficulties that could + result if a path changes in the middle of a connection's lifetime, + and the middleboxes on the old and new paths have different policies + about exactly which flags in the TCP Reserved field they would and + would not block. + + Taking the wider view, the existence of web servers or firewalls that + send inappropriate resets is only one example of functionality in the + Internet that restricts the future evolution of the Internet. The + impact of all of these small restrictions taken together presents a + considerable obstacle to the development of the Internet + architecture. + + + +Floyd Best Current Practice [Page 8] + +RFC 3360 Inappropriate TCP Resets August 2002 + + +5. Issues for Transport Protocols + + One lesson for designers of transport protocols is that transport + protocols will have to protect themselves from the unknown and + seemingly arbitrary actions of firewalls, normalizers, and other + middleboxes in the network. For the moment, for TCP, this means + sending a non-ECN-setup SYN when a reset is received in response to + an ECN-setup SYN packet. Defensive actions on the side of transport + protocols could include using Reserved flags in the SYN packet before + using them in data traffic, to protect against middleboxes that block + packets using those flags. It is possible that transport protocols + will also have to add additional checks during the course of the + connection lifetime to check for interference from middleboxes along + the path. + + The ECN standards document, RFC 3168, contains an extensive + discussion in Section 18 on "Possible Changes to the ECN Field in the + Network", but includes the following about possible changes to the + TCP header: + + "This document does not consider potential dangers introduced by + changes in the transport header within the network. We note that + when IPsec is used, the transport header is protected both in tunnel + and transport modes [ESP, AH]." + + With the current modification of transport-level headers in the + network by firewalls (as discussed below in Section 6.2), future + protocol designers might no longer have the luxury of ignoring the + possible impact of changes to the transport header within the + network. + + Transport protocols will also have to respond in some fashion to an + ICMP code of "Communication Administratively Prohibited" if + middleboxes start to use this form of the ICMP Destination + Unreachable message to indicate that the packet is using + functionality not allowed [RFC1812]. + +6. Issues for Middleboxes + + Given that some middleboxes are going to drop some packets because + they use functionality not allowed by the middlebox, the larger issue + remains of how middleboxes should communicate the reason for this + action to the end-nodes, if at all. One suggestion, for + consideration in more depth in a separate document, would be that + firewalls send an ICMP Destination Unreachable message with the code + "Communication Administratively Prohibited" [B01]. + + + + + +Floyd Best Current Practice [Page 9] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + We acknowledge that this is not an ideal solution, for several + reasons. First, middleboxes along the reverse path might block these + ICMP messages. Second, some firewall operators object to explicit + communication because it reveals too much information about security + policies. And third, the response of transport protocols to such an + ICMP message is not yet specified. + + However, an ICMP "Administratively Prohibited" message could be a + reasonable addition, for firewalls willing to use explicit + communication. One possibility, again to be explored in a separate + document, would be for the ICMP "Administratively Prohibited" message + to be modified to convey additional information to the end host. + + We would note that this document does not consider middleboxes that + block complete transport protocols. We also note that this document + is not addressing firewalls that send resets in response to a TCP SYN + packet to a firewalled-off TCP port. Such a use of resets seems + consistent with the semantics of TCP reset. This document is only + considering the problems caused by middleboxes that block specific + packets within a transport protocol when other packets from that + transport protocol are forwarded by the middlebox unaltered. + + One complication is that once a mechanism is installed in a firewall + to block a particular functionality, it can take considerable effort + for network administrators to "un-install" that block. It has been + suggested that tweakable settings on firewalls could make recovery + from future incidents less painful all around. Again, because this + document does not address more general issues about firewalls, the + issue of greater firewall flexibility, and the attendant possible + security risks, belongs in a separate document. + +6.1. Current Choices for Firewalls + + Given a firewall that has decided to drop TCP packets that use + reserved bits in the TCP header, one question is whether the firewall + should also send a Reset, in order to prevent the TCP connection from + consuming unnecessary resources at the TCP sender waiting for the + retransmit timeout. We would argue that whether or not the firewall + feels compelled to drop the TCP packet, it is not appropriate to send + a TCP reset. Sending a TCP reset in response to prohibited + functionality would continue the current overloading of the semantics + of the TCP reset in a way that could be counterproductive all around. + + As an example, Section 2.3 has already observed that some firewalls + send resets in response to TCP SYN packets as a congestion control + mechanism. Possibly in response to this (or perhaps in response to + something else), some popular TCP implementations immediately resend + a SYN packet in response to a reset, up to four times. Other TCP + + + +Floyd Best Current Practice [Page 10] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + implementations, in conformance to the standards, don't resend SYN + packets after receiving a reset. The more aggressive TCP + implementations increase congestion for others, but also increase + their own chances of eventually getting through. Giving these fluid + semantics for the TCP reset, one might expect more TCP + implementations to start resending SYN packets in response to a + reset, completely apart from any issues having to do with ECN. + Obviously, this weakens the effectiveness of the reset when used for + its original purpose, of responding to TCP packets that apparently + are not intended for the current connection. + + If we add to this mix the use of the TCP reset by firewalls in + response to TCP packets using reserved bits in the TCP header, this + muddies the waters further. Because TCP resets could be sent due to + congestion, or to prohibited functionality, or because a packet was + received from a previous TCP connection, TCP implementations (or, + more properly, TCP implementors) would now have an incentive to be + even more persistent in resending SYN packets in response to TCP + resets. In addition to the incentive mentioned above of resending + TCP SYN packets to increase one's odds of eventually getting through + in a time of congestion, the TCP reset might have been due to + prohibited functionality instead of congestion, so the TCP + implementation might resend SYN packets in different forms to + determine exactly which functionality is being prohibited. Such a + continual changing of the semantics of the TCP reset could be + expected to lead to a continued escalation of measures and + countermeasures between firewalls and end-hosts, with little + productive benefit to either side. + + It could be argued that *dropping* the TCP SYN packet due to the use + of prohibited functionality leads to overloading of the semantics of + a packet drop, in the same way that the reset leads to overloading + the semantics of a reset. This is true; from the viewpoint of end- + system response to messages with overloaded semantics, it would be + preferable to have an explicit indication about prohibited + functionality (for those firewalls for some reason willing to use + explicit indications). But given a firewall's choice between sending + a reset or just dropping the packet, we would argue that just + dropping the packet does less damage, in terms of giving an incentive + to end-hosts to adopt counter-measures. It is true that just + dropping the packet, without sending a reset, results in delay for + the TCP connection in resending the SYN packet without the prohibited + functionality. However, sending a reset has the undesirable longer- + term effect of giving an incentive to future TCP implementations to + add more baroque combinations of resending SYN packets in response to + a reset, because the TCP sender can't tell if the reset is for a + standard reason, for congestion, or for the prohibited functionality + of option X or reserved bit Y in the TCP header. + + + +Floyd Best Current Practice [Page 11] + +RFC 3360 Inappropriate TCP Resets August 2002 + + +6.2. The Complications of Modifying Packet Headers in the Network + + In addition to firewalls that send resets in response to ECN-setup + SYN packets and firewalls that drop ECN-setup SYN packets, there also + exist firewalls that by default zero the flags in the TCP Reserved + field, including the two flags used for ECN. We note that in some + cases this could have unintended and undesirable consequences. + + If a firewall zeros the ECN-related flags in the TCP header in the + initial SYN packet, then the TCP connection will be set up without + using ECN, and the ECN-related flags in the TCP header will be sent + zeroed-out in all of the subsequent packets in this connection. This + will accomplish the firewall's purpose of blocking ECN, while + allowing the TCP connection to proceed efficiently and smoothly + without using ECN. + + If for some reason the ECN-related flags in the TCP header aren't + zeroed in the initial SYN packet from host A to host B, but the + firewall does zero those flags in the responding SYN/ACK packet from + host B to host A, the consequence could be to subvert end-to-end + congestion control for this connection. The ECN specifications were + not written to ensure robust operation in the presence of the + arbitrary zeroing of TCP header fields within the network, because it + didn't occur to the authors of the protocol at the time that this was + a requirement in protocol design. + + Similarly, if the ECN-related flags in the TCP header are not zeroed + in either the SYN or the SYN/ACK packet, but the firewall does zero + these flags in later packets in that TCP connection, this could also + have the unintended consequence of subverting end-to-end congestion + control for this connection. The details of these possible + interactions are not crucial for this document, and are described in + the appendix. However, our conclusion, both for the ECN-related + flags in the TCP header and for future uses of the four other bits in + the TCP Reserved field, would be that if it is required for firewalls + to be able to block the use of a new function being added to a + protocol, this is best addressed in the initial design phase by joint + cooperation between the firewall community and the protocol + designers. + +7. Conclusions + + Our conclusion is that it is not conformant with current standards + for a firewall, load-balancer, or web-server to respond with a reset + to a TCP SYN packet simply because the packet uses flags in the TCP + Reserved field. More specifically, it is not conformant to respond + with a reset to a TCP SYN packet simply because the ECE and CWR flags + are set in the IP header. We would urge vendors to make available + + + +Floyd Best Current Practice [Page 12] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + fixes for any nonconformant code, and we could urge ISPs and system + administrators to deploy these fixes in their web servers and + firewalls. + + We don't claim that it violates any standard for middleboxes to + arbitrarily drop packets that use flags in the TCP Reserved field, + but we would argue that behavior of this kind, without a clear method + for informing the end-nodes of the reasons for these actions, could + present a significant obstacle to the development of TCP. More work + is clearly needed to reconcile the conflicting interests of providing + security while at the same time allowing the careful evolution of + Internet protocols. + +8. Acknowledgements + + This document results from discussions and activity by many people, + so I will refrain from trying to acknowledge all of them here. My + specific thanks go to Ran Atkinson, Steve Bellovin, Alex Cannara, + Dennis Ferguson, Ned Freed, Mark Handley, John Klensin, Allison + Mankin, Jitendra Padhye, Vern Paxson, K. K. Ramakrishnan, Jamal Hadi + Salim, Pekka Savola, Alex Snoeren, and Dan Wing for feedback on this + document, and to the End-to-End Research Group, the IAB, and the IESG + for discussion of these issues. I thank Mikael Olsson for numerous + rounds of feedback. I also thank the members of the Firewall Wizards + mailing list for feedback (generally of disagreement) on an earlier + draft of this document. + + Email discussions with a number of people, including Dax Kelson, + Alexey Kuznetsov, Kacheong Poon, David Reed, Jamal Hadi-Salim, and + Venkat Venkatsubra, have addressed the issues raised by non- + conformant equipment in the Internet that does not respond to TCP SYN + packets with the ECE and CWR flags set. We thank Mark Handley, + Jitentra Padhye, and others for discussions on the TCP initialization + procedures. + +9. Normative References + + [RFC793] Postel, J., "Transmission Control Protocol - DARPA + Internet Program Protocol Specification", STD 7, RFC 793, + September 1981. + + [RFC1122] Braden, R., "Requirements for Internet Hosts -- + Communication Layers", STD 3, RFC 1122, October 1989. + + [RFC1812] Baker, F., "Requirements for IP Version 4 Routers", RFC + 1812, June 1995. + + + + + +Floyd Best Current Practice [Page 13] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + [RFC2026] Bradner, S., "The Internet Standards Process -- Revision + 3", BCP 9, RFC 2026, October 1996. + + [RFC2481] Ramakrishnan, K. and S. Floyd, "A Proposal to add Explicit + Congestion Notification (ECN) to IP", RFC 2481, January + 1999. + + [RFC2873] Xiao, X., Hannan, A., Paxson, V., and E. Crabbe, "TCP + Processing of the IPv4 Precedence Field, RFC 2873, June + 2000. + + [RFC2979] Freed, N., " Behavior of and Requirements for Internet + Firewalls", RFC 2979, October 2000. + + [RFC3168] Ramakrishnan, K., Floyd, S. and D. Black, "The Addition + of Explicit Congestion Notification (ECN) to IP", RFC + 3168, September 2001. + +10. Informative References + + [B01] Bellovin, S., "A "Reason" Field for ICMP "Administratively + Prohibited" Messages", Work in Progress. + + [Cou01] Scott Courtney, Why Can't My 2.4 Kernel See Some Web + Sites?, Enterprise Linux Today, Apr 17, 2001. URL + "http://eltoday.com/article.php3?ltsn=2001-04-17-001-14- + PS". + + [ECN] "The ECN Web Page", URL + "http://www.icir.org/floyd/ecn.html". + + [FIXES] ECN-under-Linux Unofficial Vendor Support Page, URL + "http://gtf.org/garzik/ecn/". + + [Floyd00] Sally Floyd, Negotiating ECN-Capability in a TCP + connection, October 2, 2000, email to the end2end-interest + mailing list. URL + "http://www.icir.org/floyd/papers/ECN.Oct2000.txt". + + [Kelson00] Dax Kelson, note sent to the Linux kernel mailing list, + September 10, 2000. + + [QUESO] Toby Miller, Intrusion Detection Level Analysis of Nmap + and Queso, August 30, 2000. URL + "http://www.securityfocus.com/infocus/1225". + + + + + + +Floyd Best Current Practice [Page 14] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + [Ste94] Stevens, W., "TCP/IP Illustrated, Volume 1: The + Protocols", Addison-Wesley, 1994. + + [SFO01] FreeBSD ipfw Filtering Evasion Vulnerability, Security + Focus Online, January 23, 2001. URL + "http://www.securityfocus.com/bid/2293". + + [TBIT] Jitendra Padhye and Sally Floyd, Identifying the TCP + Behavior of Web Servers, SIGCOMM, August 2001. URL + "http://www.icir.org/tbit/". + +11. Security Considerations + + One general risk of using Reserved flags in TCP is the risk of + providing additional information about the configuration of the host + in question. However, TCP is sufficiently loosely specified as it + is, with sufficiently many variants and options, that port-scanning + tools such as Nmap and Queso do rather well in identifying the + configuration of hosts even without the use of Reserved flags. + + The security considerations and all other considerations of a + possible ICMP Destination Unreachable message with the code + "Communication Administratively Prohibited" will be discussed in a + separate document. + + The traditional concern of firewalls is to prevent unauthorized + access to systems, to prevent DoS attacks and other attacks from + subverting the end-user terminal, and to protect end systems from + buggy code. We are aware of one security vulnerability reported from + the use of the Reserved flags in the TCP header [SFO01]. A packet + filter intended only to let through packets in established + connections can let pass a packet not in an established connection if + the packet has the ECE flag set in the reserved field. "Exploitation + of this vulnerability may allow for unauthorized remote access to + otherwise protected services." It is also possible that an + implementation of TCP could appear that has buggy code associated + with the use of Reserved flags in the TCP header, but we are not + aware of any such implementation at the moment. + + Unfortunately, misconceived security concerns are one of the reasons + for the problems described in this document in the first place. An + August, 2000, article on "Intrusion Detection Level Analysis of Nmap + and Queso" described the port-scanning tool Queso as sending SYN + packets with the last two Reserved bits in the TCP header set, and + said the following: "[QUESO] is easy to identify, if you see [these + two Reserved bits and the SYN bit] set in the 13th byte of the TCP + header, you know that someone has malicious intentions for your + network." As is documented on the TBIT Web Page, the middleboxes + + + +Floyd Best Current Practice [Page 15] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + that block SYNs using the two ECN-related Reserved flags in the TCP + header do not block SYNs using other Reserved flags in the TCP + header. + + One lesson appears to be that anyone can effectively "attack" a new + TCP function simply by using that function in their publicly- + available port-scanning tool, thus causing middleboxes of all kinds + to block the use of that function. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Floyd Best Current Practice [Page 16] + +RFC 3360 Inappropriate TCP Resets August 2002 + + +12. Appendix: The Complications of Modifying Packet Headers + + In this section we first show that if the ECN-related flags in the + TCP header aren't zeroed in the initial SYN packet from Host A to + Host B, but are zeroed in the responding SYN/ACK packet from Host B + to Host A, the consequence could be to subvert end-to-end congestion + control for this connection. + + Assume that the ECN-setup SYN packet from Host A is received by Host + B, but the ECN-setup SYN/ACK from Host B is modified by a firewall in + the network to a non-ECN-setup SYN/ACK, as in Figure 3 below. RFC + 3168 does not specify that the ACK packet in any way should echo the + TCP flags received in the SYN/ACK packet, because it had not occurred + to the designers that these flags would be modified within the + network. + + Host A Firewall or router Host B + ----------------------------------------------------------------- + Sends ECN-setup SYN ----------------> Receives ECN-setup SYN + <- Sends ECN-setup SYN/ACK + <- Firewall zeros flags + Receives non-ECN-setup SYN/ACK + Sends ACK and data ----------------> Receives ACK and data + <- Sends data packet with ECT + <- Router sets CE + Receives data packet with ECT and CE + + Figure 3: ECN-related flags in SYN/ACK packet cleared in network. + + Following RFC 3168, Host A has received a non-ECN-setup SYN/ACK + packet, and must not set ECT on data packets. Host B, however, does + not know that Host A has received a non-ECN-setup SYN/ACK packet, and + Host B may set ECT on data packets. RFC 3168 does not require Host A + to respond properly to data packets received from Host B with the ECT + and CE codepoints set in the IP header. Thus, the data sender, Host + B, might never be informed about the congestion encountered in the + network, thus violating end-to-end congestion control. + + Next we show that if the ECN-related flags in the TCP header are not + zeroed in either the SYN or the SYN/ACK packet, but the firewall does + zero these flags in later packets in that TCP connection, this could + also have the unintended consequence of subverting end-to-end + congestion control for this connection. Figure 4 shows this + scenario. + + + + + + + +Floyd Best Current Practice [Page 17] + +RFC 3360 Inappropriate TCP Resets August 2002 + + + Host A Firewall or router Host B + ----------------------------------------------------------------- + Sends ECN-setup SYN ----------------> Receives ECN-setup SYN + Receives ECN-setup SYN/ACK <------------ Sends ECN-setup SYN/ACK + Sends ACK and data ----------------> Receives ACK and data + <- Sends data packet with ECT + <- Router sets CE + Receives data packet with ECT and CE + Sends ACK with ECE -> + Firewall resets ECE -> + Receives plain ACK + + Figure 4: ECN-related flags in ACK packet cleared in network. + + The ECN-related flags are not changed by the network in the ECN-setup + SYN and SYN/ACK packets for the scenario in Figure 4, and both end + nodes are free to use ECN, and to set the ECT flag in the ECN field + in the IP header. However, if the firewall clears the ECE flag in + the TCP header in ACK packets from Node A to Node B, then Node B will + never hear about the congestion that its earlier data packets + encountered in the network, thus subverting end-to-end congestion + control for this connection. + + Additional complications will arise when/if the use of the ECN nonce + in TCP becomes standardized in the IETF [RFC3168], as this could + involve the specification of an additional flag from the TCP Reserved + field for feedback from the TCP data receiver to the TCP data sender. + The primary motivation for the ECN nonce is to allow mechanisms for + the data sender to verify that network elements are not erasing the + CE codepoint, and that data receivers are properly reporting to the + sender the receipt of packets with the CE codepoint set. + +13. IANA Considerations + + There are no IANA considerations in this document. + +14. Author's Address + + Sally Floyd + ICIR (ICSI Center for Internet Research) + + Phone: +1 (510) 666-2989 + EMail: floyd@icir.org + URL: http://www.icir.org/floyd/ + + + + + + + +Floyd Best Current Practice [Page 18] + +RFC 3360 Inappropriate TCP Resets August 2002 + + +15. Full Copyright Statement + + Copyright (C) The Internet Society (2002). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Floyd Best Current Practice [Page 19] + |