Infinite loop within js::SetPrototype
Categories
(Core :: DOM: Core & HTML, defect, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox103 | --- | fixed |
People
(Reporter: adonkidz7, Assigned: jandem)
References
()
Details
(Keywords: csectype-dos, reporter-external, Whiteboard: [reporter-external] [client-bounty-form] [verif?])
Attachments
(4 files)
- open the browser (chrome, firefox, ms edge)
- go to https://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic
- create the code in w3schools, jsfiddle, or codepen io
- run the code in w3schools, jsfiddle, and codepen io in chrome, firefox, and ms edge
- after you run the code, firefox is having problems like DOS attack
Reporter | ||
Comment 1•2 years ago
|
||
Reporter | ||
Comment 2•2 years ago
|
||
Updated•2 years ago
|
Updated•2 years ago
|
Comment 4•2 years ago
|
||
It looks like the attachment is copied from a Project Zero report against WebKit, except that the "Tested on Safari" part was changed to "Tested on Firefox 101.0.1 (64-bit)."
Comment 5•2 years ago
|
||
The link in comment 1 is a video showing the test case being used in a number of browsers, including Chrome, Edge and Firefox. The Firefox part starts around 58 seconds into the video.
Reporter | ||
Comment 6•2 years ago
|
||
when the code is run in firefox, the firefox browser can't run properly like in ms edge and chrome
Reporter | ||
Comment 7•2 years ago
|
||
Reporter | ||
Comment 8•2 years ago
|
||
Reporter | ||
Comment 9•2 years ago
|
||
Reporter | ||
Comment 10•2 years ago
|
||
both browsers run the same code on the same web, it can be seen that chrome browser contains more tabs than firefox.
Reporter | ||
Comment 11•2 years ago
|
||
I explored the existing code myself, and that's what happens in the firefox browser when the code is run
Reporter | ||
Comment 12•2 years ago
|
||
Hello, no update on this?
Comment 13•2 years ago
|
||
So far I was not able to prove or disprove any UXSS as this might be the case in other browsers.
The first alert message prints the location of the attacking page, and not the location of the attacked page.
Then the alert message creates a stacked event loops, in which the second onload
is being executed.
Within the second onload
call, the construct
builtin is called, which spin iteratively in js::SetPrototype
.
The browser appear stuck in this single function call. The tab can be closed, only the child process is unresponsive.
https://share.firefox.dev/3aRjtB5
Jan, are you the right person to investigate this issue?
Updated•2 years ago
|
Reporter | ||
Comment 14•2 years ago
|
||
I mean, of the three browsers I used in the video.
Only firefox crashes and can't run properly.
That's why I made this report.
Assignee | ||
Comment 15•2 years ago
|
||
The problem is that RemoteObjectProxyBase::getPrototypeIfOrdinary
returns isOrdinary = true
but doesn't set the proto outparam to null, so we don't change it and always iloop. This should be the only call site and this isn't security sensitive.
Reporter | ||
Comment 16•2 years ago
|
||
So this is just a firefox feature?
Which eats up to 100% cpu performance
Assignee | ||
Comment 17•2 years ago
|
||
This prevents us from ilooping in SetPrototype
.
Assignee | ||
Updated•2 years ago
|
Comment 18•2 years ago
|
||
Denial of Service bugs (simply crashing Firefox) are excluded from our Bug Bounty program
Reporter | ||
Comment 19•2 years ago
|
||
Hi, Thanks for updating
Comment 20•2 years ago
|
||
Comment 21•2 years ago
|
||
bugherder |
Reporter | ||
Comment 22•2 years ago
|
||
Hi, Are you sure it's fixed?
Comment 23•2 years ago
|
||
Unless you're building Firefox directly from source, the fix isn't available in a shipping build yet. The fix should be in Nightly builds due to start about an hour from now.
Reporter | ||
Comment 24•2 years ago
|
||
Once fixed, can I upload publicly?
Comment 25•2 years ago
|
||
(In reply to Syahri Ramadan from comment #24)
Once fixed, can I upload publicly?
This bug is already public, so feel free to discuss it however you want.
Reporter | ||
Comment 26•2 years ago
|
||
Ok, I'll upload it on YouTube later. Thank you
Updated•6 months ago
|
Description
•