Re: [hybi] Review of draft-ietf-hybi-thewebsocketprotocol-13

"Richard L. Barnes" <rbarnes@bbn.com> Tue, 06 September 2011 15:16 UTC

Return-Path: <rbarnes@bbn.com>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5AE9421F8BA4; Tue, 6 Sep 2011 08:16:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -106.551
X-Spam-Level:
X-Spam-Status: No, score=-106.551 tagged_above=-999 required=5 tests=[AWL=0.048, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NSwTsJO40wXL; Tue, 6 Sep 2011 08:16:54 -0700 (PDT)
Received: from smtp.bbn.com (smtp.bbn.com [128.33.1.81]) by ietfa.amsl.com (Postfix) with ESMTP id A084321F8ACE; Tue, 6 Sep 2011 08:16:54 -0700 (PDT)
Received: from ros-dhcp192-1-51-76.bbn.com ([192.1.51.76]:61089) by smtp.bbn.com with esmtps (TLSv1:AES128-SHA:128) (Exim 4.74 (FreeBSD)) (envelope-from <rbarnes@bbn.com>) id 1R0xQ9-000JQi-70; Tue, 06 Sep 2011 11:18:41 -0400
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: text/plain; charset="us-ascii"
From: "Richard L. Barnes" <rbarnes@bbn.com>
In-Reply-To: <4E620046.2000400@isode.com>
Date: Tue, 06 Sep 2011 11:18:40 -0400
Content-Transfer-Encoding: quoted-printable
Message-Id: <E566DD99-64E5-47DF-A24C-3AA4E2EA20CA@bbn.com>
References: <942CCA6B-B784-441B-96CA-3506FFC439E1@bbn.com> <4E620046.2000400@isode.com>
To: Alexey Melnikov <alexey.melnikov@isode.com>
X-Mailer: Apple Mail (2.1084)
Cc: General Area Review Team <gen-art@ietf.org>, hybi@ietf.org
Subject: Re: [hybi] Review of draft-ietf-hybi-thewebsocketprotocol-13
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 06 Sep 2011 15:16:55 -0000

>> Section 2, "Implementations MAY impose implementation-specific limits..."
>> This paragraph has been removed in -13.
>> 
> No, it got moved to its own section "Implementation-Specific Limits" under the "Security Considerations"

Yeah, sorry, wrote that before I got to the Security Considerations :)


>> While the "MAY" doesn't specify a requirement, it seems like it would be helpful to implementers in light of the exhaustion/DoS possibilities presented by huge frames and fragmentation.  I would even argue that it should be a "SHOULD".
>> 
> I am Ok with changing MAY to SHOULD.

I'm assuming from your response below that you're OK with going to MUST as well?


>> (I'm guessing this has to do with 'deflate'?)  At the very least, it seems like there should be a requirement that when an intermediary sees an extension that it doesn't understand, it MUST NOT fragment or coalesce frames.
>> 
> This requirement is already in the spec. In Section 5.4:
> 
>  o  An intermediary MUST NOT change the fragmentation of a message if
>     any reserved bit values are used and the meaning of these values
>     is not known to the intermediary.
> 
>  o  An intermediary MUST NOT change the fragmentation of any message
>     in the context of a connection where extensions have been
>     negotiated and the intermediary is not aware of the semantics of
>     the negotiated extensions.

Thanks, I had missed those requirements.  


>> Section 8
>> Should be moved to Section 5.6.  It really only applies to text frames, and even then only if text frames are required to be UTF-8.
>> 
> I think it also applies to the handshake itself (in presence of possible extensions).

Even still, it would probably be more helpful to have individual recommendations in the handshake and framing sections.


>> Section 10
>> In this section, and overall, it would be helpful if this document could briefly describe the browser/JS model and assign some terms that can be used consistently throughout. 
>> Section 10.2, "... should only respond with the corresponding "Sec-WebSocket-Accept" if it is an accepted origin. "
>> If I understand this correctly, the server causes the handshake to fail by omitting the "Accept".
>> 
> This section doesn't define normative behaviour
> 
>> Shouldn't it either return an HTTP error or Fail the Websocket Connection_ ?
>> 
> Yes. Any suggestions how to make this clearer?

OLD: 
"
Servers that are not intended to process input from any Web page but only for certain sites SHOULD verify the "Origin" field is an origin they expect, and should only respond with the corresponding "Sec-WebSocket-Accept" if it is an accepted origin.
"
NEW:
"
Servers that are not intended to process input from any Web page but only for certain sites SHOULD verify the "Origin" field is an origin they expect.  If the origin indicated is unacceptable to the server, then it SHOULD respond with an HTTP 403 Unauthorized error response and _Fail the WebSocket Connection_.
"


>> Section 10.3, "It is also necessary that once the transmission of a frame from a client has begun, the payload (application supplied data) of that frame must not be capable of being modified by the application."
>> This seems to further argue against the idea that giant frames are useful.
>> 
> Yes.
> 
>> They're clearly not useful for streaming (the opposite is suggested in Section 5.4, see above), since the application would have to provide all the data at once.  
>> Section 10.3
>> This section should note that even given the masking constraints in this document, proxies are still vulnerable to poisoning by non-browser clients that do not perform masking.

Suggested text:
"
Despite the protection provided by masking, non-compliant HTTP proxies will still be vulnerable to poisoning attacks of this type by clients and servers that do not apply masking.
"


>> Section 10.4
>> Suggest making this a "SHOULD" or even "MUST".  If your implementation does not constrain these things, then it will be vulnerable to exhaustion attacks.
>> 
> Ok.

So you're changing this to MUST?