diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index 8ad020fac68de..99fa1d403c03c 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -1918,6 +1918,17 @@ WebContents* Browser::OpenURLFromTab( load_params.transition_type = params.transition; load_params.referrer = content::Referrer(params.referrer.url, params.referrer.policy); + // SECURITY: This branch is reachable from a (compromised) renderer + // via FrameHost::OpenURL with disposition NEW_SPLIT_VIEW. Propagate + // the renderer-initiated/initiator fields so the partner-tab + // navigation is not laundered into a browser-initiated one (which + // would defeat Sec-Fetch-Site, SameSite=Strict, and the + // GetVisibleEntry pending-URL spoof guard). + load_params.is_renderer_initiated = params.is_renderer_initiated; + load_params.initiator_origin = params.initiator_origin; + load_params.initiator_process_id = params.initiator_process_id; + load_params.source_site_instance = params.source_site_instance; + load_params.has_user_gesture = params.user_gesture; tab->GetContents()->GetController().LoadURLWithParams(load_params); return source; }