Chrome · BrowserTag
CVE-2026-113047
Memory Corruption in BrowserTag
Overview
Low
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Changed Functions
| Function | Change | Notes |
|---|---|---|
ifextensions/renderer/resources/guest_view/web_view/web_view.js |
modified |
Files Changed
extensions/browser/api/guest_view/web_view/web_view_internal_api.ccextensions/renderer/resources/guest_view/web_view/web_view.jschrome/test/data/webui/webview/webview_untrusted_test.tstools/typescript/definitions/webview_tag.d.ts
Patch
From 12f1c9e50f4a786349339a531891740f78faadae Mon Sep 17 00:00:00 2001
From: Kevin McNee <mcnee@chromium.org>
Date: Wed, 23 Sep 2026 12:15:42 -0700
Subject: [PATCH] Restrict the use of the find webview tag API in chrome-untrusted
See
https://chromium-review.googlesource.com/c/chromium/src/+/8266642
We now cover the find method as well.
Fixed: 553267541
Change-Id: I16485ad2911f497e72500dcefcaa74a1b6176ed8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8427054
Auto-Submit: Kevin McNee <mcnee@chromium.org>
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Rebekah Potter <rbpotter@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1703656}
---
diff --git a/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc b/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
index 7e9cbc3f..847de71 100644
--- a/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
+++ b/extensions/browser/api/guest_view/web_view/web_view_internal_api.cc
@@ -866,6 +866,9 @@
}
ExtensionFunction::ResponseAction WebViewInternalFindFunction::Run() {
+ EXTENSION_FUNCTION_VALIDATE(
+ !source_url().SchemeIs(content::kChromeUIUntrustedScheme));
+
std::optional<web_view_internal::Find::Params> params =
web_view_internal::Find::Params::Create(args());
EXTENSION_FUNCTION_VALIDATE(params);
diff --git a/extensions/renderer/resources/guest_view/web_view/web_view.js b/extensions/renderer/resources/guest_view/web_view/web_view.js
index 3d19f039..31262ad 100644
--- a/extensions/renderer/resources/guest_view/web_view/web_view.js
+++ b/extensions/renderer/resources/guest_view/web_view/web_view.js
@@ -228,6 +228,18 @@
return true;
};
+WebViewImpl.prototype.find = function(searchText, options, callback) {
+ if (location.protocol === 'chrome-untrusted:') {
+ throw new Error(
+ WebViewConstants.ERROR_MSG_UNSUPPORTED_API_IN_CHROME_UNTRUSTED);
+ }
+ if (!this.guest.getId()) {
+ return false;
+ }
+ WebViewInternal.find(this.guest.getId(), searchText, options, callback);
+ return true;
+};
+
WebViewImpl.prototype.setUserAgentOverride = function(userAgentOverride) {
this.userAgentOverride = userAgentOverride;
if (!this.guest.getId()) {
diff --git a/tools/typescript/definitions/webview_tag.d.ts b/tools/typescript/definitions/webview_tag.d.ts
index 9cfcf06..0bca928 100644
--- a/tools/typescript/definitions/webview_tag.d.ts
+++ b/tools/typescript/definitions/webview_tag.d.ts
@@ -359,6 +359,9 @@
captureVisibleRegion(
options: extensionTypes.ImageDetails|undefined|null,
callback: (dataUrl: string) => void): void;
+ find(
+ searchText: string, options?: FindOptions,
+ callback?: (results?: FindCallbackResults) => void): void;
}
export function setAudioMuted(mute: boolean): void;
diff --git a/chrome/test/data/webui/webview/webview_untrusted_test.ts b/chrome/test/data/webui/webview/webview_untrusted_test.ts
index 2ce33ef..94d892f 100644
--- a/chrome/test/data/webui/webview/webview_untrusted_test.ts
+++ b/chrome/test/data/webui/webview/webview_untrusted_test.ts
@@ -40,6 +40,9 @@
assertThrows(() => {
webview.loadDataWithBaseUrl('data:text/html,test', 'https://example.com');
});
+ assertThrows(() => {
+ webview.find('test', {}, () => {});
+ });
});
test('PermissionRequestAutoDenyInUntrusted', async () => {
Loading diff…
Regression Test / PoC
shipped with the fix
diff --git a/chrome/test/data/webui/webview/webview_untrusted_test.ts b/chrome/test/data/webui/webview/webview_untrusted_test.ts
index 2ce33ef..94d892f 100644
--- a/chrome/test/data/webui/webview/webview_untrusted_test.ts
+++ b/chrome/test/data/webui/webview/webview_untrusted_test.ts
@@ -40,6 +40,9 @@
assertThrows(() => {
webview.loadDataWithBaseUrl('data:text/html,test', 'https://example.com');
});
+ assertThrows(() => {
+ webview.find('test', {}, () => {});
+ });
});
test('PermissionRequestAutoDenyInUntrusted', async () => {
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