Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Mar 2001 12:43:33 -0600
From:      Scott Johnson <sjohn@airlinksys.com>
To:        freebsd-security@freebsd.org
Subject:   Re: DoS attack - advice needed
Message-ID:  <20010323124333.A65189@ns2.airlinksys.com>
In-Reply-To: <019101c0b311$a2844fd0$0b6cffc8@infolink.com.br>; from apina@infolink.com.br on Thu, Mar 22, 2001 at 05:49:48PM -0300
References:  <007101c0b311$0d67db60$2aa8a8c0@melim.com.br> <019101c0b311$a2844fd0$0b6cffc8@infolink.com.br>

next in thread | previous in thread | raw e-mail | index | archive | help
Quoth Antonio Carlos Pina on Thu, Mar 22, 2001 at 05:49:48PM -0300:
> Source quench is supposed to be needed but is bad (big security risks). You
> should avoid it.

RFC 792 defines ICMP type 4:

      The source quench message is a request to the host to
      cut back the rate at which it is sending traffic to the internet
      destination.  The gateway may send a source quench message for
      every message that it discards.  On receipt of a source quench
      message, the source host should cut back the rate at which it is
      sending traffic to the specified destination until it no longer
      receives source quench messages from the gateway.  The source host
      can then gradually increase the rate at which it sends traffic to
      the destination until it again receives source quench messages.
      The gateway or host may send the source quench message when it
      approaches its capacity limit rather than waiting until the
      capacity is exceeded.  This means that the data datagram which
      triggered the source quench message may be delivered.

All of which seems to be a good thing, except that source quench messages
can be used for DoS attacks.  However, to pull it off you need to send a
message for every TCP stream you wish to disrupt, and each message must
contain the IP header + 64 bits of a real packet in the transmission.
(Well, it doesn't have to be an exact copy, but some values, like src and
dst ports and addresses, and the sequence numbers, must be correct.) Joe
script kiddie probably doesn't have access to enough traffic to use this
effectively or on a large scale. Correct me if I'm wrong, but this seems
low risk. You can just compare the risk to the benefits of congestion
control. At any rate, it wouldn't hurt to let source quench out.

The current Internet Standards for gateways and hosts say:

RFC 1009 (gateway requirements):

         All gateways must contain code for sending ICMP Source Quench
         messages when they are forced to drop IP datagrams due to
         congestion.  Although the Source Quench mechanism is known to
         be an imperfect means for Internet congestion control, and
         research towards more effective means is in progress, Source
         Quench is considered to be too valuable to omit from production
         gateways.

RFC 1122 (host requirements):

            A host MAY send a Source Quench message if it is
            approaching, or has reached, the point at which it is forced
            to discard incoming datagrams due to a shortage of
            reassembly buffers or other resources.  See Section 2.2.3 of
            [INTRO:2] for suggestions on when to send Source Quench.

            If a Source Quench message is received, the IP layer MUST
            report it to the transport layer (or ICMP processing). In
            general, the transport or application layer SHOULD implement
            a mechanism to respond to Source Quench for any protocol
            that can send a sequence of datagrams to the same
            destination and which can reasonably be expected to maintain
            enough state information to make this feasible.


            DISCUSSION:
                 A Source Quench may be generated by the target host or
                 by some gateway in the path of a datagram.  The host
                 receiving a Source Quench should throttle itself back
                 for a period of time, then gradually increase the
                 transmission rate again.  The mechanism to respond to
                 Source Quench may be in the transport layer (for
                 connection-oriented protocols like TCP) or in the
                 application layer (for protocols that are built on top
                 of UDP).


While "in general" the transport layer SHOULD respond to source quench, in
particular TCP and UDP MUST. RFC 1122 again, regarding TCP:

                 TCP MUST react to a Source Quench by slowing
                 transmission on the connection.  The RECOMMENDED
                 procedure is for a Source Quench to trigger a "slow
                 start," as if a retransmission timeout had occurred.

and UDP:

            UDP MUST pass to the application layer all ICMP error
            messages that it receives from the IP layer.  Conceptually
            at least, this may be accomplished with an upcall to the
            ERROR_REPORT routine (see Section 4.2.4.1).

-- 
                                 Scott Johnson
                          System/Network Administrator
                                Airlink Systems

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-security" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010323124333.A65189>