据我了解,IsolatedProcess在这里运行不受信任的代码。

但是,如果从本质上来说,IsolatedProcess是一个没有任何权限的进程,那么如何将不受信任的代码(让我们说一个类)发送给IsolatedProcess?

我的意思是IsolatedProcess无法访问设备中的文件,Internet或其他任何文件。

那么,将不受信任的代码发送到IsolatedProcess的方式是什么?

我试图将构造函数传递给IsolatedProcess,以便他可以安全地启动此不受信任的类,但是进程之间的所有通信都必须使用Serializable对象,而Constructor不是Serializable对象。

最佳答案

您误解了IsolatedProcess的目的。它没有提供API来完成您想要的事情,因为这不是它的预期用途,那样使用它并不是一个好的安全实践。它旨在提供一层安全性,一旦攻击者通过攻击获得了远程执行代码,攻击者就需要绕过该安全性。您根本不应该运行不受信任的Java代码,因为Android并非旨在执行此操作。它仍然可以在一个独立的进程中访问本地API,包括内核的系统调用等。 isolatedProcess几乎放弃了所有特权(获得唯一的UID / GID并在isolated_app SELinux域中运行),但它并不是一个很好的沙盒。如果您确定要这样做,那么在isolateedProcess内比在外部进行更好,但是您将为此滚动自己的代码。

IsolatedProcess的主要用户是Chrome。每个站点实例由单独的isolatedProcess服务呈现。它不会运行不受信任的Java或本机代码。攻击者需要远程执行代码漏洞才能控制isolatedProcess。 Chrome不仅第二层防御还依赖isolatedProcess。它使用严格的seccomp-bpf过滤器来大大减少内核攻击面。

关于android - Android |如何使用IsolatedProcess,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37010237/

10-09 03:13