SDK的一些安全测试

2023-03-16 8,819


 

SDK安全要求


 

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


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


 

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的基本安全测评:



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安全技术要求及测试方法>> 文档



本文作者:编码安全

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/197686.html

Tags:
评论  (0)
快来写下你的想法吧!

编码安全

文章数:12 积分: 20

编码安全、安全编码! 公众号《编码安全》

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号