我们的年度渗透测试结果回来了,这一次,有一项发现被报道:我们的商业安卓应用程序很容易受到内存转储攻击。
所使用的方法的具体细节有点模糊,因为它是由外部承包商,谁不愿意披露超出他们的合同义务。但从报告中我可以得到以下信息:
重点是,报告的敏感数据是javascript变量值。我对应用程序架构没有很深的理解,这是一个有5年历史的遗留应用程序,但我相信当应用程序运行时,必须将javascript代码加载到应用程序内存段中。任何能够在设备上安装插装工具(比如Frida)的人都可以从应用程序的内存段中读取任何内容。
问题如下:
那么,这是否仍然被认为是应用程序的漏洞呢?Android平台是否允许通过遵循某些规则来缓解此类攻击?
是否有可能调试android构建不受内存转储攻击的保护?“发布”版本会不会更容易受到这种攻击呢?
发布于 2022-10-26 21:30:44
是否有可能调试android构建不受内存转储攻击的保护?“发布”版本会不会更容易受到这种攻击呢?
通常,版本和调试构建(除了指向不同的环境、使用不同的密钥进行签名等)在Android上的主要区别是,前者使用了某种混淆(这在以前使用了Proguard,现在是R8编译器),更详细地介绍了您可以阅读这里。当然,这取决于版本构建的配置,但是这种行为是默认的。但它不会以任何方式阻止内存转储,它只会使阅读和解释反编译应用程序的代码变得更加困难。因此,在内存转储攻击的情况下,它(几乎)没有什么区别。
那么,这是否仍然被认为是应用程序的漏洞呢?Android平台是否允许通过遵循某些规则来缓解此类攻击?
简单地说,Android并没有减少这种攻击,就好像你有一个根目录一样(你提到frida被使用了,所以这个设备很可能是根的,也有一些方法可以尝试在非根设备上运行frida,但是它也需要更多的努力,而且也没有100%的防弹方法来确保它始终工作,所以我猜戊酯只是使用根设备,这要容易得多)你基本上可以用这个系统做你喜欢做的任何事情。
第一个选项是使用注释中提到的硬件支持认证。您需要记住,它肯定会检查设备是否已扎根,但您无法确定它是否会检测到在运行时挂起Android进程的frida挂钩框架(这是一个有点模糊的区域,因为确切的认证API所做的检查并不完全透明,我们只收到认证结果,但检查本身是Google的好秘密)。这仍然应该是足够的,虽然挂钩是密切相关的有一个根设备,如上文所述。
另一个可用的选项是一个称为RASP(运行时应用程序自保护)的工具系列。它们能够在运行时检测根框架和挂钩框架,并根据配置采取适当的操作(例如,在检测到挂钩时杀死应用程序)。Android有几种可用的解决方案(Promon,Digital.ai,Guardsquare,仅举几个例子),但它们都是付费解决方案,所以我认为只用于遗留应用程序是不值得的。
这取决于如何使此攻击向量成功,攻击者需要拥有已登录用户的设备(我假设您在应用程序中有帐户),将其根目录,然后开始挂钩和转储内存。
我想说这种情况不太可能发生,但是如果信息可能被窃取的性质非常敏感,而且你有非常无忧无虑的用户,那么你就可以让Google验证一下。
https://security.stackexchange.com/questions/265294
复制相似问题