Re: [tcpm] On the implementation of TCP urgent data (IETF Internet Draft)

James Chacon <jmc@netbsd.org> Tue, 03 March 2009 04:18 UTC

Return-Path: <jmc@netbsd.org>
X-Original-To: tcpm@core3.amsl.com
Delivered-To: tcpm@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id EA0D43A6A78 for <tcpm@core3.amsl.com>; Mon, 2 Mar 2009 20:18:51 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, NO_RELAYS=-0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6rp6pu4Miu38 for <tcpm@core3.amsl.com>; Mon, 2 Mar 2009 20:18:51 -0800 (PST)
Received: from mail.netbsd.org (mail.NetBSD.org [IPv6:2001:4f8:4:7:2e0:81ff:fe52:9ab6]) by core3.amsl.com (Postfix) with ESMTP id 944AE3A6A59 for <tcpm@ietf.org>; Mon, 2 Mar 2009 20:18:50 -0800 (PST)
Received: from [IPv6:::1] (localhost [IPv6:::1]) by mail.netbsd.org (Postfix) with ESMTP id 4348063B120; Tue, 3 Mar 2009 04:19:14 +0000 (UTC)
Message-Id: <2059A6D8-4BDA-44FF-827D-655814042138@netbsd.org>
From: James Chacon <jmc@netbsd.org>
To: Bill Squier <groo@old-ones.com>
In-Reply-To: <F2BD5C91-4566-487A-8CC0-D180C30B0058@old-ones.com>
Content-Type: text/plain; charset="US-ASCII"; format="flowed"; delsp="yes"
Content-Transfer-Encoding: 7bit
Mime-Version: 1.0 (Apple Message framework v930.3)
Date: Mon, 02 Mar 2009 22:19:13 -0600
References: <20090227222910.4AAF55654E@rebar.astron.com> <F2BD5C91-4566-487A-8CC0-D180C30B0058@old-ones.com>
X-Mailer: Apple Mail (2.930.3)
X-Mailman-Approved-At: Tue, 03 Mar 2009 08:08:09 -0800
Cc: groo@netbsd.org, Jerry Leichter <leichter@lrw.com>, Christos Zoulas <christos@zoulas.com>, Fernando Gont <fernando@gont.com.ar>, tcpm@ietf.org
Subject: Re: [tcpm] On the implementation of TCP urgent data (IETF Internet Draft)
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tcpm>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 03 Mar 2009 04:21:04 -0000

On Feb 27, 2009, at 5:13 PM, Bill Squier wrote:

>
> On Feb 27, 2009, at 5:29 PM, Christos Zoulas wrote:
>
>> In article <49A83600.9090807@gont.com.ar> you write:
>>> Hello, folks,
>>>
>>> We have published a revision of our IETF Internet-Draft entitled  
>>> "On the
>>> implementation of TCP urgent data". The document is available at:
>>> http://tools.ietf.org/id/draft-gont-tcpm-urgent-data-01.txt (you can
>>> also get the document in other fancy formats, such as PDF, at
>>> http://www.gont.com.ar/drafts).
>>>
>>> This document describes current issues relevant to the  
>>> implementation
>>> and use of TCP urgent data, aims to change the IETF specifications  
>>> so
>>> that they accommodate what virtually all implementations have been  
>>> doing
>>> wrt urgent data.
>>>
>>> The TCPM working group of the IETF is currently deciding whether to
>>> adopt this document as a working group item, so that your input  
>>> will be
>>> very much appreciated.
>>>
>>> To voice your opinion, please send it to tcpm@ietf.org, and CC me
>>> (fernando@gont.com.ar), so that I make sure that your post makes  
>>> it to
>>> the mailing-list, even if you are not subscribed to it.  
>>> (Alternatively,
>>> you can send me your input, and I could forward it to the tcpm@ietf.org
>>> mailing-list).
>>
>> The behavior on Windows is more complex than this. I think that it  
>> maintains
>> much more data than a single byte and this can lead to resource  
>> exhaustion.
>> This behavior is used and required to be present by SQL Server, so  
>> Microsoft
>> is unwilling to change it. Bill Squier <groo@netbsd.org> discovered  
>> this and
>> can provide you with details.
>
> I haven't had time to read the article completely, but I did skim  
> the Windows section, and Christos is correct.  Windows exhausts a  
> non-paged fixed size pool of kernel memory (leading to a crash)  
> whenever the receiver does not drain OOB data.  Thus, any Windows  
> TCP receiver which does not expect OOB data is an avenue of attack.   
> For example, the NetBIOS listener.  I refer here to Windows versions  
> <= XP.  I have not performed any testing on Vista and later.   
> Microsoft has been aware of this issue for years.  Jerry and James  
> can speak to whether they have ever addressed it.
>
> Further, I noticed that some of your analysis discusses OOB data  
> bleeding in-line.  This is almost certainly caused by an interaction  
> (on the _sender_) of Nagle and the fact that TCP defines only a  
> single OOB pointer.  The receiver is not returning bytes which it  
> knows to be OOB bytes inline, the _sender_ is accidentally placing  
> more than a single byte of OOB in each packet that it sends.
>
> The receiver has no way to know that, as the only means of  
> communication about OOB data between sender and receiver is a single  
> pointer.
>

Actually we have seen leaks in-band when simply sending one byte at a  
time of OOB. It appears if the distance between 2 bytes exceeds the  
available OOB marker (which from memory was 16 bits) and nothing reads  
on the receiving end then on some impls the bytes leak in-band.

We've seen that on linux and on Solaris to my recollection.

James