SDK的一些安全测试

SDK安全要求

在android应用开过过程中,SDK是android应用中不可缺少的一部分,通过集成各种第三方的SDK可以减少APP应用开发的工作量。但是在APP应用中集成各种第三方SDK可能存在各种安全的风险,除了一些基础的安全问题还有一些致命的异常崩溃的安全问题,通过验证测试分析sdk的安全风险尽可能规避安全风险。

下面来源:<<移动互联网应用程序SDK安全技术要求及测试方法>> 文档中,它罗列出来sdk中的安全基本要求:

图片[1]-SDK的一些安全测试-NGC660 安全实验室
图片[2]-SDK的一些安全测试-NGC660 安全实验室
图片[3]-SDK的一些安全测试-NGC660 安全实验室
图片[4]-SDK的一些安全测试-NGC660 安全实验室
图片[5]-SDK的一些安全测试-NGC660 安全实验室

SDK安全测评

SDK可能存在的安全风险包括:

  1. 这些安全风险不仅包括会出现sdk中可能存在代码漏洞,这会促使APP应用容易受到攻击;
  2. 第三方SDK没有在维护更新或无法使用;
  3. 使用第三方免费SDK可能存在知识产权的问题。

所以在sdk集成之前很有必要对sdk进行测试验证分析,验证测试方式:

  1. 可以检测第三方依赖性中的漏洞的插件(例如:dependency-check-gradle)在应用接入SDK前进行验证测试sdk是否存在安全漏洞;
  2. 也可以通过jeb或者jadx将sdk的代码反编译分析是否存在可能的漏洞;
  3. 对sdk的隐私数据保护、访问权限的控制进行测试;
  4. 对sdk的行为LOG和调用栈LOG进行测试。

SDK的基本安全测评:

图片[6]-SDK的一些安全测试-NGC660 安全实验室
图片[7]-SDK的一些安全测试-NGC660 安全实验室
图片[8]-SDK的一些安全测试-NGC660 安全实验室
图片[9]-SDK的一些安全测试-NGC660 安全实验室
图片[10]-SDK的一些安全测试-NGC660 安全实验室
图片[11]-SDK的一些安全测试-NGC660 安全实验室
图片[12]-SDK的一些安全测试-NGC660 安全实验室

SDK数据存储风险测评

图片[13]-SDK的一些安全测试-NGC660 安全实验室
图片[14]-SDK的一些安全测试-NGC660 安全实验室
图片[15]-SDK的一些安全测试-NGC660 安全实验室
图片[16]-SDK的一些安全测试-NGC660 安全实验室
图片[17]-SDK的一些安全测试-NGC660 安全实验室
图片[18]-SDK的一些安全测试-NGC660 安全实验室
图片[19]-SDK的一些安全测试-NGC660 安全实验室
图片[20]-SDK的一些安全测试-NGC660 安全实验室
图片[21]-SDK的一些安全测试-NGC660 安全实验室

SDK数据交互风险测评

图片[22]-SDK的一些安全测试-NGC660 安全实验室
图片[23]-SDK的一些安全测试-NGC660 安全实验室
图片[24]-SDK的一些安全测试-NGC660 安全实验室
图片[25]-SDK的一些安全测试-NGC660 安全实验室

SDK重要组件测评

图片[26]-SDK的一些安全测试-NGC660 安全实验室
图片[27]-SDK的一些安全测试-NGC660 安全实验室

SDK代码及资源文件安全测评

图片[28]-SDK的一些安全测试-NGC660 安全实验室
图片[29]-SDK的一些安全测试-NGC660 安全实验室
图片[30]-SDK的一些安全测试-NGC660 安全实验室

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 块期间,始终擦除高风险应用程序处理的所有机密信息。

图片[31]-SDK的一些安全测试-NGC660 安全实验室

下面几种方式可以对SDK中异常进行动态分析:

1、使用Xposed或者frida工具进行hook方式,并使用意外值调用它们,或使用意外值(例如空值)覆盖现有变量;

2、在Android应用程序的UI界面字段中键入意外值。

3、使用应用程序的意图、公共提供程序和意外值与应用程序交互。

4、篡改网络通信或应用程序存储的文件。

0结束1

参考材料:<<移动互联网应用程序SDK安全技术要求及测试方法>> 文档

本文作者:编码安全

本文为安全脉搏专栏作者发布:https://www.secpulse.com/archives/197686.html

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享