Re: [websec] wrt Firefox's pre-loaded HSTS list impl (was: HSTS: max-age=0 interacting with includeSubdomains)

=JeffH <> Tue, 21 August 2012 22:09 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 23DC221F86D1 for <>; Tue, 21 Aug 2012 15:09:29 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -100.714
X-Spam-Status: No, score=-100.714 tagged_above=-999 required=5 tests=[AWL=-0.219, BAYES_00=-2.599, FH_RELAY_NODNS=1.451, HELO_MISMATCH_COM=0.553, RDNS_NONE=0.1, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 7g0vJ2Vv5SpI for <>; Tue, 21 Aug 2012 15:09:28 -0700 (PDT)
Received: from ( [IPv6:2605:dc00:100:2::a2]) by (Postfix) with SMTP id 7C00D21F86D0 for <>; Tue, 21 Aug 2012 15:09:28 -0700 (PDT)
Received: (qmail 19992 invoked by uid 0); 21 Aug 2012 22:09:25 -0000
Received: from unknown (HELO ( by with SMTP; 21 Aug 2012 22:09:25 -0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;; s=default; h=Content-Transfer-Encoding:Content-Type:Subject:CC:To:MIME-Version:From:Date:Message-ID; bh=pKLvb8fF/68iU/8TtmTQUgVEJIrlJBai/guJtfYbufw=; b=CV1SxAT0P3jWbEZnTgVePnTpZPIoOok4HfN/RsL2P/JvlCUvDGfp+fuTbRrZ7NOF6wDuOR4E5EhXJcD311FTXp2Bf/gchUeIFWq6IhoN0dy8MjhQY4B7mHfutuIbO77N;
Received: from [] (port=39859 helo=[]) by with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.76) (envelope-from <>) id 1T3wdZ-0003LU-J7; Tue, 21 Aug 2012 16:09:25 -0600
Message-ID: <>
Date: Tue, 21 Aug 2012 15:09:24 -0700
From: =JeffH <>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120714 Thunderbird/14.0
MIME-Version: 1.0
To: Brian Smith <>
Content-Type: text/plain; charset="ISO-8859-1"; format="flowed"
Content-Transfer-Encoding: 7bit
X-Identified-User: {} {sentby:smtp auth authed with}
Cc: IETF WebSec WG <>
Subject: Re: [websec] wrt Firefox's pre-loaded HSTS list impl (was: HSTS: max-age=0 interacting with includeSubdomains)
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Web Application Security Minus Authentication and Transport <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 21 Aug 2012 22:09:29 -0000

Adam Barth wrote..
 > On Tue, Aug 21, 2012 at 1:38 PM, Brian Smith <> wrote:
 >>> Adam Barth wrote:
 >>>> Brian Smith wrote:
 >>>>> 2. The owners of decides to turn of HSTS for whatever
 >>>>> reason (perhaps the domain changed owners, or there's a compatibility
 >>>>> issue, or whatever), so they start sending out HSTS with max-age=0
 >>>>> for and for all the subdomains.
 >>>> That's not a correct way of disabling HSTS after (1).  Instead, they
 >>>> need only send out an max-age=0 header for itself.
 >> [...]
 >>>> They can simply initiate a request to (e.g., by
 >>>> using an HTTP redirect or an HTML image element) and clear the HSTS
 >>>> state for that host name.
 >> I understand what you're saying and it makes sense. And, I agree that in a
 >> web browser that is a pretty reasonable way to handle some emergency where
 >> you have to turn off HSTS for some reason, though I think it would be quite
 >> tricky to do so in a way that is reliable.
 >> Another thing to keep in mind is that, in order to turn off HSTS, the site
 >> must comply with the browser's requirements for HSTS sites anyway;
 >> otherwise the browser will ignore your HSTS header and avoid doing the
 >> redirect or avoid loading the page with the img tag in it.

I guess I'm curious what you mean by "browser's requirements for HSTS sites" and 
why it might avoid performing a redirect ?

 >> FWIW, in Firefox we are also going to honor max-age=0 as a mechanism to
 >> disable the entries in our pre-loaded HSTS list that will ship in the
 >> browser.
 > How long do you plan to cache the disable?

And can the site then turn around and issue HSTS Policy with a non-zero max-age 
to reinstate the policy?