Chrome · SignIn
CVE-2026-14027
UAF in SignIn
Overview
Low
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Changed Functions
| Function | Change | Notes |
|---|---|---|
ifchrome/browser/ui/webui/signin/turn_sync_on_helper_delegate_impl.cc |
modified |
Files Changed
chrome/browser/ui/webui/signin/turn_sync_on_helper_delegate_impl.cc
Patch
From b867f0ed3dc1854a05561e526ccb2442d4fd78e4 Mon Sep 17 00:00:00 2001
From: David Roger <droger@chromium.org>
Date: Wed, 13 May 2026 06:12:54 -0700
Subject: [PATCH] [sync] Reset observation in OnSyncConfirmationUIClosed
This is a fix for a bug that may happen when triggering two sync dialogs
at the same time. Opening a second dialogs closes the first dialog, and,
if the widget closes synchronously, OnSyncConfirmationUIClosed() can be
re-entrant (it is called again from
`signin_view_controller()->CloseModalSignin()`) and ultimately this
results in a UaF.
`OnSyncConfirmationUIClosed()` is meant to be called only once, so this
CL unregisters the observer immediately after it is called. This should
fix the re-entrant calls, and as a consequence the UaF too.
There is no regression test, because in all my attempts the widget was
destroying asynchronously, and I think the bug can only trigger if the
widget is destroyed synchronously. It is possible that the widget
implementation changed since the bug was filed, and it no longer
happens.
Fixed: 361375787
Change-Id: I1c5605a157a3ceba058093595dc104c026afc3a6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7840682
Reviewed-by: Mihai Sardarescu <msarda@chromium.org>
Commit-Queue: David Roger <droger@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1629915}
---
diff --git a/chrome/browser/ui/webui/signin/turn_sync_on_helper_delegate_impl.cc b/chrome/browser/ui/webui/signin/turn_sync_on_helper_delegate_impl.cc
index ae76c04..330d07a 100644
--- a/chrome/browser/ui/webui/signin/turn_sync_on_helper_delegate_impl.cc
+++ b/chrome/browser/ui/webui/signin/turn_sync_on_helper_delegate_impl.cc
@@ -201,6 +201,7 @@
void TurnSyncOnHelperDelegateImpl::OnSyncConfirmationUIClosed(
LoginUIService::SyncConfirmationUIClosedResult result) {
+ scoped_login_ui_service_observation_.Reset();
DCHECK(sync_confirmation_callback_);
// Treat closing the ui as an implicit ABORT_SYNC action.
if (result == LoginUIService::UI_CLOSED) {
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