如何在Android应用中保护AWS凭证? 对于APIS 对于移动应用

问题描述

如何保护我的应用程序中的AWS凭证?存储AWS凭证的理想位置是什么?如何在运行时获取它们?

请参阅以下警告:

泄露的AWS凭证

您的应用公开了Amazon Web Services凭据。

解决方法

第三方服务

如何在我的应用程序中保护我的AWS凭证?

不要这样做。攻击者总是可以使用逆向工程技术来检索它们,并且存在许多开源工具可以使此任务变得微不足道。

虽然我要分享的文章是关于提取Api密钥的,但是可以使用与我的文章How to Extract an API key from a Mobile App with Static Binary Analysis中所述相同的方法来提取其他任何秘密:

可用于逆向工程的开放源代码工具范围非常广泛,我们在本文中确实无法涉及本主题的内容,但是,我们将专注于使用Mobile Security Framework(MobSF)来演示如何进行逆向工程设计我们的移动应用的APK。 MobSF是开放源代码工具的集合,可以在引人注目的仪表板中显示其结果,但是可以单独使用MobSF和其他地方使用的相同工具来获得相同的结果。

如文章所述,您可以使用JNI/NDK技术,通过将AWS凭证隐藏在本机C代码中来增加难度:

使用Android Studio 2.2和更高版本,您可以使用NDK将C和C ++代码编译到本机库中,然后使用IDE的集成构建系统Gradle将其打包到APK中。然后,您的Java代码可以通过Java本机接口(JNI)框架调用本机库中的函数。

如果使用此方法,攻击者将在运行时使用检测框架来提取您的AWS凭证,例如Frida

将您自己的脚本注入黑盒进程。挂钩任何功能,监视加密API或跟踪私有应用程序代码,不需要任何源代码。编辑,点击保存,立即查看结果。全部没有编译步骤或程序重新启动。

可能的解决方案

您应该将后端与AWS进行通信的职责委托给后端或反向代理,就像我在文章Using a Reverse Proxy to Protect Third Party APIs中所建议的那样:

在本文中,您将开始学习什么是第三方API,以及为什么不应该直接从移动应用程序内部访问它们。接下来,您将了解什么是反向代理,然后了解何时以及为什么应使用它来保护对移动应用程序中使用的第三方API的访问。

您想参加额外的战斗吗?

在回答安全问题时,我总是喜欢引用OWASP基金会的出色工作。

对于APIS

OWASP API Security Top 10

OWASP API安全项目旨在通过强调不安全API中的潜在风险并说明如何减轻这些风险来为软件开发人员和安全评估人员提供价值。为了实现此目标,OWASP API安全项目将创建和维护“十大API安全风险”文档,以及用于创建或评估API的最佳实践的文档门户。

对于移动应用

OWASP Mobile Security Project - Top 10 risks

OWASP移动安全项目是一个集中式资源,旨在为开发人员和安全团队提供构建和维护安全移动应用程序所需的资源。通过该项目,我们的目标是对移动安全风险进行分类并提供开发控制措施,以减少其影响或被利用的可能性。

OWASP - Mobile Security Testing Guide

移动安全测试指南(MSTG)是用于移动应用安全开发,测试和逆向工程的综合手册。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...