Please note that the main discussion for this is intended to be on the [email protected] mailing list (https://groups.google.com/a/chromium.org/forum/#!forum/blink-dev). However, to alert relevant groups of the intent, we have bcc’d the following lists on this email:
[email protected]
We want to start applying the concepts in https://w3c.github.io/webappsec/specs/powerfulfeatures/ to features that have already shipped and which do not meet the (new, not present at the time) requirements. We want to start by requiring secure origins for these existing features:
- Device motion / orientation
- EME
- Fullscreen
- Geolocation
- getUserMedia
As with gradually marking HTTP as non-secure (https://www.chromium.org/Home/chromium-security/marking-http-as-non-secure), we expect to gradually migrate these features to secure-only, based on thresholds of usage, starting with lowest usage and moving towards higher. We also expect to gradually indicate in the UX that the features are deprecated for non-secure origins.
The deprecation strategy for each of these features is not decided on and may very well differ from feature to feature. We don’t currently know what the thresholds will be, or how heavily used the features are on what kinds of origins. We are in the process of gathering data, and will report back when we have it. There are no firm plans at all at this time, other than eventual deprecation. We intend for this to stimulate a public discussion of the best way to approach this deprecation. So, to that point, we'd love to hear what the community thinks.
Thanks,
Joel Weinberger, Chrome Security
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
I should also mention that, generically, we believe all of these features fit under the "requires privileged context" definition as proposed in https://w3c.github.io/webappsec/specs/powerfulfeatures/#feature-requires-privilege. If you disagree, of course please make the case.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
A good first step would be to add use counters in all of the places where an API would fail on an insecure origin.
I note that Fullscreen it isn't in the Privileged Contexts list, but that's OK, I think these changes should be accepted into the respective specs, even if optional to implement. For example, the fullscreen element ready check would be the place for Fullscreen. Otherwise there's a chance that the point of failure (which could be observable) is different in different browsers.
What is going to be the protocol for development environment? Should one deal with ssl just to quickly test out the code?
What if a service streams video, which requires full screen feature? It takes quite a bit more compute power to pack it into encrypted connection, and what if the video is not of any value as a secure content. Why should people be forced to encrypt and decrypt spending extra power (battery, in case of portable devices) on it?
SSL does not guarantee the security de-facto.
Also, there is plenty of personal data that is being passed through a non-encrypted connection, which is way more valuable.
adding these restrictions is equivalent to telling developers that they must now pay to unlock features of the browser.
I worry these changes will hamper creativity and innovation among hobbyists and independent developers. I cannot imagine jumping through hoops and SSL configurations just to get a small Canvas, WebGL or WebVR experiment off the ground.One of the most attractive aspects of web programming -- and one of the reasons the JavaScript creative/interactive community is currently booming with beginners and experts alike -- is the extremely low barrier to entry. Complex applications and rich artistic experiences utilizing device motion, webcam, geolocation, etc are easy to build, and even easier for others to open up and view.A few examples of projects and experiments that might be hampered with higher barriers and increased restrictions:
I did mention these concerns on Twitter and people proposed some possible solutions that would be much less onerous than fully restricting Fullscreen API to HTTPS only:- show originating URL on fullscreen warning
On Fri, Feb 27, 2015 at 7:48 PM, <[email protected]> wrote:[snip]I did mention these concerns on Twitter and people proposed some possible solutions that would be much less onerous than fully restricting Fullscreen API to HTTPS only:- show originating URL on fullscreen warningThis may be the core of some misunderstanding. When a browser receives a page over HTTP, there is no originating URL since anyone on its network could have replaced the content. HTTPS makes the difference between "Do you trust foo.com to use your X?" and "Do you trust the folks sitting at your coffee shop, your ISP, several other network providers, and foo.com to use your X?"
On Mar 1, 2015 5:01 PM, "Joel Weinberger" <[email protected]> wrote:
>
> The problem with fullscreen is not just privacy; it's very much about MitM attackers. If, for example, http://example.com has a legitimate use of fullscreen, and the user grants it, now *any* Man-in-the-Middle can silently use this fullscreen feature. They could inject a phishing attack, for example, Or, perhaps they could just abuse it for fullscreen ads. In any case, the concern isn't necessarily http://example.com, but an attacker.
Fullscreen, pointer lock, and keyboard lock have spoofing risks that multiply, the more of them you have enabled. It may make sense and be feasible to restrict combinations before restricting the individual features.
Jeffrey
If the thing that requires a secure origin is just
a nice-to-have, like say fullscreen mode
(Just guessing, I'm not an actual Web developer.)
On Thu, Mar 5, 2015 at 10:17 PM Katelyn Gadd <[email protected]> wrote:Given that fullscreen (just to pick one example) is out in the wild, I
think there will be significant UX issues if fullscreen API calls
suddenly start failing without any obvious reason. Most websites will
probably never be updated to communicate to the user that the problem
is the page being accessed from a non-secure origin.
If this is an issue, user agents can build UX elements that say "hey, this page tried to fullscreen, but it's on an insecure page, so we blocked it" (think the mixed-scripting shield in Chrome). I'm not saying that's something we will build, but it's something we can build, if necessary. It doesn't have to be application or site UX that alerts users.
So, to that point, we'd love to hear what the community thinks.
I'm sorry for not adding my voice to this discussion when it was
active, but I am also unhappy with the direction to make these
features HTTPS only. I've never seen a credible phishing attack from
full-screen content, and think that the visible warnings that already
show up for that feature as well as getUserMedia and geolocation are
sufficient to guard against attacks. There is a long tail of smaller
sites that use features like WebGL, WebVR, and camera input to deliver
really cool experiences, and it's infeasible for the site authors to
obtain SSL certificates. I am not an owner of one of these APIs but
believe that this effort is misguided and will drive users away from
browsers based on Blink.
-Ken
On Thu, Apr 30, 2015 at 12:11 PM, 'Brandon Jones' via blink-dev
<[email protected]> wrote:
> It's gotten a bit difficult to parse out what decisions have been made from
> this thread, so can we recap what's being done to address the following
> items? I feel like a lot of the concerns voiced earlier in the thread
> haven't been clearly accounted for.
>
> 1) Are we committing to having a exemption from these new policies for local
> testing?
> 2) What is strategy for pre-existing and widely used features? (Fullscreen,
> Device Motion, etc?) Joel's patch makes it sound like these will eventually
> be made HTTPS only, which I'm concerned will affect a long tail of content
> that utilizes the features but will never be updated.
> 3A) Is there a plan for getting setup of HTTPS to ~0 cost (in monetary,
> deployment, and privacy terms)? I recognize that this may not something that
> Google is capable of addressing single handedly.
> 3B) If not, what's being done to address concerns that these policies would
> exclude developers who, for whatever reason, are unable to host HTTPS
> content?
Also, in timely news, Mozilla announced their intent to depreciate HTTP, including a similar intent to deprecate powerful features: https://blog.mozilla.org/security/2015/04/30/deprecating-non-secure-http/
-Joel
Also, in timely news, Mozilla announced their intent to depreciate HTTP, including a similar intent to deprecate powerful features: https://blog.mozilla.org/security/2015/04/30/deprecating-non-secure-http/
-Joel
On Fri, May 1, 2015 at 1:44 AM, Joel Weinberger <[email protected]> wrote:Also, in timely news, Mozilla announced their intent to depreciate HTTP, including a similar intent to deprecate powerful features: https://blog.mozilla.org/security/2015/04/30/deprecating-non-secure-http/
-JoelThey're not talking about deprecating powerful features, but about deprecating *all* new features.
http://feross.org/html5-fullscreen-api-attack is the canonical demo of this (obviously, not an actual attack site).
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
If a man in the middle responds with their content for bankofamerica.com (the HTTP one), the full screen notice will say "bankofamerica.com", but that cannot happen with HTTPS.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
The MiTM thatbim more worried about is in the case that I've already granted fullscreen to an HTTP site, say nytimes.com. Then when a MiTM creates this fullscreen attack, there will be only the short, temporary warning, rather than an Allow/Blcok option.
I'd like to inform you that it's likely that the fullscreen button will break in google chrome and firefox in the forseeable future (mid 2015-2016). For security reasons browsers want to disable fullscreen if you are not serving the website over HTTPS.
Starting mid 2015 a new SSL Certificate Authority will offer free certificates (https://letsencrypt.org/)
Do you think you could host your site over HTTPS to prevent the fullscreen button breaking? If required, I could also remove the fullscreen button.
I appreciate the heads up.
Redesigning our site to use HTTPS is probably possible but I currently do not have time and resources to undertake that task.
Would it be possible to let me know when you get the information that the first production Chrome or Firefox is released? At that time I can certainly disable the fullscreen function myself as this is real easy to do in your .js file.
Specific to full-screen, wouldn't disabling the pinning be enough? That way, existing http based full screen would still work, but the user would have to authorize it every time, making sure it isn't abused without the user understanding that the current site is going full screen.
However, I do not suppose Adobe will even refuse. Remember that they invest in HTML5 lately and Flash is seriously decreasing in popularity.
I've been mulling this over, and I'm still not sure I understand why restricting Fullscreen to HTTPS makes users safer. Phistuck mentioned that a concern was a supposedly "safe" domain showing as the requestor of the fullscreen privileged, However in the demonstrated attack linked earlier (http://feross.org/html5-fullscreen-api-attack) the domain that displays on the Fullscreen Allow popup is feross.org, not bankofamerica.com. Assuming the user isn't paying attention to the domain displayed on the dialog this attack is still just as effective with HTTPS as it is HTTP. In order to avoid that you would have to have the aforementioned Man-in-the-middle attack in place to inject your false UI into the page and have it show as if it's from the correct domain. I understand that to be a very legitimate concern.
I totally agree with that argument. Perhaps the solution to making fullscreen more secure is to improve the Fullscreen Allow pop-up. For example, the popup should indicate whether the page is using http or https, show the lock icon, etc. Right now it just shows the domain. Also, the popup should reappear on navigation events that go to a different domain or that switch between http and https. The pivotal element of the fullscreen attack is to show a false location bar, in order to trick the user into trusting the page. Security-aware users know to use the location bar to decide whether to trust a page, so perhaps it would make sense to make the fullscreen pop-up look more like a location bar.
I've been mulling this over, and I'm still not sure I understand why restricting Fullscreen to HTTPS makes users safer. Phistuck mentioned that a concern was a supposedly "safe" domain showing as the requestor of the fullscreen privileged, However in the demonstrated attack linked earlier (http://feross.org/html5-fullscreen-api-attack) the domain that displays on the Fullscreen Allow popup is feross.org, not bankofamerica.com. Assuming the user isn't paying attention to the domain displayed on the dialog this attack is still just as effective with HTTPS as it is HTTP. In order to avoid that you would have to have the aforementioned Man-in-the-middle attack in place to inject your false UI into the page and have it show as if it's from the correct domain. I understand that to be a very legitimate concern.But... If my banking site has been MitM-ed don't I have a bigger problem? In the same context the attacker could easily install a simple listener that monitors keypress events and relays them to a third party. That would be far more invisible/harmful to users, especially since it doesn't involve fullscreen animations, screen flickering, or permissions dialogs, not to mention removes the need to mock up the targets UI for your own fullscreen page. To that end, I question what attacker with MitM injection capabilities would ever bother with fullscreen when there are far easier ways to do their dirty work.
So now the attacker has elevated what was merely an attack against the nytimes.com into an attack against all of Chrome. This is our primary concern.
The same groups working on HTTPS proposals are also working on CSP to
prevent XSS. It's not either/or.
We'd need a more concrete UX than "designing the fullscreen effect
more visibly", and nobody's come up with a way to make it more
persistently visible that doesn't break other use cases. e.g. keeping
it visible after an initial period actually breaks the video and
gaming use cases.
(Youtube and vimeo are fine: they're both HTTPS.)
(Youtube and vimeo are fine: they're both HTTPS.)
Native apps have typically *stronger* verification than HTTPS: code signing and trusted distribution channels with explicit user install gestures.