Network Working Group R. Stewart Request for Comments: 5062 Cisco Systems, Inc. Category: Informational M. Tuexen Muenster Univ. of Applied Sciences G. Camarillo Ericsson September 2007 Security Attacks Found Against the Stream Control Transmission Protocol (SCTP) and Current Countermeasures Status of This Memo This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited. Abstract This document describes certain security threats to SCTP. It also describes ways to mitigate these threats, in particular by using techniques from the SCTP Specification Errata and Issues memo (RFC 4460). These techniques are included in RFC 4960, which obsoletes RFC 2960. It is hoped that this information will provide some useful background information for many of the newest requirements spelled out in the SCTP Specification Errata and Issues and included in RFC 4960. Stewart, et al. Informational [Page 1]
RFC 5062 SCTP Security Attacks September 2007 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Address Camping or Stealing . . . . . . . . . . . . . . . . . 2 3. Association Hijacking 1 . . . . . . . . . . . . . . . . . . . 3 4. Association Hijacking 2 . . . . . . . . . . . . . . . . . . . 6 5. Bombing Attack (Amplification) 1 . . . . . . . . . . . . . . . 7 6. Bombing Attack (Amplification) 2 . . . . . . . . . . . . . . . 9 7. Association Redirection . . . . . . . . . . . . . . . . . . . 10 8. Bombing Attack (Amplification) 3 . . . . . . . . . . . . . . . 10 9. Bombing Attack (Amplification) 4 . . . . . . . . . . . . . . . 11 10. Bombing Attack (amplification) 5 . . . . . . . . . . . . . . . 11 11. Security Considerations . . . . . . . . . . . . . . . . . . . 12 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1. Introduction Stream Control Transmission Protocol, originally defined in [RFC2960], is a multi-homed transport protocol. As such, unique security threats exists that are addressed in various ways within the protocol itself. This document describes certain security threats to SCTP. It also describes ways to mitigate these threats, in particular by using techniques from the SCTP Specification Errata and Issues memo [RFC4460]. These techniques are included in [RFC4960], which obsoletes [RFC2960]. It is hoped that this information will provide some useful background information for many of the newest requirements spelled out in the [RFC4460] and included in [RFC4960]. This work and some of the changes that went into [RFC4460] and [RFC4960] are much indebted to the paper on potential SCTP security risks [EFFECTS] by Aura, Nikander, and Camarillo. Without their work, some of these changes would remain undocumented and potential threats. The rest of this document will concentrate on the various attacks that were illustrated in [EFFECTS] and detail the preventative measures now in place, if any, within the current SCTP standards. 2. Address Camping or Stealing This attack is a form of denial of service attack crafted around SCTP's multi-homing. In effect, an illegitimate endpoint connects to a server and "camps upon" or "holds up" a valid peer's address. This is done to prevent the legitimate peer from communicating with the server. Stewart, et al. Informational [Page 2]
RFC 5062 SCTP Security Attacks September 2007 2.1. Attack Details +----------+ +----------+ +----------+ | Evil | | Server | | Client | | IP-A=+------------+ +-----------+=IP-C & D | | Attacker | | | | Victim | +----------+ +----------+ +----------+ Figure 1: Camping Consider the scenario illustrated in Figure 1. The attacker legitimately holds IP-A and wishes to prevent the 'Client-Victim' from communicating with the 'Server'. Note also that the client is multi-homed. The attacker first guesses the port number our client will use in its association attempt. It then uses this port and sets up an association with the server listing not only IP-A but also IP-C in its initial INIT chunk. The server will respond and set up the association, noting that the attacker is multi-homed and holds both IP-A and IP-C. Next, the victim sends in an INIT message listing its two valid addresses, IP-C and IP-D. In response, it will receive an ABORT message with possibly an error code indicating that a new address was added in its attempt to set up an existing association (a restart with new addresses). At this point, 'Client-Victim' is now prevented from setting up an association with the server until the server realizes that the attacker does not hold the address IP-C at some future point by using a HEARTBEAT based mechanism. See the mitigation option subsection of this section. 2.2. Analysis This particular attack was discussed in detail on the SCTP implementors list in March of 2003. Out of that discussion, changes were made in the BSD implementation that are now present in [RFC4960]. In close examination, this attack depends on a number of specific things to occur. 1) The attacker must set up the association before the victim and must correctly guess the port number that the victim will use. If the victim uses any other port number the attack will fail. Stewart, et al. Informational [Page 3]
RFC 5062 SCTP Security Attacks September 2007 2) SCTP's existing HEARTBEAT mechanism as defined already in [RFC2960] will eventually catch this situation and abort the evil attacker's association. This may take several seconds based on default HEARTBEAT timers but the attacker himself will lose any association. 3) If the victim is either not multi-homed, or the address set that it uses is completely camped upon by the attacker (in our example if the attacker had included IP-D in its INIT as well), then the client's INIT message would initiate an association between the client and the server while destroying the association between the attacker and the server. From the servers' perspective, this is a restart of the association. 2.3. Mitigation Option [RFC4960] adds a new set of requirements to better counter this attack. In particular, the HEARTBEAT mechanism was modified so that addresses unknown to an endpoint (i.e., presented in an INIT with no pre-knowledge given by the application) enter a new state called "UNCONFIRMED". During the time that any address is UNCONFIRMED and yet considered available, heartbeating will be done on those UNCONFIRMED addresses at an accelerated rate. This will lessen the time that an attacker can "camp" on an address. In particular, the rate of heartbeats to UNCONFIRMED addresses is done every RTO. Along with this expanded rate of heartbeating, a new 64-bit random nonce is required to be inside HEARTBEATs to UNCONFIRMED addresses. In the HEARTBEAT-ACK, the random nonce must match the value sent in the HEARTBEAT before an address can leave the UNCONFIRMED state. This will prevent an attacker from generating false HEARTBEAT-ACKs with the victim's source address(es). In addition, clients that do not need to use a specific port number should choose their port numbers on a random basis. This makes it hard for an attacker to guess that number.