huseyinstif/CVE-2026-13036-PoC

GitHub: huseyinstif/CVE-2026-13036-PoC

Chrome Blink 引擎 WidgetBase::UpdateSurfaceAndScreenInfo 函数 Use-After-Free 漏洞(CVE-2026-13036)的概念验证代码,演示通过屏幕方向变更事件重入销毁 frame 来触发渲染器进程崩溃。

Stars: 0 | Forks: 0

# CVE-2026-13036 — Blink 中的 Use-After-Free (`WidgetBase::UpdateSurfaceAndScreenInfo`) ![CVE](https://img.shields.io/badge/CVE-2026--13036-red) ![严重程度](https://img.shields.io/badge/Severity-High-orange) ![CVSS](https://img.shields.io/badge/CVSS-8.8-orange) ![CWE](https://img.shields.io/badge/CWE--416-Use--After--Free-yellow) ![组件](https://img.shields.io/badge/Component-Blink%20Widget-blue) | | | |---|---| | **CVE** | CVE-2026-13036 | | **CWE** | CWE-416 (Use After Free) | | **CVSS 3.1** | 8.8 (高) — `AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H` | | **组件** | Blink — `third_party/blink/renderer/platform/widget/widget_base.cc` | | **修复版本** | Chrome **149.0.7827.197** (Windows / macOS), **149.0.7827.196** (Linux) | | **受影响版本** | Chrome **< 149.0.7827.197** | | **Chromium bug** | [523711130](https://issues.chromium.org/issues/523711130) (访问受限) | | **修复 Change-Id** | `If70c28a4a616b4909dade238d8c39b001956fd05` | | **影响** | 渲染进程 RCE (沙盒环境) | ## 根本原因 每当浏览器将新的视觉属性(viewport、surface id、**screen info**)推送给渲染器 widget 时(例如在调整大小、更改显示或更新屏幕方向时),就会调用 `WidgetBase::UpdateSurfaceAndScreenInfo()`。当新的 screen info 报告不同的方向角度/类型时,Blink 会通知页面,以便它可以触发 JavaScript 的 `orientationchange` / `screen.orientation` `change` 事件: ``` // third_party/blink/renderer/platform/widget/widget_base.cc (VULNERABLE) void WidgetBase::UpdateSurfaceAndScreenInfo( const viz::LocalSurfaceId& new_local_surface_id, const gfx::Rect& compositor_viewport_pixel_rect, const display::ScreenInfos& screen_infos) { // ... compute orientation_changed ... if (orientation_changed) { client_->OrientationChanged(); // <-- runs author JS synchronously } // `this` may already be freed here: client_->DidUpdateSurfaceAndScreen(previous_original_screen_infos); // UAF } ``` `client_->OrientationChanged()` 会在渲染器的主线程上**同步**分发 DOM 事件。在此回调期间,攻击者控制的处理程序可以销毁拥有此 `WidgetBase` 的那个 frame —— 例如,从父文档中移除托管的 `