Enable android:isolatedProcess on Fennec
Categories
(Core :: Security: Process Sandboxing, enhancement, P5)
Tracking
()
People
(Reporter: cpeterson, Unassigned)
References
(Blocks 1 open bug)
Details
(Whiteboard: [geckoview])
Attachments
(1 obsolete file)
Comment 1•7 years ago
|
||
![]() |
||
Updated•7 years ago
|
Comment 3•7 years ago
|
||
Comment 5•7 years ago
|
||
Updated•7 years ago
|
Comment 6•6 years ago
|
||
Comment 7•6 years ago
|
||
Comment hidden (obsolete) |
Comment hidden (obsolete) |
Comment hidden (obsolete) |
Comment hidden (obsolete) |
Comment 12•6 years ago
|
||
Comment 13•6 years ago
|
||
Comment 14•6 years ago
|
||
Comment 15•6 years ago
|
||
Most of the remaining tests that fail on try pass locally. Only relevant error seems to be: E/GeckoConsole( 3878): [JavaScript Error: "1549305438845 Toolkit.Telemetry ERROR TelemetryStorage::removeFHRDatabase - failed to remove /storage/sdcard/tests/profile/healthreport.sqlite-shm: Error: OS.File has been shut down. Rejecting post to remove(resource://gre/modules/osfile/osfile_async_front.jsm:400:29) JS Stack trace: post@osfile_async_front.jsm:400:2
Comment 16•6 years ago
|
||
(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) from comment #4)
Yeah, the selinux policy for isolated processes is here:
http://androidxref.com/9.0.0_r3/xref/system/sepolicy/prebuilts/api/28.0/
public/isolated_app.teAlso relevant:
http://androidxref.com/9.0.0_r3/xref/device/google/marlin/sepolicy/app.teSo we probably can't access the GPU. That's bad.
(In reply to Jed Davis [:jld] ⟨⏰|UTC-7⟩ ⟦he/him⟧ from comment #3)
(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) from comment #2)
(In reply to Jed Davis [:jld] (⏰UTC-6) from comment #1)
- How isolated is the process in concrete terms, and is that going to cause
problems? What files can it read, and does that include Gecko itself (e.g.,
the omnijar or equivalent)? Are there interactions with, e.g., using GPU
drivers for WebGL?I believe the only thing it really does is drop Android permissions, but
some more investigation is probably necessary.My understanding is that it's more than that, and involves SELinux (and may
be keyed off of special uids, although we probably don't need to care about
that). I think gcp found the policy source files at one point, but I don't
remember the details.On devices with seccomp-bpf we might be able to use system call interception
and brokering to relax the restrictions, like on desktop, but intervening at
the system call level is risky when we can't do per-device pre-release
testing like we did on B2G, given the presence of hardware-specific
plugins/libraries.Apparently Chrome is using this with some success on Android[0], so maybe we
can figure this out too? I think I would break that work out into a
different bug, though.[0] https://bugs.chromium.org/p/chromium/issues/detail?id=166704
Right, but I believe that Google has some leverage over Android device
vendors if their driver blobs would break Chrome; we wouldn't have that with
Firefox. This has come up before when it's been discussed as an extra layer
of sandboxing, but it could also be used to relax the SELinux sandbox if we
need to; in that case it could possibly use a default-allow policy, which is
less risky but not without risk. But if the SELinux policy works as-is,
then that doesn't matter for this bug; I was just bringing it up as an
option we might have.
Hi
If an app or apps knowly or without user know exploit seLinux and change to Premissive mode Users Data at risk.
Malicious apss can take advantage for users browsing data.
Updated•6 years ago
|
Comment 17•6 years ago
|
||
We probably won't get to doing this for Fennec (which doesn't have actual e10s between Gecko chrome and content anyway), but Fenix has some of the same issues with the Java side already peeking about too much.
Updated•6 years ago
|
Reporter | ||
Comment 18•6 years ago
|
||
(In reply to Gian-Carlo Pascutto [:gcp] from comment #17)
We probably won't get to doing this for Fennec (which doesn't have actual e10s between Gecko chrome and content anyway), but Fenix has some of the same issues with the Java side already peeking about too much.
What do we need to do to enable android:isolatedProcess for GeckoView's processes? Will Fenix need to do some work on the app side?
Fennec is moving to the ESR 68 branch, so like you said, we won't probably won't support android:isolatedProcess for Fennec. Should we open new bugs for GeckoView and Fenix?
Comment 19•6 years ago
|
||
What do we need to do to enable android:isolatedProcess for GeckoView's processes? Will Fenix need to do some work on the app side?
It needs a similar set of fixes as the dependent bugs here (they would largely apply to Fenix as well) so the Java content-side code doesn't go outside the sandbox, modifying the manifest, and then likely some amount of fixes in the content process.
I was doing some exploratory work here but didn't get very far. bholley is also looking at multi-e10s on Android.
We should file a new bug for GeckoView(-example), and I'll have to check which of the dependents would also apply to that.
Updated•6 years ago
|
Updated•6 years ago
|
Updated•5 years ago
|
Description
•