SDK安全要求
在android应用开过过程中,SDK是android应用中不可缺少的一部分,通过集成各种第三方的SDK可以减少APP应用开发的工作量。但是在APP应用中集成各种第三方SDK可能存在各种安全的风险,除了一些基础的安全问题还有一些致命的异常崩溃的安全问题,通过验证测试分析sdk的安全风险尽可能规避安全风险。
下面来源:<<移动互联网应用程序SDK安全技术要求及测试方法>> 文档中,它罗列出来sdk中的安全基本要求:
SDK安全测评
SDK可能存在的安全风险包括:
这些安全风险不仅包括会出现sdk中可能存在代码漏洞,这会促使APP应用容易受到攻击;
第三方SDK没有在维护更新或无法使用;
使用第三方免费SDK可能存在知识产权的问题。
所以在sdk集成之前很有必要对sdk进行测试验证分析,验证测试方式:
可以检测第三方依赖性中的漏洞的插件(例如:dependency-check-gradle)在应用接入SDK前进行验证测试sdk是否存在安全漏洞;
也可以通过jeb或者jadx将sdk的代码反编译分析是否存在可能的漏洞;
对sdk的隐私数据保护、访问权限的控制进行测试;
对sdk的行为LOG和调用栈LOG进行测试。
SDK的基本安全测评:
SDK数据存储风险测评
SDK数据交互风险测评
SDK重要组件测评
SDK代码及资源文件安全测评
SDK的异常处理
当SDK代码进入异常或者错误状态时,就会发生异常。java和C++代码都可能引发异常。通过验证测试异常是为了确保应用将处理异常并转换为安全状态,而不是通过UI界面或日志记录机制公开敏感信息。
1.确保SDK使用精心设计和统一的方案进行管控代码;
2.通过创建适当的空检查、绑定检查等来规划标准 RuntimeException(例如 NullPointerException、IndexOutOfBoundsException、ActivityNotFoundException、CancelException、SQLException)。应有意抛出 RuntimeException 的子项,并且应由调用方法处理意向。
3.确保对于每个非运行时 Throwable,都有一个适当的 catch 处理程序,最终正确处理实际异常。
4.引发异常时,确保SDK程序具有用于导致类似行为的异常的集中处理程序。这可以是静态类。对于特定于方法的异常,请提供特定的 catch 块。
5.确保sdk在其 UI 或日志语句中处理异常时不会公开敏感信息。确保异常仍然足够详细,可以向用户解释问题。
6.确保在执行 finally 块期间,始终擦除高风险应用程序处理的所有机密信息。
下面几种方式可以对SDK中异常进行动态分析:
1、使用Xposed或者frida工具进行hook方式,并使用意外值调用它们,或使用意外值(例如空值)覆盖现有变量;
2、在Android应用程序的UI界面字段中键入意外值。
3、使用应用程序的意图、公共提供程序和意外值与应用程序交互。
4、篡改网络通信或应用程序存储的文件。
0结束1
参考材料:<<移动互联网应用程序SDK安全技术要求及测试方法>> 文档
推荐阅读
商务合作
更多业务合作,点击下方"阅读原文"