Change theme
Help
Press space for more information.
Show links for this issue (Shortcut: i, l)
Copy issue ID
Previous Issue (Shortcut: k)
Next Issue (Shortcut: j)
Sign in to use full features.
Vote: I am impacted
Notification menu
Refresh (Shortcut: Shift+r)
Go home (Shortcut: u)
Use Markdown for this comment
Set severity, which reflects how much the issue affects the use of the product
Change issue status back to 'Assigned'
Remove item
Show all 17 items in the list
Pending code changes (auto-populated)
Tracks the current rank of this item in the teams backlog [ID: 1225362]
Build number, such as 117.0.5911.2 [ID: 1223033]
[ID: 1223031]
Blink>Fonts
Select items in the list
Supplemental component tags only. Set main component first. [ID: 1222907]
[ID: 1223136]
he CWE ID for the type of security defect the current issue is describing. [ID: 1410892]
Design doc to be reviewed. [ID: 1223032]
[ID: 1223131]
How many engineer days the task is estimated to take. [ID: 1225337]
[ID: 1223081]
Show all 6 items in the list
[ID: 1223087]
[ID: 1223134]
Milestone(s) impacted by this issue. [ID: 1223085]
Date of next expected progress update or deadline for providing requested information. [ID: 1225154]
[ID: 1223083]
Show all 7 items in the list
[ID: 1223084]
[ID: 1223086]
[ID: 1223034]
Link to incidents in IRM as a result of this ticket. [ID: 1300460]
[ID: 1223088]
[ID: 1223135]
This field contains Gerrit urls of code changes that ‘fix’ a security bug (i.e., excluding logging/cleanup commits) and is used when a singular fix cannot be uniquely identified from the existing “Code Changes” field. The change can be in the chromium repo or any other third_party repo. [ID: 1358989]
Size : Average days
XS : 1
S : 2
M : 3
L : 5
XL : 8 [ID: 1314202]
Set the version(s) of the product affected by this issue (comma-separated list)
Set the version(s) of the product in which the issue should be fixed (comma-separated list)
Set the version(s) of the product in which the issue fix was verified (comma-separated list)
Set if this issue occurs in production
Blink
[ID: 1253656]
Set Reporter
Set Type
Set priority, which reflects how soon the issue should be fixed
Set Status
Set Assignee
Set Verifier
View or edit staffing
View issue level access limits(Press Alt + Right arrow for more information)
Description
#1Security Bug
Important: Please do not change the component of this bug manually.
Please READ THIS FAQ before filing a bug:https://chromium.googlesource.com/chromium/src/+/HEAD/docs/security/faq.md
Please see the following link for instructions on filing security bugs:https://www.chromium.org/Home/chromium-security/reporting-security-bugs
Reports may be eligible for reward payments under the Chrome VRP:https://g.co/chrome/vrp
NOTE: Security bugs are normally made public once a fix has been widely deployed.
VULNERABILITY DETAILS
Bug Type
Heap-Buffer-Overflow on Blink Renderer leads to Segmentation Fault: Received signal 11 SEGV_ACCERR 36a0002be000
Version Tests
Chromium 127.0.6533.43 (Developer Build) (64-bit) Linux Chrome 127.0.6533.72 (Official Build) (64-bit) Linux
Initial Considerations
The following analysis is performed by using the testcase attached:
segmentation-fault-UTF16TextIterator.html
onChromium 127.0.6533.43 (Developer Build) Linux
The testcase
chrome_official_127.0.6533.72_segfault.html
is attached as well because its severity as it crashes Official Latest Chrome Build 127.0.6533.72 on a Segmentation Fault while accessing to an Out-Of-Bounds memory due the Heap-Buffer-Overflow.segmentation-fault-UTF16TextIterator.html
hits multiple DCHECKs (12 in total) before crashing on a Segmentation Fault on data access. Because of the high number of DCHECKs hit, by modifiying the testcase, multiple other paths can be taken with invalid values which could lead to other potential memory corruptions.AddressSanitizer establishes the bug as
use-after-poison
but it can be converted into aheap-buffer-overflow
by modifying the line:<any_html id="id_6">Z Z</any_html>
into<any_html id="id_6">ZZ ZZZ</any_html>
AddressSanitizer (Release)
Without AddressSanitizer (Release)
Debug DChecks
The initial DCHECK points to the following code:
At [1],
(*max_size_out)->Round()
is 20024 whilecontent_size.Round()
is 20016. This generates a "Size Mismatch" bug which starts triggering multiple other DCHECKs, related with checking the sizes and positions of the buffer involved.This ends on a Segmentation Fault when trying to read from
characters_
atinline bool Consume(UChar32& character)
. See [2]At the Segmentation Fault moment, the Registers and the Code are:
Where
rcx
points to an unmapped memory area.Printing the "this" object of
UTF16TextIterator
class at the crash moment, it can be observed that thesize_
could have suffered an integer overflow.The testase
chrome_official_127.0.6533.72_segfault.html
crashes127.0.6533.72 (Official Build) (64-bit) stable
in this way:VERSION Chrome Version: 127.0.6533.72 (Official Build) (64-bit) stable Operating System: Tested on Linux.
REPRODUCTION CASE
FOR CRASHES, PLEASE INCLUDE THE FOLLOWING ADDITIONAL INFORMATION Type of crash: Tab Crash (Render Process)
CREDIT INFORMATION Reporter credit: Tashita Software Security