据我所知,这里有一个 IsolatedProcess 来运行不受信任的代码。
但是如果 IsolatedProcess 基本上是一个没有任何权限的进程,那么如何将不受信任的代码(比如说一个类)发送到 IsolatedProcess?
我的意思是 IsolatedProcess 无法访问设备中的文件、互联网或其他任何内容。
那么如何将不可信代码发送给IsolatedProcess呢?
我正在尝试将构造函数传递给 IsolatedProcess,以便他可以安全地启动这个不受信任的类,但是进程之间的所有通信都必须使用可序列化对象,而构造函数不是可序列化对象。
最佳答案
您误解了 isolatedProcess 的用途。它不提供 API 来做你想做的事,因为它不是它的预期用途,并且像那样使用它不是一个好的安全实践。它旨在提供攻击者在通过漏洞获得远程代码执行后需要绕过的安全层。您根本不应该运行不受信任的 Java 代码,因为 Android 不是为这样做而设计的。它仍然可以在 isolatedProcess 中访问 native API,包括内核的系统调用等。 isolatedProcess 几乎放弃了所有特权(获得唯一的 UID/GID 并在 isolated_app SELinux 域中运行)但它本身并不是一个很好的沙箱。如果您决心这样做,那么在 isolatedProcess 中进行比在其外部进行要好,但是您将为此编写自己的代码。
isolatedProcess 的主要用户是 Chrome。每个站点实例都由单独的 isolatedProcess 服务呈现。它不运行不受信任的 Java 或 native 代码。攻击者需要远程代码执行漏洞来获得对 isolatedProcess 的控制。 Chrome 也不仅依赖 isolatedProcess 作为第二层防御。它使用严格的 seccomp-bpf 过滤器来大大减少内核攻击面。
关于安卓|如何使用隔离进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37010237/