Chrome · Accessibility › A11y
CVE-2026-113271
UAF in Accessibility (A11y)
Overview
Critical
Severity
—
CVSS
No
Exploited ITW
Fixed
Fix Status
Files Changed
third_party/blink/renderer/modules/accessibility/ax_node_object.ccthird_party/blink/renderer/modules/accessibility/ax_node_object.h
Patch
From 15248c94bc3d90896e0a56d66ebc3a362318fe49 Mon Sep 17 00:00:00 2001
From: Sky Debreuil <skydebreuil@google.com>
Date: Tue, 13 Oct 2026 18:10:24 -0700
Subject: [PATCH] [a11y] Copy title attribute value in AXNodeObject
Store the title attribute in a local AtomicString rather than a
reference in AXNodeObject::Description(), and take it by value in
AXNodeObject::TextAlternativeFromTitleAttribute(), matching how other
attribute reads in Blink avoid holding references into element
attribute storage across calls that may update it.
Change-Id: Ie67fb6fd2bcddf55d5bfe506a4d33d8e5f1f5efd
Bug: 571618833
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8551193
Reviewed-by: Lucas Radaelli <lucasradaelli@google.com>
Auto-Submit: Sky Debreuil <skydebreuil@google.com>
Reviewed-by: David Tseng <dtseng@chromium.org>
Commit-Queue: Sky Debreuil <skydebreuil@google.com>
Cr-Commit-Position: refs/heads/main@{#1718179}
---
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
index e1060dc1d..710189e 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -7205,7 +7205,7 @@
}
String AXNodeObject::TextAlternativeFromTitleAttribute(
- const AtomicString& title,
+ AtomicString title,
ax::mojom::blink::NameFrom& name_from,
NameSources* name_sources,
bool* found_text_alternative) const {
@@ -8159,7 +8159,8 @@
DescriptionSource(found_description, kTitleAttr));
description_sources->back().type = description_from;
}
- const AtomicString& title = element->FastGetAttribute(kTitleAttr);
+ // Copy title as computing inner text can modify the attribute storage.
+ const AtomicString title = element->FastGetAttribute(kTitleAttr);
if (!title.empty() &&
String(title).StripWhiteSpace() !=
element->GetInnerTextWithoutUpdate().StripWhiteSpace()) {
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.h b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
index 50f6df6..8503b53 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.h
@@ -399,8 +399,9 @@
String* text_alternative,
AXRelatedObjectVector* related_objects) const;
+ // Takes title by value as computing inner text can modify attribute storage.
String TextAlternativeFromTitleAttribute(
- const AtomicString& title,
+ AtomicString title,
ax::mojom::blink::NameFrom& name_from,
NameSources* name_sources,
bool* found_text_alternative) const;
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