Chrome · SiteSettings
CVE-2026-13941
Logic Error in SiteSettings
Overview
Medium
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Files Changed
components/browser_ui/site_settings/android/website_preference_bridge.cc
Patch
From e30c633e08c57ac7f44311287bf069123ac9e5b7 Mon Sep 17 00:00:00 2001 From: Christian Dullweber <[email protected]> Date: Thu, 21 May 2026 03:13:06 -0700 Subject: [PATCH] SiteSettings: Include separators when checking protocol prefixes Ensure that we correctly check schemes in site settings. Bug: 513183855 Change-Id: I661d950514091218deab3d7cbefef5a585d96da8 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7864642 Reviewed-by: Nicola Tommasi <[email protected]> Commit-Queue: Christian Dullweber <[email protected]> Cr-Commit-Position: refs/heads/main@{#1634155} --- diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc index 3999c5ed..915963b 100644 --- a/components/browser_ui/site_settings/android/website_preference_bridge.cc +++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc @@ -121,6 +121,9 @@ const char kHttpPortSuffix[] = ":80"; const char kHttpsPortSuffix[] = ":443"; const char kExtensionSlashSuffix[] = "/"; +constexpr char kHttpsPrefix[] = "https://"; +constexpr char kHttpPrefix[] = "http://"; +constexpr char kExtensionPrefix[] = "chrome-extension://"; BrowserContext* unwrap(const JavaRef<jobject>& jbrowser_context_handle) { return content::BrowserContextFromJavaHandle(jbrowser_context_handle); @@ -169,19 +172,19 @@ // HostContentSettingsMap: once to get all the 'interesting' hosts, and once // (on SingleWebsitePreferences) to find permission patterns which match // each of these hosts. - if (base::StartsWith(origin, url::kHttpsScheme, + if (base::StartsWith(origin, kHttpsPrefix, base::CompareCase::INSENSITIVE_ASCII) && base::EndsWith(origin, kHttpsPortSuffix, base::CompareCase::INSENSITIVE_ASCII)) { return ConvertUTF8ToJavaString( env, origin.substr(0, origin.size() - strlen(kHttpsPortSuffix))); - } else if (base::StartsWith(origin, url::kHttpScheme, + } else if (base::StartsWith(origin, kHttpPrefix, base::CompareCase::INSENSITIVE_ASCII) && base::EndsWith(origin, kHttpPortSuffix, base::CompareCase::INSENSITIVE_ASCII)) { return ConvertUTF8ToJavaString( env, origin.substr(0, origin.size() - strlen(kHttpPortSuffix))); - } else if (base::StartsWith(origin, content_settings::kExtensionScheme, + } else if (base::StartsWith(origin, kExtensionPrefix, base::CompareCase::INSENSITIVE_ASCII) && base::EndsWith(origin, kExtensionSlashSuffix, base::CompareCase::INSENSITIVE_ASCII)) {
Loading diff…
Original Bug Report
The reporter's bug is still restricted on the tracker. Chrome de-restricts security bugs ~30–90 days after the fix ships; a later run will backfill it here.
References
On This Page