Re: [websec] ignoring STS header fields with undefined directives (was: new rev: draft-ietf-websec-strict-transport-sec-08)

Alexey Melnikov <alexey.melnikov@isode.com> Mon, 04 June 2012 20:20 UTC

Return-Path: <alexey.melnikov@isode.com>
X-Original-To: websec@ietfa.amsl.com
Delivered-To: websec@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 03FFA11E80EC for <websec@ietfa.amsl.com>; Mon, 4 Jun 2012 13:20:56 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.447
X-Spam-Level:
X-Spam-Status: No, score=-102.447 tagged_above=-999 required=5 tests=[AWL=0.152, BAYES_00=-2.599, 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 no-w5siq99Sm for <websec@ietfa.amsl.com>; Mon, 4 Jun 2012 13:20:55 -0700 (PDT)
Received: from rufus.isode.com (cl-125.lon-03.gb.sixxs.net [IPv6:2a00:14f0:e000:7c::2]) by ietfa.amsl.com (Postfix) with ESMTP id DF06C11E80C0 for <websec@ietf.org>; Mon, 4 Jun 2012 13:20:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1338841254; d=isode.com; s=selector; i=@isode.com; bh=7QRWotMbVTHH1uIleIp5gD/LmkKOvkMU3DC9bQ/Q0qs=; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:Cc:MIME-Version: In-Reply-To:References:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description; b=DpdPjkjiXRUyTvKsfup2HajlVJNqZwalqHfY5qL+jzMlLDR0nBqpRfcWp2HkX9/M+qHm95 5T9D/ghWEzQ3MYxRbOzE0kDJkRxf9VrOiKdyKx3MB9jd+/RMt66gbqubGUU3jaQ06AwrVw zO7ruE6KcqylyRBGd1Dw/pi3iKd/HkU=;
Received: from [172.20.10.2] ((unknown) [212.183.128.204]) by rufus.isode.com (submission channel) via TCP with ESMTPSA id <T80YmgAE42v3@rufus.isode.com>; Mon, 4 Jun 2012 21:20:46 +0100
X-SMTP-Protocol-Errors: PIPELINING
Message-ID: <4FCD1897.9040601@isode.com>
Date: Mon, 04 Jun 2012 21:20:39 +0100
From: Alexey Melnikov <alexey.melnikov@isode.com>
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2
To: =JeffH <Jeff.Hodges@KingsMountain.com>
References: <4FCD1645.3050700@KingsMountain.com>
In-Reply-To: <4FCD1645.3050700@KingsMountain.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
Cc: Julian Reschke <julian.reschke@gmx.de>, IETF WebSec WG <websec@ietf.org>
Subject: Re: [websec] ignoring STS header fields with undefined directives (was: new rev: draft-ietf-websec-strict-transport-sec-08)
X-BeenThere: websec@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Web Application Security Minus Authentication and Transport <websec.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/websec>, <mailto:websec-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/websec>
List-Post: <mailto:websec@ietf.org>
List-Help: <mailto:websec-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/websec>, <mailto:websec-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 04 Jun 2012 20:20:56 -0000

On 04/06/2012 21:10, =JeffH wrote:
>
> > On 2012-06-02 02:22, =JeffH wrote:
> >> > On 2012-06-01 20:32, =JeffH wrote:
> >> >
> >> >> Alexey wrote:
> >> >>
> >> >> > Most of my issues were addressed in the latest version, except 
> for
> >> >> this one:
> >> >> >
> >> >> > > 6.1. Strict-Transport-Security HTTP Response Header Field
> >> >> > >
> >> >> > > 4. UAs MUST ignore any STS header fields containing 
> directives, or
> >> >> > > other header field value data, that does not conform to the
> >> >> > > syntax defined in this specification.
> >> >> >
> >> >> > So this is saying that syntactically invalid STS header fields 
> are
> >> >> > to be ignored. This still doesn't say if unrecognized directives
> >> are to
> >> >> > be ignored or not. (Because they can comply with the generic
> >> syntax for
> >> >> > directives, so they would be syntactically valid, albeit
> >> unrecognized).
> >> >> > So can you please add an explicit sentence about that?
> >> >>
> >> >>
> >> >> Here's the text in my working copy for that item..
> >> >>
> >> >> <t>
> >> >> UAs MUST ignore any STS header fields containing
> >> >> directives, or other header field value data, that does
> >> >> not conform to the syntax defined in this specification.
> >> >> UAs MUST also ignore any STS header fields containing
> >> >> undefined directives.
> >> >> </t>
> >> >>
> >> >> Ok?
> >> >> ...
> >> >
> >> > That makes it basically impossible to add extensions; is that 
> intended?
> >>
> >> No, that is not my intention, nor the WG's as far as I understand.
> >>
> >>
> >> Alexey follows up with:
> >> >
> >> > I agree with Julian: this will make the header field effectively non
> >> > extensible. And if you update the header field by adding new 
> values, all
> >> > older implementations will start ignoring it, which is a deployment
> >> > headache.
> >>
> >> Ok, so the first proposal is broken, how about this..
> >>
> >> <t>
> >> UAs MUST ignore any STS header fields containing
> >> directives, or other header field value data, that does
> >> not conform to the syntax defined in this specification.
> >> </t>
> >> <t>
> >> UAs MUST ignore any directives they
> >> do not recognize, but MAY accept and
> >> process a STS header field containing an
> >> unrecognized directive but otherwise
> >> satisfying the other
> >> requirements (1 through 4) stated here.
> >> </t>
> >>
> >> ..?
> >>
> >> Note that the paragraph following the above numbered list items 
> states:
> >>
> >> Additional directives extending the semantic functionality of the STS
> >> header field can be defined in other specifications.
> >
> > "UAs MUST ignore any directives they do not recognize, ..."
> >
> > Yes.
> >
> > " ...but MAY accept and process a STS header field containing an
> > unrecognized directive but otherwise satisfying the other requirements
> > (1 through 4) stated here."
> >
> > Why "MAY accept" here? If the MUST ignore extension directives, doesn't
> > that mean that that "MAY" indeed is a "MUST"?
>
> thanks, yes, I believe that's correct. Here's what I have upon 
> re-writing it (this is in S 6.1)...
>
>    4.  UAs MUST ignore any STS header fields containing directives, or
>        other header field value data, that does not conform to the
>        syntax defined in this specification.
>
>    5.  If an STS header field contains directive(s) not recognized by
>        the UA, the UA MUST ignore the unrecognized directives and if the
>        STS header field otherwise satisfies the above requirements (1
>        through 4), the UA MUST process the recognized directives.
>
>    Additional directives extending the semantic functionality of the STS
>    header field can be defined in other specifications.

This looks good to me now.