Chrome · Navigation
CVE-2026-15130
Logic Error in Navigation
Overview
High
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Files Changed
content/browser/renderer_host/navigation_request.cc
Patch
From 85fede76fe078d4ea9622a0c37b81c6852b0cf93 Mon Sep 17 00:00:00 2001
From: Alex Moshchuk <alexmos@chromium.org>
Date: Tue, 23 Jun 2026 14:10:35 -0700
Subject: [PATCH] Restore CHECK for CanAccessOrigin().
The CanAccessOrigin() check in
NavigationRequest::GetOriginForURLLoaderFactoryAfterResponse() was
always a CHECK to begin with and was incorrectly downgraded to a DCHECK
in https://chromium-review.googlesource.com/c/chromium/src/+/7748832.
Note: there was always an ongoing trickle of known crashes resulting
from this check (going back to at least 2020), and this is tracked is
issues such as https://crbug.com/469092870 and
https://crbug.com/463029421. These reports will probably reappear once
this CL lands and might be seen as a new spike; please avoid reverting
this CL due to that, as this check turns potential security problems
into stability ones, so it's important to keep.
Bug: 526541544
Change-Id: Ib077b83303fb8633d60b773a30529900008b62a7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7986809
Commit-Queue: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Charlie Reis <creis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1651274}
---
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
index f638782..5bd7686 100644
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -9722,14 +9722,16 @@
// policy of the process being used. This is because the content is loaded
// from the MHTML archive within the process. There are no data loaded from
// the network.
+ //
+ // Note: This is a security-critical check that needs to be a CHECK rather
+ // than a DCHECK, and it should never be reverted, even if there are crashes
+ // in the wild.
if (HasRenderFrameHost() &&
!GetRenderFrameHost()->ShouldBypassSecurityChecksForErrorPage(this) &&
!IsForMhtmlSubframe()) {
int process_id = GetRenderFrameHost()->GetProcess()->GetDeprecatedID();
auto* policy = ChildProcessSecurityPolicyImpl::GetInstance();
- // TODO(https://crbug.com/526541544): CHECK-exclusion: Convert to CHECK once
- // we are sure this isn't hit.
- DCHECK(policy->CanAccessOrigin(
+ CHECK(policy->CanAccessOrigin(
process_id, origin,
ChildProcessSecurityPolicyImpl::AccessType::kCanCommitNewOrigin));
}
Loading diff…
Original Bug Report
reported by ar...@chromium.org
[DCHECK-to-CHECK] NavigationRequest::GetOriginForURLLoaderFactoryAfterResponse, failing DCHECK(policy->CanAccessOrigin(
This bug is part of the project: http://go/check-content-navigation (Systematic Conversion of DCHECKs to CHECKs in Core Navigation).
This specific DCHECK was previously upgraded to a CHECK, but had to be reverted back to a DCHECK because it was reached in the wild (which occurred in about 15% of the converted instances).
This bug is tracked to resolve this specific invariant failure so we can eventually upgrade it back to a CHECK.
Context:
- File: content/browser/renderer_host/navigation_request.cc:9730
- Function: NavigationRequest::GetOriginForURLLoaderFactoryAfterResponse
- Source Link
9725: if (HasRenderFrameHost() &&
9726: !GetRenderFrameHost()->ShouldBypassSecurityChecksForErrorPage(this) &&
9727: !IsForMhtmlSubframe()) {
9728: int process_id = GetRenderFrameHost()->GetProcess()->GetDeprecatedID();
9729: auto* policy = ChildProcessSecurityPolicyImpl::GetInstance();
=> 9730: // TODO(https://crbug.com/526541544): CHECK-exclusion: Convert to CHECK once
9731: // we are sure this isn't hit.
9732: DCHECK(policy->CanAccessOrigin(
9733: process_id, origin,
9734: ChildProcessSecurityPolicyImpl::AccessType::kCanCommitNewOrigin));
9735: }
9736:
9737: return origin;
- http://go/check-content-navigation
- https://crbug.com/526541544
- https://source.chromium.org/chromium/chromium/src/+/main:content/browser/renderer_host/navigation_request.cc;l=9730?q="TODO(https://crbug.com/526541544)"&ss=chromium/chromium/src
- https://source.chromium.org/chromium/chromium/src/+/main:content/browser/renderer_host/navigation_request.cc;l=9730?q=%22TODO%28https%3A//crbug.com/526541544%29%22&ss=chromium%2Fchromium%2Fsrc
References
On This Page