Security: Chrome extensions UI does not respect IDN display policy
Reported by
samreid...@gmail.com,
Jul 18 2017
|
||||||||||||||||||||
Issue description
VULNERABILITY DETAILS
Google Chrome doesn't display IDNs as punycode in the "Add Extension" popup window displayed to users when they choose to install a Chrome extension. Additionally, IDNs are not displayed as punycode in the "Details" popup window in chrome://extensions/ - leaving them vulnerable to IDN homograph attacks. Additionally, as users are not able to select text within these popup windows, there is no way for a user to easily check for and detect an IDN homograph attack by themselves.
VERSION
Chrome Version: 59.0.3071.115 (Official Build) (64-bit) (cohort: Stable)
Operating System: Windows 10 Pro 1703 & Ubuntu 16.04.1
REPRODUCTION CASE
An attacker would exploit this vulnerability through a Chrome extension with attacker-owned IDNs in the permissions declaration of the manifest, for example:
"permissions": [
"https://аррӏе.com/",
"https://ɡoogle.com/"
]
Victims installing the malicious extension are prompted to accept the extension's ability to read and change data on domains that appear to be innocuous, unknowingly permitting an attacker to execute malicious scripts from these IDNs. I have attached a valid Chrome extension manifest.json file that demonstrates this vulnerability.
Thanks for your time.
,
Jul 18 2017
Any thoughts Devlin?
,
Jul 18 2017
I'm also dubious about the security aspect of this (accessing spoofy-google actually sounds quite a bit less harmful than accessing real-google and stealing my data), but I'd be supportive of a change for consistency and clarity. mkwst@, is there a preferred canonicalization function to use for things like this?
,
Jul 18 2017
I believe url_formatter::FormatUrlForSecurityDisplay is the function to use.
,
Jul 18 2017
As I understand this, the impact is that a user might think they're agreeing to execute scripts from google.com, and the extension will actually execute scripts from evil-google.com. Now there are a number of qualifiers on this including that the extension could just include the scripts directly, and that it's bound to it's own spoofed domain name. I'll tag this as low.
,
Jul 18 2017
,
Jul 18 2017
,
Jul 19 2017
RE #5: I thought the Permissions node in the manifest gates what domains the extension is allowed to access and script /against/, not what domains the extension is allowed to source SCRIPTS /from/. I wasn't aware of restrictions (aside from the manifest's CSP, if any) on where an extension can source script from?
,
Jul 19 2017
RE #8 this is a fair point, in my testing it seems the CSP is the only factor inhibiting an extension from loading scripts from a third-party domain. However, an attacker still has the ability to coerce users into accepting permissions to access and modify content on domains they were not expecting which could aid in deception attacks.
,
Jul 19 2017
,
Aug 28 2017
catmullings@, this could be a good one for you to tackle.
,
Aug 30 2017
,
Sep 1 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/504e0c45030f76bffda93f0857e7595216d6e7a4 commit 504e0c45030f76bffda93f0857e7595216d6e7a4 Author: Catherine Mullings <catmullings@chromium.org> Date: Fri Sep 01 01:04:46 2017 Ensure IDN domains are in punycode format in extension host permissions Today in extension dialogs and bubbles, IDN domains in host permissions are not displayed in punycode format. There is a low security risk that granting such permission would allow extensions to interact with pages using spoofy IDN domains. Note that this does not affect the omnibox, which would represent the origin properly. To address this issue, this CL converts IDN domains in host permissions to punycode format. Bug: 745580 Change-Id: Ifc04030fae645f8a78ac8fde170660f2d514acce Reviewed-on: https://chromium-review.googlesource.com/644140 Commit-Queue: catmullings <catmullings@chromium.org> Reviewed-by: Istiaque Ahmed <lazyboy@chromium.org> Reviewed-by: Tommy Li <tommycli@chromium.org> Cr-Commit-Position: refs/heads/master@{#499090} [modify] https://crrev.com/504e0c45030f76bffda93f0857e7595216d6e7a4/chrome/common/extensions/permissions/chrome_permission_message_provider_unittest.cc [modify] https://crrev.com/504e0c45030f76bffda93f0857e7595216d6e7a4/extensions/common/DEPS [modify] https://crrev.com/504e0c45030f76bffda93f0857e7595216d6e7a4/extensions/common/permissions/permission_message_util.cc
,
Sep 1 2017
,
Sep 1 2017
,
Sep 5 2017
,
Sep 11 2017
,
Sep 18 2017
The VRP panel look at look at this bug, but I'm sorry to say declined to reward (as is usually the case for low severity bugs). But thanks for the report!
,
Oct 10 2017
,
Oct 10 2017
,
Oct 16 2017
,
Oct 18 2017
,
Dec 8 2017
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
,
Apr 25 2018
|
||||||||||||||||||||
►
Sign in to add a comment |
||||||||||||||||||||
Comment 1 by elawrence@chromium.org
, Jul 18 2017Summary: Security: Chrome extensions UI does not respect IDN display policy (was: Security: Chrome extensions bypass IDN policy checks)