New issue
Advanced search Search tips

Issue 669978 link

Starred by 3 users

Issue metadata

Status: Archived
Owner:
Closed: Jun 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug



Sign in to add a comment

Content_shell doesn't load https://www.united.com/ual/en/us/

Project Member Reported by wangxianzhu@chromium.org, Nov 30 2016

Issue description

Revision: 435311
OS: Linux

Run content_shell https://www.united.com/ual/en/us/
Or
run content_shell, then input https://www.united.com/ual/en/us/ in the url box and press return.

Actual: No page load

The URL loads in chrome built on the same revision. Didn't see relevant log output.

Tried several other urls. URLs with the same domain (e.g.  https://www.united.com and https://www.united.com/web/en-US/content/Contact/default.aspx) have the same issue. Haven't found another URL with different domain having the same issue.

Dumped the headers with curl:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
X-FRAME-OPTIONS: SAMEORIGIN
X-AspNetMvc-Version: 4.0
X-UA-Compatible: IE=Edge,chrome=1
Server: Continental Airlines, Inc.
Expires: Wed, 30 Nov 2016 18:15:26 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Wed, 30 Nov 2016 18:15:26 GMT
Transfer-Encoding:  chunked
Connection: keep-alive
Connection: Transfer-Encoding
Strict-Transport-Security: max-age=15768000; preload

DevTools showed no network activities for the URL. Timeline shows a beforeunload event but no other relevant events.


 
Components: -Tools>Test Internals>Network
I created a netlog using content_shell. Could somebody from the net team please triage?
netlog
34.6 KB View Download

Comment 2 by b...@chromium.org, Dec 1 2016

Cc: davidben@chromium.org
Components: -Internals>Network Internals>Network>SSL
CC'ing davidben@: could you please take a look?

I am able to reproduce with tip of tree (a6a331af3e247c40a7aa360c0422db4ec4e5b275) build.  https://www.united.com/ual/en/us/ does not load in content_shell, but loads in chrome.  Netlog for content_shell shows failure with ERR_CERTIFICATE_TRANSPARENCY_REQUIRED error, whereas chrome netlog does not contain this error at all.
netlog-contentshell.json
58.6 KB View Download
netlog-chrome.json
1.9 MB View Download
This is working as intended.
The context of why:
1) Symantec certificates are not trusted unless they are logged via Certificate Transparency. This is a security policy from //net and communicated via https://security.googleblog.com/2015/10/sustaining-digital-certificate-security.html (see also: https://cs.chromium.org/chromium/src/net/data/ssl/symantec/README.md )

2) Embedders decide whether/how to support certificate transparency.
  a) By default, because it requires an update channel, embedders default to "distrust Symantec"
  b) If embedders wish, they can disable the enforcement of CT by providing a CTPolicyEnforcer to the URLRequestContext[Builder] that says to accept all certificates as compliant
  c) If embedders wish, they can indicate they support CT by initializing a CTVerifier (really: a MultiLogCTVerifier), for which they will provide up to date CT information

content_shell doesn't set any policy, so it falls under a.

Comment 5 by b...@chromium.org, Dec 1 2016

Status: WontFix (was: Untriaged)
rsleevi: Thank you for the explanation.  Since this is working as intended, I am closing it as WontFix.
Owner: eranm@chromium.org
Status: Assigned (was: WontFix)
I said WAI, but then I found the note that after further discussion, Eran was planning to change this :)

Marking it as assigned to Eran to update the shell content loader :)

Comment 7 by eranm@chromium.org, Dec 1 2016

Cc: rsleevi@chromium.org
Ryan, could you please jog my memory, which note are we talking about?
(Is that related to https://crbug.com/633614 ?)
For context, I jogged Eran's memory off-list, but Eran was going through all 'application' targets and places that setup HTTP loading stacks or SSL sockets to evaluate with their owners what the likely CT policy should be for those clients.
> c) If embedders wish, they can indicate they support CT by initializing a CTVerifier (really: a MultiLogCTVerifier), for which they will provide up to date CT information

As a downstream that needs to provide their own URLRequestContext, is it enough to add a call to AddLogs(net::ct::CreateLogVerifiersForKnownLogs())? I'm asking in particular because the lists in ct_known_logs_static-inc.h evolves over time and the changes done there might not reach my own project immediately. Is that OK or would I be better off just accepting all certificates as compliant?
In general, if you don't have an update mechanism that can reach the same population percentages in the same timeframe (6 weeks), and don't have the ability to inform users when they're woefully out of date, you've already got big security problems, so you're probably not "worse' off by disabling CT enforcement.
OK, let me just check if I understood the whole mechanism correctly.

Anyone actively doing CT verification must ensure Chromium's log list reaches their user base around the same time new Google Chrome releases are made, otherwise there are two risks:
1) Logs which have since been disqualified upstream will still be trusted.
2) Logs which have since been included upstream will not be trusted.

And all CT validation will start failing after 70 days (though this is no longer a fatal error).

Is that a fair assessment?
Correct.

And if you wish to disable CT, you can supply a DoNothingCTVerifier ( https://cs.chromium.org/chromium/src/net/cert/do_nothing_ct_verifier.h?rcl=0&l=14 ) and a CTPolicyEnforcer that says everything complies with your CT policies. The default CTPolicyEnforcer will otherwise enforce the security-relevant CT policies (requiring CT for EV certificates, and requiring CT as defined by the Chromium CT Policy)
Noted, thank you very much for the information.

Comment 14 by eranm@chromium.org, Jun 19 2017

Status: Archived (was: Assigned)

Sign in to add a comment