Re: [tcpm] draft-ietf-tcpm-tcpsecure-00.txt

Don Lewis <truckman@FreeBSD.org> Mon, 26 April 2004 16:55 UTC

Received: from optimus.ietf.org (optimus.ietf.org [132.151.1.19]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id MAA02215 for <tcpm-archive@odin.ietf.org>; Mon, 26 Apr 2004 12:55:47 -0400 (EDT)
Received: from localhost.localdomain ([127.0.0.1] helo=www1.ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 1BI99Z-0000aM-Av for tcpm-archive@odin.ietf.org; Mon, 26 Apr 2004 12:40:21 -0400
Received: (from exim@localhost) by www1.ietf.org (8.12.8/8.12.8/Submit) id i3QGeLUi002245 for tcpm-archive@odin.ietf.org; Mon, 26 Apr 2004 12:40:21 -0400
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 1BI94W-0006pV-29 for tcpm-web-archive@optimus.ietf.org; Mon, 26 Apr 2004 12:35:08 -0400
Received: from ietf-mx (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id MAA01118 for <tcpm-web-archive@ietf.org>; Mon, 26 Apr 2004 12:35:04 -0400 (EDT)
Received: from ietf-mx.ietf.org ([132.151.6.1] helo=ietf-mx) by ietf-mx with esmtp (Exim 4.32) id 1BI94U-0003fC-KV for tcpm-web-archive@ietf.org; Mon, 26 Apr 2004 12:35:06 -0400
Received: from exim by ietf-mx with spam-scanned (Exim 4.12) id 1BI93e-0003bp-00 for tcpm-web-archive@ietf.org; Mon, 26 Apr 2004 12:34:14 -0400
Received: from optimus.ietf.org ([132.151.1.19]) by ietf-mx with esmtp (Exim 4.12) id 1BI93H-0003Y5-00 for tcpm-web-archive@ietf.org; Mon, 26 Apr 2004 12:33:51 -0400
Received: from localhost.localdomain ([127.0.0.1] helo=www1.ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 1BI8tl-0002kV-34; Mon, 26 Apr 2004 12:24:01 -0400
Received: from odin.ietf.org ([132.151.1.176] helo=ietf.org) by optimus.ietf.org with esmtp (Exim 4.20) id 1BHJgU-00079Z-8U for tcpm@optimus.ietf.org; Sat, 24 Apr 2004 05:42:54 -0400
Received: from ietf-mx (ietf-mx.ietf.org [132.151.6.1]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id FAA04824 for <tcpm@ietf.org>; Sat, 24 Apr 2004 05:42:50 -0400 (EDT)
Received: from ietf-mx.ietf.org ([132.151.6.1] helo=ietf-mx) by ietf-mx with esmtp (Exim 4.32) id 1BHJgQ-00014u-LQ for tcpm@ietf.org; Sat, 24 Apr 2004 05:42:50 -0400
Received: from exim by ietf-mx with spam-scanned (Exim 4.12) id 1BHJfV-0000pd-00 for tcpm@ietf.org; Sat, 24 Apr 2004 05:41:53 -0400
Received: from 217-ip-163.nccn.net ([209.79.217.163] helo=gw.catspoiler.org) by ietf-mx with esmtp (Exim 4.12) id 1BHJev-0000Z4-00 for tcpm@ietf.org; Sat, 24 Apr 2004 05:41:17 -0400
Received: from FreeBSD.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.12.9p2/8.12.9) with ESMTP id i3O9eX7E053356; Sat, 24 Apr 2004 02:40:37 -0700 (PDT) (envelope-from truckman@FreeBSD.org)
Message-Id: <200404240940.i3O9eX7E053356@gw.catspoiler.org>
Date: Sat, 24 Apr 2004 02:40:33 -0700
From: Don Lewis <truckman@FreeBSD.org>
Subject: Re: [tcpm] draft-ietf-tcpm-tcpsecure-00.txt
To: rrs@cisco.com
cc: tcpm@ietf.org
In-Reply-To: <4086A550.30003@cisco.com>
MIME-Version: 1.0
Content-Type: TEXT/plain; charset="us-ascii"
Sender: tcpm-admin@ietf.org
Errors-To: tcpm-admin@ietf.org
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.0.12
Precedence: bulk
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-Spam-Checker-Version: SpamAssassin 2.60 (1.212-2003-09-23-exp) on ietf-mx.ietf.org
X-Spam-Status: No, hits=0.0 required=5.0 tests=none autolearn=no version=2.60

On 21 Apr, Randall Stewart (cisco) wrote:
> Hi all:
> 
> Don Lewis from FreeBSD has raised this point
> to me privately.. and I thought it worth sharing...
> "
> 
> From what I see here: 
> 	<http://docs.freebsd.org/cgi/getmsg.cgi?fetch=71731+0+archive/1999/freebsd-net/19991128.freebsd-net>
> I am concerned that step C will not solve the compatibility problem. The
> FreeBSD host is sending a FIN to close an established connection, and
> the peer host adding the window size advertised in the FIN packet to the
> sequence number acknowledged in the FIN packet, and using the sum as the
> sequence number for the RST packet, which puts the sequence number at
> the end of the receive window.
> 
> "
> 
> Don:
> 
> I am still a bit fuzzy on this scenario... could you do something like:
> 
> E-A                                                             E-Z
> --------------FIN(ack=X)---------------------------------->
> <----------------------------RST(ack=Y)-----------------
> 
> and spell this out for me.

It turns out that the problem mentioned in the FreeBSD archives is a
rather special case.  The traffic captured in the tcpdump trace is
between a web server and a load balancing device that sits between the
web server and its clients.

At the end of the server's response to the client, the server sends a
FIN packet to close down the connection.  The load balancer is detecting
the FIN packet, and immediately sending a RST response to the web server
to cause the web server to immediately tear down the connection state in
order to free up resources on the web server as quickly as possible,
without having the web server wait for an ACK from the possibly quite
distant client.  The quirk is that the RST packet constructed by the
load balancer does not use as its sequence number the last acknowledged
sequence number that it extracted from the FIN packet.  Instead it
appears to add the window size (less one?) advertised by the FIN packet
to the last acknowledged sequence number in the FIN packet to get the
value of the sequence number in the RST packet.

I would assume that the load balancing device is forwarding the FIN
packet to the client, and that it is handling any necessary
retransmissions.

I suspect that step C in the solution to the RST vulnerability mentioned
in draft-ietf-tcpm-tcpsecure-00 would not help in this case, since the
load balancing device appears to totally ignore retransmissions of the
FIN packet by the web server if the web server drops the initial RST
packet because of strict sequence number checking.


The fix currently proposed for the the FreeBSD stack is to enforce the
exact sequence match check (step B in draft-ietf-tcpm-tcpsecure-00) for
ESTABLISHED connections, but use the more permissive RFC 793 check for
connections in other states.


_______________________________________________
tcpm mailing list
tcpm@ietf.org
https://www1.ietf.org/mailman/listinfo/tcpm