Commit 5aa20e27 authored by Karan Bhatia's avatar Karan Bhatia Committed by Commit Bot

Extensions: Remove all references to chrome-extension-resource scheme.

The chrome-extension-resource scheme was added in
https://chromiumcodereview.appspot.com/9909019/ but was never used. The code for
it was eventually removed in https://codereview.chromium.org/2574763003.

This CL removes any remaining references to it. Behavior changes:
- Any extensions using the scheme in their CSP will get an install warning as
  the token will be recognised as an unsafe token. Note we don't show install
  warnings for packaged extensions.
- The default CSP for apps and extensions now excludes the scheme. However this
  should not be an issue since the scheme isn't a valid scheme and can't be
  used.

BUG=674272

Change-Id: I4494e901d147627adebc62c59ce0e021876786a1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1719333Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Commit-Queue: Karan Bhatia <karandeepb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#686197}
parent 43e1e4d1
...@@ -52,10 +52,10 @@ you from doing the following:</p> ...@@ -52,10 +52,10 @@ you from doing the following:</p>
<pre> <pre>
default-src 'self'; default-src 'self';
connect-src * data: blob: filesystem:; connect-src * data: blob: filesystem:;
style-src 'self' data: chrome-extension-resource: 'unsafe-inline'; style-src 'self' data: 'unsafe-inline';
img-src 'self' data: chrome-extension-resource:; img-src 'self' data:;
frame-src 'self' data: chrome-extension-resource:; frame-src 'self' data:;
font-src 'self' data: chrome-extension-resource:; font-src 'self' data:;
media-src * data: blob: filesystem:; media-src * data: blob: filesystem:;
</pre> </pre>
......
...@@ -90,8 +90,8 @@ ...@@ -90,8 +90,8 @@
<ul> <ul>
<li> <li>
<p> <p>
A content security policy is set to <code>`script-src 'self' A content security policy is set to <code>`script-src 'self';
chrome-extension-resource:; object-src 'self'</code> by default. This has object-src 'self';</code> by default. This has
a variety of impacts on developers, described at length in the a variety of impacts on developers, described at length in the
<a href="../extensions/contentSecurityPolicy"> <a href="../extensions/contentSecurityPolicy">
<code>content_security_policy</code></a> documentation. <code>content_security_policy</code></a> documentation.
......
...@@ -261,13 +261,6 @@ std::string GetSecureDirectiveValues( ...@@ -261,13 +261,6 @@ std::string GetSecureDirectiveValues(
} else if ((options & OPTIONS_ALLOW_UNSAFE_EVAL) && } else if ((options & OPTIONS_ALLOW_UNSAFE_EVAL) &&
source_lower == "'unsafe-eval'") { source_lower == "'unsafe-eval'") {
is_secure_csp_token = true; is_secure_csp_token = true;
} else if (base::StartsWith(source_lower, "chrome-extension-resource:",
base::CompareCase::SENSITIVE)) {
// The "chrome-extension-resource" scheme has been removed from the
// codebase, but it may still appear in existing CSPs. We continue to
// allow it here for compatibility. Requests on this scheme will not
// return any kind of network response.
is_secure_csp_token = true;
} }
if (is_secure_csp_token) { if (is_secure_csp_token) {
......
...@@ -248,9 +248,8 @@ TEST(ExtensionCSPValidator, IsSecure) { ...@@ -248,9 +248,8 @@ TEST(ExtensionCSPValidator, IsSecure) {
EXPECT_TRUE(CheckCSP(SanitizeCSP( EXPECT_TRUE(CheckCSP(SanitizeCSP(
"default-src 'self' chrome-extension://aabbcc;", "default-src 'self' chrome-extension://aabbcc;",
OPTIONS_ALLOW_UNSAFE_EVAL))); OPTIONS_ALLOW_UNSAFE_EVAL)));
EXPECT_TRUE(CheckCSP(SanitizeCSP( EXPECT_TRUE(
"default-src 'self' chrome-extension-resource://aabbcc;", CheckCSP(SanitizeCSP("default-src 'self';", OPTIONS_ALLOW_UNSAFE_EVAL)));
OPTIONS_ALLOW_UNSAFE_EVAL)));
EXPECT_TRUE(CheckCSP( EXPECT_TRUE(CheckCSP(
SanitizeCSP("default-src 'self' https:", OPTIONS_ALLOW_UNSAFE_EVAL), SanitizeCSP("default-src 'self' https:", OPTIONS_ALLOW_UNSAFE_EVAL),
"default-src 'self';", InsecureValueWarning("default-src", "https:"))); "default-src 'self';", InsecureValueWarning("default-src", "https:")));
......
...@@ -29,7 +29,7 @@ using csp_validator::SanitizeContentSecurityPolicy; ...@@ -29,7 +29,7 @@ using csp_validator::SanitizeContentSecurityPolicy;
namespace { namespace {
const char kDefaultContentSecurityPolicy[] = const char kDefaultContentSecurityPolicy[] =
"script-src 'self' blob: filesystem: chrome-extension-resource:; " "script-src 'self' blob: filesystem:; "
"object-src 'self' blob: filesystem:;"; "object-src 'self' blob: filesystem:;";
const char kDefaultIsolatedWorldCSP_BypassMainWorld[] = ""; const char kDefaultIsolatedWorldCSP_BypassMainWorld[] = "";
...@@ -40,13 +40,12 @@ const char kDefaultSandboxedPageContentSecurityPolicy[] = ...@@ -40,13 +40,12 @@ const char kDefaultSandboxedPageContentSecurityPolicy[] =
"sandbox allow-scripts allow-forms allow-popups allow-modals; " "sandbox allow-scripts allow-forms allow-popups allow-modals; "
"script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"; "script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';";
#define PLATFORM_APP_LOCAL_CSP_SOURCES \ #define PLATFORM_APP_LOCAL_CSP_SOURCES "'self' blob: filesystem: data:"
"'self' blob: filesystem: data: chrome-extension-resource:"
// clang-format off // clang-format off
const char kDefaultPlatformAppContentSecurityPolicy[] = const char kDefaultPlatformAppContentSecurityPolicy[] =
// Platform apps can only use local resources by default. // Platform apps can only use local resources by default.
"default-src 'self' blob: filesystem: chrome-extension-resource:;" "default-src 'self' blob: filesystem:;"
// For remote resources, they can fetch them via XMLHttpRequest. // For remote resources, they can fetch them via XMLHttpRequest.
" connect-src * data: blob: filesystem:;" " connect-src * data: blob: filesystem:;"
// And serve them via data: or same-origin (blob:, filesystem:) URLs // And serve them via data: or same-origin (blob:, filesystem:) URLs
...@@ -61,8 +60,7 @@ const char kDefaultPlatformAppContentSecurityPolicy[] = ...@@ -61,8 +60,7 @@ const char kDefaultPlatformAppContentSecurityPolicy[] =
// streaming or partial buffering. // streaming or partial buffering.
" media-src * data: blob: filesystem:;" " media-src * data: blob: filesystem:;"
// Scripts are allowed to use WebAssembly // Scripts are allowed to use WebAssembly
" script-src 'self' blob: filesystem: chrome-extension-resource:" " script-src 'self' blob: filesystem: 'wasm-eval';";
" 'wasm-eval';";
// clang-format on // clang-format on
int GetValidatorOptions(Extension* extension) { int GetValidatorOptions(Extension* extension) {
......
...@@ -26,7 +26,7 @@ const char kDefaultSandboxedPageCSP[] = ...@@ -26,7 +26,7 @@ const char kDefaultSandboxedPageCSP[] =
"sandbox allow-scripts allow-forms allow-popups allow-modals; " "sandbox allow-scripts allow-forms allow-popups allow-modals; "
"script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"; "script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';";
const char kDefaultExtensionPagesCSP[] = const char kDefaultExtensionPagesCSP[] =
"script-src 'self' blob: filesystem: chrome-extension-resource:; " "script-src 'self' blob: filesystem:; "
"object-src 'self' blob: filesystem:;"; "object-src 'self' blob: filesystem:;";
const char kDefaultIsolatedWorldCSP_BypassMainWorld[] = ""; const char kDefaultIsolatedWorldCSP_BypassMainWorld[] = "";
const char kDefaultIsolatedWorldCSP_Secure[] = const char kDefaultIsolatedWorldCSP_Secure[] =
......
...@@ -298,7 +298,7 @@ ...@@ -298,7 +298,7 @@
DOM Mutation DOM Mutation
</message> </message>
<message name="IDS_DEVTOOLS_f99d691018d8f37dda14a9cd29c1d1ee" desc="Text in DOMDebugger Model"> <message name="IDS_DEVTOOLS_f99d691018d8f37dda14a9cd29c1d1ee" desc="Text in DOMDebugger Model">
Script blocked due to Content Security Policy directive: <ph name="AUXDATA__DIRECTIVETEXT__">$1s<ex>"script-src 'self' chrome-extension-resource:"</ex></ph> Script blocked due to Content Security Policy directive: <ph name="AUXDATA__DIRECTIVETEXT__">$1s<ex>"script-src 'self'"</ex></ph>
</message> </message>
<message name="IDS_DEVTOOLS_fa79cdac06c8d2166fd5cda17ccbc0ce" desc="Text in Server Timing"> <message name="IDS_DEVTOOLS_fa79cdac06c8d2166fd5cda17ccbc0ce" desc="Text in Server Timing">
Extraneous trailing characters. Extraneous trailing characters.
......
...@@ -7,7 +7,7 @@ var tests = [ ...@@ -7,7 +7,7 @@ var tests = [
['yes', 'script-src\thttp://127.0.0.1:8000', 'resources/script.js'], ['yes', 'script-src\thttp://127.0.0.1:8000', 'resources/script.js'],
['yes', 'script-src http://127.0.0.1:8000 \t ', 'resources/script.js'], ['yes', 'script-src http://127.0.0.1:8000 \t ', 'resources/script.js'],
['yes', 'script-src http://127.0.0.1:* ', 'resources/script.js'], ['yes', 'script-src http://127.0.0.1:* ', 'resources/script.js'],
['yes', 'script-src \'self\' chrome-extension-resource: ;', 'resources/script.js'], ['yes', 'script-src \'self\' ;', 'resources/script.js'],
]; ];
</script> </script>
</head> </head>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment