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 <dullweber@chromium.org>
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 <tommasin@chromium.org>
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
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