Chrome · CustomTabs
CVE-2026-79152
Logic Error in CustomTabs
Overview
Low
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Changed Functions
| Function | Change | Notes |
|---|---|---|
ifchrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java |
modified |
Files Changed
chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.javachrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
Patch
From 0e64745bdd4a1534f8fe63a532fb25d8d44d18c5 Mon Sep 17 00:00:00 2001 From: Mohamed Adel <[email protected]> Date: Mon, 13 Jul 2026 16:03:16 -0700 Subject: [PATCH] Update intent URL extraction for EXTRA_HEADERS in Custom Tabs Ensure that EXTRA_HEADERS intent evaluation properly uses the navigated URL rather than relying solely on the initial intent state for validation. TAG=agy Bug: 533083384 Change-Id: If7f794ed46742776edfb970d524733861f445880 Fixed: 533083384 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8086206 Reviewed-by: Wenyu Fu <[email protected]> Commit-Queue: Moe Adel <[email protected]> Reviewed-by: Sinan Sahin <[email protected]> Cr-Commit-Position: refs/heads/main@{#1661446} --- diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java index 386acc6..abaf8cb 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java @@ -732,7 +732,7 @@ if (referrer != null) { params.setReferrer(new Referrer(referrer, getReferrerPolicyFromIntent(intent))); } - String headers = getExtraHeadersFromIntent(intent); + String headers = getExtraHeadersFromIntent(intent, params.getUrl()); if (headers != null) params.setVerbatimHeaders(headers); } @@ -915,13 +915,25 @@ * @param intent The intent containing the bundle extra with the HTTP headers. */ public static @Nullable String getExtraHeadersFromIntent(Intent intent) { + return getExtraHeadersFromIntent(intent, IntentHandler.getUrlFromIntent(intent)); + } + + /** + * Returns a String (or null) containing the extra headers sent by the intent, if any. + * + * <p>This methods skips the referrer header. + * + * @param intent The intent containing the bundle extra with the HTTP headers. + * @param url The destination URL to verify first party origin against. + */ + public static @Nullable String getExtraHeadersFromIntent(Intent intent, @Nullable String url) { Bundle bundleExtraHeaders = IntentUtils.safeGetBundleExtra(intent, Browser.EXTRA_HEADERS); if (bundleExtraHeaders == null) return null; StringBuilder extraHeaders = new StringBuilder(); boolean fromChrome = IntentHandler.wasIntentSenderChrome(intent); boolean shouldAllowNonSafelistedHeaders = - CustomTabsConnection.getInstance().isFirstPartyOriginForIntent(intent); + CustomTabsConnection.getInstance().isFirstPartyOriginForIntent(intent, url); for (String key : bundleExtraHeaders.keySet()) { String value = bundleExtraHeaders.getString(key); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java index a8e73f5..268f1ab 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java @@ -1007,10 +1007,20 @@ * @param intent The intent to verify. */ public boolean isFirstPartyOriginForIntent(Intent intent) { + return isFirstPartyOriginForIntent(intent, IntentHandler.getUrlFromIntent(intent)); + } + + /** + * Returns whether an intent is first-party with respect to its session, that is if the + * application linked to the session has a relation with the provided origin. + * + * @param intent The intent to verify. + * @param url The url to verify against. + */ + public boolean isFirstPartyOriginForIntent(Intent intent, @Nullable String url) { SessionHolder<?> session = SessionHolder.getSessionHolderFromIntent(intent); if (session == null) return false; - String url = IntentHandler.getUrlFromIntent(intent); if (url == null) return false; Origin origin = Origin.create(url);
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