Android应用安全检测项目

Android应用安全检测项目

使用静态检测引擎对APK文件进行反编译,扫描反编译后的代码文件即可发现应用的安全漏洞。
一般有以下内容,比较有参考价值,部分是平时编码时有可能忽略的问题,在此整理供大家参考。

1. 基础信息

1.1 权限过度声明风险检测

检测应用中是否存在权限滥用情况。

权限是一种安全机制,主要用于限制应用程序内部某些具有限制性特性的功能使用以及应用程序之间的组件访问。Android通过在AndroidManifest.xml中增加权限来控制限制性功能的使用和组件访问。权限滥用是指应用权限开放过多、自定义权限限制不严格,导致攻击者利用应用权限可以使用某些特殊的功能,如拨打电话、访问摄像头、利用麦克风录音、编写并植入木马等。可能导致隐私数据泄露,钓鱼扣费等风险。

建议开发者自查,删除AndroidMainfest.xml文件中不必要的权限配置,自定义权限添加权限保护等级配置。

1.2 越权行为检测

检测应用中是否包含企业或者监管机构禁止的越权行为。

权限是一种安全机制,主要用于限制应用程序内部某些具有限制性特性的功能使用以及应用程序之间的组件访问。Android通过在AndroidManifest.xml中增加权限来控制限制性功能的使用和组件访问。恶意应用利用已申请权限可以在未被授权的情况下读取、修改通讯录,拨打电话,发送地理位置,访问浏览器历史记录等。可能导致隐私数据泄露,钓鱼扣费等风险。企业或者监管机构从安全性考虑,禁止应用申请某些权限,采取最小权限的原则。

1.3 资源文件中包含APK检测

检测应用资源文件中是否包含APK。

应用的资源文件中包含的APK文件可能会携带恶意程序或造成其他不可预知的风险。

1.4 其他内容

  • 第三方SDK列表
    整理出应用使用的第三方SDK信息,及在应用中的作用。
  • 应用权限列表
    整理出应用中声明的权限信息,及在应用为和使用该权限。
  • 恶意程序排查

2. 内容风险

2.1 特定图片检测

检测应用中是否含有色情、暴力等类型的图片。

应用中包含色情、暴力等类型的图片,可能会给企业带来法律、声誉以及其他不可预知的影响。

2.2 特定词汇检测

检测应用中是否含有企业关注的特定词汇。

应用中包含企业关注的特定词汇,特定词汇的范围由企业定义。在应用中如果包括这些词汇,可能会给企业带来法律、声誉以及其他不可预知的影响。

3. 行为检测

3.1 应用行为检测

整理当前应用的敏感行为,并说明其原因。
如:获取精准的GPS位置、开机时自动启动、直接安装应用程序等。

4. 数据库存储风险

4.1 测试信息泄露风险检测

检测应用是否存在测试信息,例如内网URL、手机号码等。

如果APK文件中存在内网URL地址,可能会被盗取并恶意利用在正式服务器上进行攻击如重放攻击,或者攻击安全薄弱的测试服务器以获取安全漏洞或者逻辑漏洞等。

应用正式发布前删除全部测试数据。

4.2 数据库注入漏洞

检测应用是否存在数据库注入漏洞。

SQL注入攻击指通过构建特殊的输入作为SQL的查询参数传入应用程序,从而欺骗应用程序执行恶意的SQL命令。Android应用开发时,如果开发者使用拼接字符串形式构造的SQL语句去查询底层SQLite数据库时,则容易发生SQL注入。攻击者可以利用此漏洞攻击应用的本地数据库,导致存储的敏感数据信息被查询泄露,例如用户名、密码等,或者产生查询异常导致应用崩溃。

不要使用拼接字符串形式构造的SQL语句去查询底层SQLite数据库,建议使用参数化查询方式来查询数据库。 修复代码示例如下: String sql = “SELECT * FROM table where name=?” ; sqldb.rawQuery(sql, new String[]{et_name.getText().toString()});

