CVE-2025-12437
Overview
Changed Functions
| Function | Change | Notes |
|---|---|---|
ifchrome/browser/ui/page_info/chrome_page_info_delegate.cc |
modified |
Files Changed
chrome/browser/ui/page_info/chrome_page_info_delegate.ccchrome/browser/ui/page_info/page_info_infobar_delegate.ccchrome/browser/ui/page_info/page_info_infobar_delegate.h
Patch
From 90a4060a92d135f1789056c943cf7e535fa8603b Mon Sep 17 00:00:00 2001
From: Fiona Macintosh <fmacintosh@google.com>
Date: Tue, 07 Oct 2025 09:57:32 -0700
Subject: [PATCH] [Page Info] Fix use-after-free in infobar delegate
Bug: 446294487
Change-Id: Ica9a2077b88c019664b498f03d162802d44c7049
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7008715
Auto-Submit: Fiona Macintosh <fmacintosh@google.com>
Reviewed-by: Christian Dullweber <dullweber@chromium.org>
Commit-Queue: Fiona Macintosh <fmacintosh@google.com>
Cr-Commit-Position: refs/heads/main@{#1526366}
---
diff --git a/chrome/browser/ui/page_info/chrome_page_info_delegate.cc b/chrome/browser/ui/page_info/chrome_page_info_delegate.cc
index ff61c81e..a8cbccb 100644
--- a/chrome/browser/ui/page_info/chrome_page_info_delegate.cc
+++ b/chrome/browser/ui/page_info/chrome_page_info_delegate.cc
@@ -225,8 +225,7 @@
infobars::ContentInfoBarManager* infobar_manager =
infobars::ContentInfoBarManager::FromWebContents(web_contents_);
if (infobar_manager) {
- auto* delegate = PageInfoInfoBarDelegate::Create(infobar_manager);
- delegate->set_reload_type(reload_type);
+ PageInfoInfoBarDelegate::Create(infobar_manager, reload_type);
return true;
}
return false;
diff --git a/chrome/browser/ui/page_info/page_info_infobar_delegate.cc b/chrome/browser/ui/page_info/page_info_infobar_delegate.cc
index 54deb3c5..f3abf4f 100644
--- a/chrome/browser/ui/page_info/page_info_infobar_delegate.cc
+++ b/chrome/browser/ui/page_info/page_info_infobar_delegate.cc
@@ -18,16 +18,14 @@
#include "ui/base/l10n/l10n_util.h"
// static
-PageInfoInfoBarDelegate* PageInfoInfoBarDelegate::Create(
- infobars::ContentInfoBarManager* infobar_manager) {
- auto* delegate = new PageInfoInfoBarDelegate();
+void PageInfoInfoBarDelegate::Create(
+ infobars::ContentInfoBarManager* infobar_manager,
+ content::ReloadType reload_type) {
infobar_manager->AddInfoBar(
- CreateConfirmInfoBar(std::unique_ptr<ConfirmInfoBarDelegate>(delegate)));
- return delegate;
+ CreateConfirmInfoBar(std::unique_ptr<ConfirmInfoBarDelegate>(
+ new PageInfoInfoBarDelegate(reload_type))));
}
-PageInfoInfoBarDelegate::PageInfoInfoBarDelegate() = default;
-
PageInfoInfoBarDelegate::~PageInfoInfoBarDelegate() = default;
infobars::InfoBarDelegate::InfoBarIdentifier
diff --git a/chrome/browser/ui/page_info/page_info_infobar_delegate.h b/chrome/browser/ui/page_info/page_info_infobar_delegate.h
index 0727256..ba95e10d 100644
--- a/chrome/browser/ui/page_info/page_info_infobar_delegate.h
+++ b/chrome/browser/ui/page_info/page_info_infobar_delegate.h
@@ -24,15 +24,13 @@
// Creates a page info infobar and delegate and adds the infobar to
// |infobar_manager|.
- static PageInfoInfoBarDelegate* Create(
- infobars::ContentInfoBarManager* infobar_manager);
-
- void set_reload_type(content::ReloadType reload_type) {
- reload_type_ = reload_type;
- }
+ static void Create(
+ infobars::ContentInfoBarManager* infobar_manager,
+ content::ReloadType reload_type = content::ReloadType::NORMAL);
private:
- PageInfoInfoBarDelegate();
+ explicit PageInfoInfoBarDelegate(content::ReloadType reload_type)
+ : reload_type_(reload_type) {}
~PageInfoInfoBarDelegate() override;
// ConfirmInfoBarDelegate:
@@ -44,7 +42,7 @@
bool Accept() override;
// The type of reload the info bar should trigger when closed.
- content::ReloadType reload_type_ = content::ReloadType::NORMAL;
+ content::ReloadType reload_type_;
};
#endif // CHROME_BROWSER_UI_PAGE_INFO_PAGE_INFO_INFOBAR_DELEGATE_H_
Original Bug Report
heap-use-after-free C:\b\s\w\ir\cache\builder\src\chrome\browser\ui\page_info\page_info_infobar_dele
Steps to reproduce the problem
- i will be updating soon
Problem Description
================================================================= ==11072==ERROR: AddressSanitizer: heap-use-after-free on address 0x11f90ac4a4f0 at pc 0x7ffdc8b6a9fc bp 0x0021f1ffab70 sp 0x0021f1ffabb8 WRITE of size 4 at 0x11f90ac4a4f0 thread T0 #0 0x7ffdc8b6a9fb in PageInfoInfoBarDelegate::set_reload_type C:\b\s\w\ir\cache\builder\src\chrome\browser\ui\page_info\page_info_infobar_delegate.h:31 #1 0x7ffdc8b6a9fb in ChromePageInfoDelegate::CreateInfoBarDelegate(enum content::ReloadType) C:\b\s\w\ir\cache\builder\src\chrome\browser\ui\page_info\chrome_page_info_delegate.cc:226:15 #2 0x7ffde101ffb0 in PageInfo::OnUIClosing(bool ) C:\b\s\w\ir\cache\builder\src\components\page_info\page_info.cc:796:20 #3 0x7ffdc94f5841 in PageInfoBubbleView::OnWidgetDestroying(class views::Widget ) C:\b\s\w\ir\cache\builder\src\chrome\browser\ui\views\page_info\page_info_bubble_view.cc:352:17 #4 0x7ffdcaecbb91 in std::__Cr::__invoke C:\b\s\w\ir\cache\builder\src\third_party\libc++\src\include__type_traits\invoke.h:203 #5 0x7ffdcaecbb91 in std::__Cr::invoke C:\b\s\w\ir\cache\builder\src\third_party\libc++\src\include__functional\invoke.h:29 #6 0x7ffdcaecbb91 in base::ObserverList<class views::WidgetObserver, 0, 1, class base::internal::CheckedObserverAdapter>::Notify<void (__cdecl views::WidgetObserver::)(class views::Widget ), class views::Widget >(void (__cdecl views::WidgetObserver::)(class views::Widget ), class views::Widget const &) C:\b\s\w\ir\cache\builder\src\base\observer_list.h:398:7 #7 0x7ffdcaec04ab in views::Widget::HandleWidgetDestroying(void) C:\b\s\w\ir\cache\builder\src\ui\views\widget\widget.cc:2719:14 #8 0x7ffdcadeff52 in views::DesktopWindowTreeHostWin::HandleDestroying(void) C:\b\s\w\ir\cache\builder\src\ui\views\widget\desktop_aura\desktop_window_tree_host_win.cc:1052:30 #9 0x7ffdcae80324 in views::HWNDMessageHandler::OnDestroy(void) C:\b\s\w\ir\cache\builder\src\ui\views\win\hwnd_message_handler.cc:1891:14 #10 0x7ffdcae74182 in views::HWNDMessageHandler::ProcessWindowMessage(struct HWND_, unsigned int, unsigned __int64, __int64, __int64 &, unsigned long) C:\b\s\w\ir\cache\builder\src\ui\views\win\hwnd_message_handler.h:468:5 #11 0x7ffdcae7151d in views::HWNDMessageHandler::OnWndProc(unsigned int, unsigned __int64, int64) C:\b\s\w\ir\cache\builder\src\ui\views\win\hwnd_message_handler.cc:1178:7 #12 0x7ffdcf592d7c in gfx::WindowImpl::WndProc(struct HWND, unsigned int, unsigned __int64, int64) C:\b\s\w\ir\cache\builder\src\ui\gfx\win\window_impl.cc:313:18 #13 0x7ffdcf59185e in base::win::WrappedWindowProc<&gfx::WindowImpl::WndProc(struct HWND, unsigned int, unsigned __int64, int64)>(struct HWND, unsigned int, unsigned __int64, __int64) C:\b\s\w\ir\cache\builder\src\base\win\wrapped_window_proc.h:74:10 #14 0x7ffedc787cf5 (C:\WINDOWS\System32\USER32.dll+0x180017cf5) #15 0x7ffedc78757b (C:\WINDOWS\System32\USER32.dll+0x18001757b) #16 0x7ffedc7b8562 (C:\WINDOWS\System32\USER32.dll+0x180048562) #17 0x7ffeddb47253 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x180167253) #18 0x7ffedb182543 (C:\WINDOWS\System32\win32u.dll+0x180002543) #19 0x7ffdcae8c07f in base::internal::DecayedFunctorTraits<void (HWNDMessageHandler::)(),base::WeakPtrviews::HWNDMessageHandler &&>::Invoke C:\b\s\w\ir\cache\builder\src\base\functional\bind_internal.h:731 #20 0x7ffdcae8c07f in base::internal::InvokeHelper<1,base::internal::FunctorTraits<void (HWNDMessageHandler::&&)(),base::WeakPtrviews::HWNDMessageHandler &&>,void,0>::MakeItSo C:\b\s\w\ir\cache\builder\src\base\functional\bind_internal.h:947 #21 0x7ffdcae8c07f in base::internal::Invoker<base::internal::FunctorTraits<void (HWNDMessageHandler::&&)(),base::WeakPtrviews::HWNDMessageHandler &&>,base::internal::BindState<1,1,0,void (HWNDMessageHandler::)(),base::WeakPtrviews::HWNDMessageHandler >,void ()>::RunImpl C:\b\s\w\ir\cache\builder\src\base\functional\bind_internal.h:1060 #22 0x7ffdcae8c07f in base::internal::Invoker<struct base::internal::FunctorTraits<void (__cdecl views::HWNDMessageHandler::&&)(void), class base::WeakPtr<class views::HWNDMessageHandler> &&>, struct base::internal::BindState<1, 1, 0, void (__cdecl views::HWNDMessageHandler::)(void), class base::WeakPtr<class views::HWNDMessageHandler>>, (void)>::RunOnce(class base::internal::BindStateBase *) C:\b\s\w\ir\cache\builder\src\base\functional\bind_internal.h:973:12 #23 0x7ffdcc859cb3 in base::OnceCallback<void ()>::Run C:\b\s\w\ir\cache\builder\src\base\functional\callback.h:156 #24 0x7ffdcc859cb3 in base::TaskAnnotator::RunTaskImpl(struct base::PendingTask &) C:\b\s\w\ir\cache\builder\src\base\task\common\task_annotator.cc:207:34 #25 0x7ffdcc82ceb9 in base::TaskAnnotator::RunTask C:\b\s\w\ir\cache\builder\src\base\task\common\task_annotator.h:104 #26 0x7ffdcc82ceb9 in base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(class base::LazyNow *) C:\b\s\
Summary
heap-use-after-free C:\b\s\w\ir\cache\builder\src\chrome\browser\ui\page_info\page_info_infobar_dele
Custom Questions
Reporter credit:
Puf
Additional Data
Category: Security
Chrome Channel: Not sure
Regression: N/A \