Issue metadata
Sign in to add a comment
|
Security: Taps on the parent window pass through to an iframe in Android Chrome |
||||||||||||||||||||||
Issue descriptionVULNERABILITY DETAILS See https://bugs.chromium.org/p/chromium/issues/detail?id=864849 VERSION Application version: 67.0.3396.87 Operating system: Android 8.1.0; Nexus 6P Build/OPM6.171019.030.E1 REPRODUCTION CASE See https://bugs.chromium.org/p/chromium/issues/detail?id=864849 I just wanted to flag this to you, as some web apps might depend on 'protection screen' divs to prevent abuse. Especially embeddable widgets (ads, like/plus buttons, etc.) that cannot restrict framing, but when they detect a malicious embedder (or until they don't verify the embedder is benign), could use a protection screen div to restrict clicking inside the iframe.
,
Jul 24
molnarg@: How do embeddable widgets distinguish between benign vs malicious embedders? I can imagine some kind of postMessage exchange to establish trust, but it's hard to think of something that is broadly practical and couldn't be spoofed. i.e. It would be easier to whitelist valid embedders via CSP headers. I'm just trying to understand whether this has a security impact in practice.
,
Jul 25
It's more of anti-fraud technique. Consider this generic frame-busting method, that has optimal rendering performance, thanks to the asynchronous embedder check (and the transparent protection screen overlay that enables it) and being cache friendly. 1. The widget is a static, cache-able HTML, that has no header that prevents it from being embedded 2. The widget code starts loading the content and rendering the page once loaded independently of the embedder 3. There is a transparent overlay on top that prevents clicking anywhere in the widget until the overlay is removed 4. As soon as possible, start a postMessage based handshake with the embedder, so that the widget gets to know the origin of the embedder 5. Issue an XHR to the widget's server with the embedder origin as payload, that let's the server check the embedder (based on white/blacklist) 5. If the server response is 'allow', then the transparent overlay is removed, and clicking is enabled 6. If the server response is 'deny' then stop loading and delete the page's content This way, the rendering of the widget starts as soon as possible, since there's no need to wait for the result of the check, it happens asynchronously. There are no headers that would prevent caching, or server side processing in the critical path that would slow down the initial HTML response. I can't cite examples that use this pattern, as anti-fraud techniques are usually not public. But based on that this is the optimal performance solution for embeddable widgets, I suspect that it is used.
,
Jul 25
Thank you for providing more feedback. Adding the requester to the cc list. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Jul 25
I see, and I guess the advantage of that over whitelisting via CSP frame-src directives is that you get a dynamic list of legal embedders that don't have to be present in headers. It sounds like issue 864849 is only a problem if the transparent overlay is in a different frame than the vulnerable HTML though, right? If the overlay and the served content were in the same frame then mistargeting frames would be irrelevant. I suspect they actually are in different frames though, and this is a nested iframe scenario. cthomp@: This sounds like it would be reasonable to flag the problem as Severity-Low. Usually we would flag and RestrictView the original bug though, because it is awkward to have two bugs having the same problem, with one having security flags and the other not.
,
Jul 25
+mbarbella, -cthomp, reflecting security sheriff change-over.
,
Jul 25
Do we think the fix for Issue 864849 (which landed ~1 hour ago) is sufficient for the security concerns? (Adding some labels per suggestion of #5.)
,
Jul 25
It sounds like it, yes. The problem was just that touches were occasionally getting targeted to the wrong frame.
,
Jul 27
Marking this as fixed then. As this seems low severity, we likely wouldn't merge it back.
,
Jul 28
,
Nov 3
This bug has been closed for more than 14 weeks. Removing security view restrictions. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by cthomp@chromium.org
, Jul 23