[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•10 months ago
|
Updated•10 months ago
|
Comment 1•10 months 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•10 months ago
|
||
Updated•10 months ago
|
Comment 3•10 months 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•10 months ago
|
Comment 4•10 months ago
|
||
Comment 5•10 months ago
|
||
I checked locally in an opt Nightly build with this patch that session restore still works even if Fission is disabled.
Updated•10 months ago
|
Updated•10 months ago
|
Comment 6•10 months 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•10 months ago
|
||
Updated•10 months ago
|
Updated•10 months ago
|
Assignee | ||
Comment 9•10 months 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•10 months ago
|
||
uplift |
Comment 11•10 months ago
|
||
Comment on attachment 9392594 [details]
Bug 1886852 - Avoid registering unnecessary MessageManager listeners when SHIP is enabled, r=smaug!
Approved for 125.0b3
Updated•10 months ago
|
Comment 12•10 months 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•10 months ago
|
||
uplift |
Updated•10 months ago
|
Comment 14•10 months ago
|
||
uplift |
Comment 15•10 months ago
|
||
uplift |
Comment 16•10 months 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•10 months ago
|
Comment 17•10 months 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•10 months ago
|
Reporter | ||
Updated•8 months ago
|
Reporter | ||
Updated•8 months ago
|
Reporter | ||
Updated•5 months ago
|
Description
•