4.3 日志数据泄露风险检测

检测应用是否存在日志数据泄露风险。

调试信息函数可能输出重要的调试信息,其中包含的信息可能导致用户信息泄露,泄露核心代码逻辑等,为发起攻击提供便利,例如:Activity的组件名;通信交互的日志;跟踪的变量值等。

在发布程序之前关闭所有调试日志函数的调用,或者使用统一的Log控制类,这样可以更加方便的控制Log的输出打印。

4.4 URL硬编码风险检测

检测应用是否存在URL硬编码风险。

URL硬编码是指将URL地址信息以硬编码的方式写在应用代码中。攻击者反编译应用包后,可以获取应用包中的URL地址信息,并攻击其所在服务器。如果服务器的安全防范能力薄弱,攻击者可以破解服务器的安全防护措施,从而获取服务器上存储的敏感信息。

建议开发者自查,删除存在敏感信息的URL地址;采用动态生成的方式请求URL地址,不要硬编码在程序代码中。

4.5 RSA加密算法不安全使用风险检测

检测应用中是否存在RSA加密算法不安全使用情况。

RSA加密算法是一种非对称加密算法,是第一个既能用于数据加密也能用于数字签名的算法。当其密钥长度过短,通常认为长度小于512位时,就会存在较高的被破解风险;没有使用正确的工作模式和填充方式,将会存在重放攻击的风险。因RSA加密算法不安全使用造成的加密方法失效,可能造成客户端隐私数据泄露、加密文件破解、传输数据被获取、中间人攻击等后果,导致用户敏感信息被窃取。

1.使用RSA算法进行数字签名时,建议密钥长不要低于512位,推荐1024位。
2.使用RSA加密时,如果设置工作模式为ECB,建议填充方式为OAEPWithSHA256AndMGF1Padding。

4.6 AES/DES加密算法不安全使用风险检测

检测应用中使用AES/DES加密算法时是否使用了不安全的加密模式。

AES/DES是Android程序中常用的两种对称加密算法,其工作模式有ECB、CBC、CFB和OFB。当其使用ECB或OFB工作模式时,加密数据可能被选择明文攻击CPA破解。加密方法失效可能造成客户端隐私数据泄露、加密文件破解、传输数据被获取、中间人攻击等后果,导致用户敏感信息被窃取。

使用AES/DES算法时,当使用CBC和CFB工作模式。

4.7 FFmpeg文件读取漏洞

检测应用中是否存在FFmpeg文件读取漏洞。

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。FFmpeg可以处理HLS(HTTPLiveStreaming)播放列表,而HLS播放列表可以引用外部文件。通过在AVI文件中添加自定义的包含本地文件引用的HLS播放列表,可以在文件播放过程中显示本地文件的内容。该漏洞可能导致服务器端以及应用内存储的个人身份信息、密码等重要敏感信息泄露。

4.8 证书文件明文存储风险检测

检测应用资源文件中的证书文件是否为明文存储。

应用中的证书文件被用来验证服务器的合法性,以及在与服务器通信的过程中对传输数据进行加密、解密,保证数据传输的保密性、完整性。证书文件明文存储可能导致如下风险:

  1. 攻击者可以篡改明文存储的公钥证书,进行中间人攻击,解密通过HTTPS协议传输的数据,窃取用户的账号、密码等敏感信息。
  2. 攻击者可以利用泄露的明文证书,批量向服务器发送数据请求,进行注册、刷单等操作,导致服务器相应异常或者损害开发者的利益等。

4.9 SD卡数据泄露风险检测

检测应用是否使用SD卡存储数据。

使用外部存储实现数据持久化,这里的外部存储一般就是指SD卡。使用SD卡存储的数据,不仅本应用访问,任何有访问SD卡权限的应用均可以访问。如果在SD卡上存储账号、密码等敏感信息,容易导致信息泄漏。

对数据进行持久化存储的时候,尽量避免重要信息存放在外部设备(SD卡)上。

4.10 数据越权备份风险检

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值