New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 692348 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner: ----
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Raise dynamic HSTS max-age cap to 2 years (or remove?)

Project Member Reported by lgar...@chromium.org, Feb 15 2017

Issue description

kMaxHSTSAgeSecs is currently 1 year [1].
I didn't know/had forgotten about this when I updated htspreload.org to include a recommendation for a max-age of 2 years [1]. That choice was basically due to two factors:

1. Many sites in the wild use max-ages up to 2 years; very few go higher.
2. If you visit a site roughly once a year, but not always within less than 1 year of the previous time, then 2 years provides value over 1 year.

As an example for #2, imagine you do your taxes on a site that uses HSTS one year on Feb. 2, but next year on Feb. 20.
And the variation could be significantly more – without thinking hard, I can provide evidence of a yearly event that changed from September to December in successive years [2].

Based on my scans of preloaded domains that send an HSTS header:

-  4.4% of max-ages are <= 18 weeks
- 30.8% of max-ages are <= 1/2 year
- 65.5% of max-ages are <= 1 year
- 98.4% of max-ages are <= 2 years

See [2] for scans of the Alexa top 1M (2 years is common, but not relatively as common) and preloaded sites (roughly match my values above).

Alternatively, Firefox and IE/Edge do not cap max-age for dynamic HSTS at all, without ill effects. At some point, exactly how large an HSTS max-age is doesn't really affect risk for the site owner (although it could affect a new site owner if the site changes hands).

It feels weird for hstspreload.org to recommend a larger value for the dynamic header than Chrome will store, so I'd like to make the values match if it's not too much trouble. Considering the reasons above, I currently favor 2 years.

rsleevi@, agl@, estark@: Any concerns about landing a simple CL to increase kMaxHSTSAgeSecs to 2 years?

[1] https://cs.chromium.org/chromium/src/net/http/http_security_headers.h?type=cs&q=kMaxHSTSAgeSecs&sq=package:chromium&l=21
[2] https://www.worldcubeassociation.org/competitions?utf8=%E2%9C%93&region=all&search=german+nationals&year=all+years&state=past&delegate=&display=list
[3] https://github.com/chromium/hstspreload.org/issues/62#issuecomment-245797280
 
Sleevi hot take: Kinda uncomfortable with it, because it's not scoped/bound to the domain registration lifetime, which creates all sorts of weirdness for domain transfers. I actually think smaller bounded max-ages are better here (3-6mos), but I fully accept I might be in the minority. My vote is against raising it, but if there's broad consensus that these concerns are unreasonable, I'm happy to accept that.
Summary: Raise dynamic HSTS max-age cap to 2 years (or remove?) (was: Raise dynamic max-age cap to 2 years (or remove?))

Comment 3 by est...@chromium.org, Feb 16 2017

I have no strong feelings about 1 year vs 2 years, but I don't love the idea of not having any cap at all, in case of domain ownership transfer.
Description: Show this description

Comment 5 by apk...@mozilla.com, Apr 26 2017

My personal preference (although not necessarily reflective of my employer) is that 2 years is a perfectly reasonable maximum.

Given that Firefox has been unbounded for years without issue, I can't imagine there are that many sites impacted by the domain transfer problem.  Worst-case scenario, they can always set max-age to 0 and redirect to HTTP.

A possible compromise (if messy) might be to cap "includeSubDomains" subdomains at a lower maximum than the domain HSTS is specifically set on.  So if I set HSTS to 2 years on pokeinthe.io with includeSubDomains, pokeinthe.io will be set for 2 years, but foo.bar.pokeinthe.io would be capped at 6 months.  IIRC, issues with subdomains were typically the biggest problem with HSTS unpreloading requests.

Comment 6 by agl@chromium.org, Apr 28 2017

(I defer to sleevi and estark on this.)
Sounds like the net vote of sleevi@ and estark@ is "keep at 1 year"?

There have been very few domain transfer problems, and pruning should help keep a lid on them. We've also historically been unconcerned with these sites because HTTPS is pretty easy for a newly launching site to adopt these days.
But we may start getting regular complaints in the future.

If we keep 1 year as the Chrome cap, any objections for continuing to recommend 2 years to webmasters at hstspreload.org? In browsers that support more than 1 year, I think it's definitely a better choice for site security.

> A possible compromise (if messy) might be to cap "includeSubDomains" subdomains at a lower maximum than the domain HSTS is specifically set on.

An interesting idea; I hadn't thought of that. But I think the complexity would outweigh the benefit. Anecdotally, a lot of sites also find issues with their subdomains only once HSTS is in place for the parent domain, for which a faster subdomain timeout wouldn't help.
Status: WontFix (was: Untriaged)
CL to change to 2 years rejected: https://chromium-review.googlesource.com/c/chromium/src/+/884201.
FWIW, Edge also does not have an upper bound on the max-age (or it's maxint or something similarly high), and they currently don't have plans to change it, although they expressed some willingness to reconsider if we thought it important.

Also, it's notable that HSTS is hardly the only context where domain transfer is problematic... the browser doesn't expire cookies, cache, DomStorage, permissions, databases, etc upon transfer of ownership.

Sign in to add a comment