What I'm interested in needs no internal security model because it's single privilege domain (one app). Only isolation from host.
Conversation
Replying to
The internal security model protects the kernel from apps, and hides a lot of information leaked from the kernel to apps. By disabling SELinux, it's substantially breaking down the separation between the kernel and the app, making it less isolated than it would be even normally.
2
Replying to
You can't avoid mounting the stuff that the system and apps depend on to run. You are running a whole Android userspace instance including init, vold and all the privileged base system components inside the container. Security model protects the kernel and base system from apps.
2
Replying to
It's designed around doing that though, which is why they are using namespaces the way that they are. If you just want an Android runtime and apps, you don't need to approach it this way. Can be done like Fuchsia or the original ChromeOS approach which used NaCl not containers.
2
The original ChromeOS approach didn't give Android apps direct kernel access. It compiled them to NaCl apps (would be WebAssembly instead now doesn't make much difference) which have low-level containment for native code and are also run inside the tight browser renderer sandbox.
1
1
Replying to
They were still native code, executing on hardware directly (NaCl is was different than WebAssembly, and also shipped code as native unlike PNaCl which used LLVM IR). It used Chrome infrastructure for the sandboxing but they certainly weren't tied to web content in any way.
2
It basically just reused the Chrome sandboxing, broker process, etc. to reimplement the Android APIs with the app in a strong sandbox comparable to the sandboxing for a web page. There's no web content involved, it just on top of a similar backend for GPU, audio, networking, etc.
i.e. it has no direct access to do any of those things (no native file access, no native networking) but rather has to do everything via IPC requests. It's basically the renderer sandbox used for web pages, but without Blink, v8 or anything of that stuff. It's a different client.

