Android 是否有足够的应用沙盒?

信息安全 恶意软件 应用安全 病毒 安卓 沙盒
2021-09-08 21:18:27

InfoSec 的上一个问题中,我询问了如何确定需要 root 权限的侧载 Android 应用程序的安全性。

现在我想问一个相关但不同的问题:检查不需要root权限且没有数据访问权限的Android应用程序的安全性是否重要

如果应用程序的数据访问被禁用(通过具有 root 权限的防火墙),那么应用程序在某种程度上是否“坏”是否重要?您可以使用 AppOps 或 XPrivacy 来阻止访问联系人和日历以及拨打/接听电话或 SMS/MMS 的能力。那么,一个没有数据访问权限(并且其权限受 AppOps 或 XPrivacy 限制)的应用程序实际上会造成什么危害呢?

问这个问题的另一种方法是:Android KitKat 及更高版本是否有足够的默认沙盒来防止恶意软件造成任何伤害(假设您可以通过防火墙阻止对应用程序的数据访问,并使用 AppOps/XPrivacy 之类的东西来阻止对联系人、日历、电话和短信/彩信)?

2个回答

每个版本的 Android 在这方面都比以前的版本更强大,Lolipop 肯定比 Kitkat 更进一步推动应用程序沙盒,特别是在应用程序间隔离方面。

Android 上的第三方“防火墙”应用程序可能有点被夸大了,在我看来,它们可以在不生根的情况下提供的保护水平有点值得怀疑。Android 确实通过设备管理 API提供了某种程度的设备控制,但它主要是政策方面的东西,而不是对应用程序内部的细粒度控制。

如果您的设备已植根,那么所有的赌注都几乎没有,您只能靠自己了。沙盒无法再合理地执行,您可以手动控制执行。祝你好运。

对于非 root 设备,应用程序权限由安装时授予的权限集控制。并且该权限集是强制执行的。如果一个应用程序是恶意的,并且您授予它发送 SMS 消息的权限,那么它将能够恶意发送 SMS 消息。如果它没有被授予该权限,那么它就不能这样做。

AppOps 允许在运行时更新这些权限,但根据开发人员的说法,这并不是一般用户支持的功能。原因是它破坏了东西根据定义,一个破坏一切的功能是不受支持的。

不过,这还不是故事的结局。据报道,权限模型是 Android 团队非常关注的东西。他们需要一个解决方案,(A) 不会破坏所有应用程序,(b) 为用户提供有意义的控制,以及 (c) 可供具有沙鼠技术技能的客户使用。这并不像听起来那么简单,但期待未来在这方面的持续关注和进步。

Android KitKat 及更高版本是否有足够的默认沙盒来防止恶意软件造成任何危害

一段绳子有多长?确保机密性并不是信息安全的唯一目标,如果应用程序要运行一个后台服务,该服务会不断消耗大量 CPU 以耗尽电池电量,那会是一种威胁吗?

检查不需要 root 权限且没有数据访问权限的 Android 应用程序的安全性是否重要?

除了默认授予应用程序的权限之外,应用程序可能会或可能不会威胁到哪些特定资源在很大程度上取决于 Android 权限系统的应用方式。请记住,Android 权限的标题和描述并不总是完全或明确地传达它授予的访问权限

例如,我认为当前的 Play 商店权限对话框会显示类似“使用以下一项或多项:SMS、MMS。可能需要收费”。用于访问短信,这并不一定给人一种可以阅读短信的印象。

因此,即使您要单独阅读并有选择地应用每个权限,您最终可能仍会提供一些您没有预料到的访问权限。

除此之外,默认情况下或未经明确批准, Android 应用程序都可以访问大量权限。例如,我认为 Play 商店目前不会在其权限接受对话框中显示互联网访问。

这两个示例都特定于通过 Play 商店安装的应用程序,但我确信有些示例不依赖于 Play 商店。此外,即使您在通过 Play 商店安装应用程序后检查权限并撤销某些权限,仍然存在应用程序可能构成威胁的窗口。

如果应用程序的数据访问被禁用(通过防火墙)

最后,我不会忽视侧信道攻击。恶意应用程序可以使用 IPC 将信息传递给另一个应用程序,然后将其暴露给 Internet最简单的例子是 App 构造一个 Intent 以在浏览器中打开一个 URL,而该 URL 当然可能包含敏感信息。不幸的是,Android 应用程序选择器对话框(您可以在其中选择浏览器)在打开之前不会向您显示用于检查敏感信息的 URL。在那个阶段,可能为时已晚。

TLDR;与传统的桌面操作系统相比,Android 确实具有强大的沙盒功能,但这并不是粗心大意的借口。您仍应将第 3 方软件视为威胁并相应地对其进行评估,依靠沙盒作为额外的安全层,以防您的其他控制失败。