[pwn2own-2024] sandbox escape using non-SHIP session restore
Categories
(Firefox :: Session Restore, defect)
Tracking
()
People
(Reporter: dveditz, Assigned: nika)
References
Details
(Keywords: csectype-sandbox-escape, reporter-external, sec-critical, Whiteboard: [adv-main124.0.1+][adv-esr115.9.1+])
Attachments
(2 files)
48 bytes,
text/x-phabricator-request
|
diannaS
:
approval-mozilla-beta+
diannaS
:
approval-mozilla-release+
diannaS
:
approval-mozilla-esr115+
tjr
:
sec-approval+
|
Details | Review |
249 bytes,
text/plain
|
Details |
Reporter | ||
Updated•2 years ago
|
Updated•2 years ago
|
Comment 1•2 years ago
|
||
The core of the sandbox escape is basically this:
const script = `
dump("do whatever you want in parent process chrome JS");
`;
let attr = {"style":"text-indent: 500px;", "onoverflow":script, "onunderflow":script};
const data = {"epoch":0,"data":{"attributes":attr}};
mm.sendSyncMessage("SessionStore:update",data);
Assignee | ||
Comment 2•2 years ago
|
||
Updated•2 years ago
|
Comment 3•2 years ago
|
||
Nika said this code is dead on desktop because bug 1804140 is on 114+, so we're always using SHIP. She also said that Android is not affected even though it is not using SHIP because the actual exploited code is not present on Android, or something like that.
Updated•2 years ago
|
Comment 4•2 years ago
|
||
Comment 5•2 years ago
|
||
I checked locally in an opt Nightly build with this patch that session restore still works even if Fission is disabled.
Updated•2 years ago
|
Updated•2 years ago
|
Comment 6•2 years ago
•
|
||
As another double check that the patch worked as expected, I wrote a patch to log when we add a message listener or receive a message manager message, in the parent process. I tested starting the browser with "open previous tabs" enabled with a few tabs saved. On MacOS desktop, without the patch, we register 5 message listeners with "SessionStore" in the name. With the patch, we don't have any. So that is working as expected. Also as expected, in this simple scenario we don't receive any messages with SessionStore in the name, both with and without the patch.
![]() |
||
Comment 8•2 years ago
|
||
Updated•2 years ago
|
Updated•2 years ago
|
Assignee | ||
Comment 9•2 years ago
|
||
Comment on attachment 9392594 [details]
Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
ESR Uplift Approval Request
- If this is not a sec:{high,crit} bug, please state case for ESR consideration:
- User impact if declined: sandbox escape
- Fix Landed on Version: 126
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): Disabling dead code (as verified by ccov and code reading) which should have been behind a preference, and exposed a security vulnerability to content processes.
Beta/Release Uplift Approval Request
- User impact if declined: sandbox escape
- Is this code covered by automated tests?: No
- Has the fix been verified in Nightly?: No
- Needs manual test from QE?: No
- If yes, steps to reproduce:
- List of other uplifts needed: None
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): Disabling dead code (as verified by ccov and code reading) which should have been behind a preference, and exposed a security vulnerability to content processes.
- String changes made/needed: none
- Is Android affected?: No
Comment 10•2 years ago
|
||
uplift |
Comment 11•2 years ago
|
||
Comment on attachment 9392594 [details]
Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
Approved for 125.0b3
Updated•2 years ago
|
Comment 12•2 years ago
|
||
Comment on attachment 9392594 [details]
Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
Approved for 115.9.1esr
Comment 13•2 years ago
|
||
uplift |
Updated•2 years ago
|
Comment 14•2 years ago
|
||
uplift |
Comment 15•2 years ago
|
||
uplift |
Comment 16•2 years ago
|
||
Comment on attachment 9392594 [details]
Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
Approved for 124.0.1 dot release
Updated•2 years ago
|
Comment 17•2 years ago
|
||
Smoke tested Session Restore with and without Fission on RC 124.0.1-build1 and ESR 115.9.1esr-build1 - all manual tests passed. More details on confluence page: https://mozilla-hub.atlassian.net/wiki/spaces/FDPDT/pages/10617980/Firefox+regression+testing#Chemspill-124.0.1-build1
Updated•2 years ago
|
Reporter | ||
Updated•1 year ago
|
Reporter | ||
Updated•1 year ago
|
Reporter | ||
Updated•1 year ago
|
Description
•