Low CVSS 4.3 chrome Policy Bypass 🔧 Commit mapped

Overview

Low
Severity
4.3
CVSS
No
Exploited ITW
Fixed
Fix Status
ImpactInsufficient policy enforcement in Chrome for iOS
DescriptionInsufficient policy enforcement in Chrome for iOS
ComponentChrome for iOS
Sub-componentiOS
Bug ClassPolicy Bypass
Tracker523708527
Fix commit278dea1a5010 (chromium/src) +12/-11
CWECWE-346 (Origin validation error)
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
CISA KEVNot listed
CreditedGoogle
Reported2026-06-13 (per vendor advisory)
Fix landed2026-06-16 (public git)
Disclosed2026-07-29
Patch gap43 days — fix public in source before the advisory

Changed Functions

FunctionChangeNotes
if
components/webauthn/ios/passkey_java_script_feature.mm
modified

Files Changed

  • components/webauthn/ios/passkey_java_script_feature.mm
From 278dea1a5010f7c4dc7eebc0e86346cda6feacf5 Mon Sep 17 00:00:00 2001
From: Alexis Hétu <sugoi@chromium.org>
Date: Tue, 16 Jun 2026 05:51:44 -0700
Subject: [PATCH] [iOS] Enforce user gesture requirements for modal passkey requests

Consolidates and enforces user gesture validation for both modal
passkey registration and assertion requests, ensuring untrusted,
gestureless JavaScript events are correctly rejected and deferred
to the renderer.

Bug: 523708527
Change-Id: Ie9c78d2647c557881ad82313ec9d7e745767acd8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7943004
Reviewed-by: Tommy Martino <tmartino@chromium.org>
Reviewed-by: Sourav Uttam Sinha <sinhasourav@google.com>
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1647484}
---

diff --git a/components/webauthn/ios/passkey_java_script_feature.mm b/components/webauthn/ios/passkey_java_script_feature.mm
index d0724eb05..4d8c31d 100644
--- a/components/webauthn/ios/passkey_java_script_feature.mm
+++ b/components/webauthn/ios/passkey_java_script_feature.mm
@@ -89,8 +89,15 @@
   return output;
 }
 
-bool ValidateFeatureUsage(const PasskeyRequestParams& request_params) {
+bool ValidateFeatureUsage(const PasskeyRequestParams& request_params,
+                          bool has_user_interaction) {
   if (request_params.Type() == PasskeyRequestParams::RequestType::kModal) {
+    // Modal passkey registration or assertion is only allowed if it originates
+    // from a user gesture.
+    if (!has_user_interaction) {
+      return false;
+    }
+
     return base::FeatureList::IsEnabled(kIOSPasskeyModalLoginWithShim);
   } else {
     return base::FeatureList::IsEnabled(kIOSPasskeyConditionalLoginWithShim);
@@ -317,15 +324,8 @@
       return;
     }
 
-    if (!ValidateFeatureUsage(*registration_request_params)) {
-      // TODO(crbug.com/460485333): Log the error.
-      passkey_tab_helper->DeferToRenderer(std::move(*request_info),
-                                          registration_request_params->Type());
-      return;
-    }
-
-    // Passkey creation is only allowed if it originates from a user gesture.
-    if (!message.is_user_interacting()) {
+    if (!ValidateFeatureUsage(*registration_request_params,
+                              message.is_user_interacting())) {
       // TODO(crbug.com/460485333): Log the error.
       passkey_tab_helper->DeferToRenderer(std::move(*request_info),
                                           registration_request_params->Type());
@@ -349,7 +349,8 @@
       return;
     }
 
-    if (!ValidateFeatureUsage(*assertion_request_params)) {
+    if (!ValidateFeatureUsage(*assertion_request_params,
+                              message.is_user_interacting())) {
       // TODO(crbug.com/460485333): Log the error.
       passkey_tab_helper->DeferToRenderer(std::move(*request_info),
                                           assertion_request_params->Type());
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.