BroadcastChannel may allow a compromises process to subscribe to another origin's messages
Categories
(Core :: DOM: Core & HTML, enhancement, P3)
Tracking
()
Fission Milestone | Future |
People
(Reporter: tjr, Unassigned)
References
(Depends on 1 open bug, Blocks 1 open bug)
Details
Reporter | ||
Updated•6 years ago
|
Comment 1•6 years ago
|
||
Reporter | ||
Comment 2•6 years ago
|
||
Reporter | ||
Updated•6 years ago
|
Updated•6 years ago
|
Comment 3•6 years ago
|
||
Couple of notes:
-
BroadcastChannel is a minor problem: we send messages only if there is an active actor in the content process, observing the wanted origin. Of course, if the content process is compromised, it can know that the current process is running that origin.
-
Clear-Site-Data: we broadcast a message to each process to reload a particular origin. A compromised process can know, by that, that there is, somewhere (maybe in another process) a tab loading that origin. Note that clear-site-data header can be received when loading sub-resources: it's not just for document requests.
-
reportingObserver: we don't broadcast data here. Reports are received by the current context only. They are also sent to the parent process in case there are some report-to endpoints. This is fine.
-
We have similar issues with ServiceWorkers. We do have a service-worker registration map in any process.
Reporter | ||
Comment 5•3 years ago
|
||
I'm not sure exactly the state of the different components of this so it will need some re-validating; but from the given description we consider it a blocker for disabling Spectre mitigations.
Reporter | ||
Comment 6•3 years ago
|
||
I filed Bug 1730197 for the Clear Site Data one. Investigating others.
Reporter | ||
Comment 7•3 years ago
|
||
Looking at this again; BroadcastParent seems to look up the correct actors to message based on the recipient origin. This is safe; but what's uncertain to me per comment 3 is if we can broadcast to a different content process under some circumstances. Baku, do you know or could you redirect?
Comment 8•3 years ago
|
||
BroadcastChannel won't randomly send messages to uninterested processes. I think what :baku was trying to convey in comment 3 was:
- A compromised process could request to open a BroadcastChannel for an origin that does not exist in that process and it would work because we currently have no validation absent a bug 1491018 fix. (Noting that the Clients API could provide coverage for this.)
- Clear-Site-Data does leak information about the existence of origins which could allow a compromised process to proactively snoop on an informed basis. Not sure this still holds true; it certainly doesn't have to hold true with PWindowGlobal and the clients API existing.
- (dunno)
- The ServiceWorker thing no longer works the way it was described in comment 3, but comment 3 was describing a means of being able to know about a lot of interesting origins. (Although I suppose a rogue content process could perhaps create a PServiceWorkerManager which, if successful, would let it know about the existing origins with ServiceWorkers? We may want additional guards against that if we don't have them.)
Reporter | ||
Comment 9•3 years ago
|
||
Based on that I'll move this to blocking out site sandboxing efforts rather than Spectre Mitigation Disabling
Reporter | ||
Updated•3 years ago
|
Updated•2 years ago
|
Description
•