Android手机App安全漏洞

1.源码安全漏洞

1.1 代码混淆漏洞

当前APK文件的安全性是非常令人堪忧的。APK运行环境依赖的文件/文件夹 res、DEX、主配文件Lib 只有简单的加密或者甚至没有任何加密。诸如apktool这类工具可轻易将其破解,再配合其他例如dex2jar、jd-gui等工具基本可以做到:源码暴露、资源文件暴露、主配文件篡改、核心SO库暴露、暴力破解恶意利用等。因此需要对安卓代码进行代码混淆。

代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成无意义的单个或多个字母,如a,Ac,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。代码混淆并不能真正阻止反向工程,只能增大其难度。因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全,但是可以在一定程度上保护开发者的劳动成果。

1.2 Dex保护漏洞

Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,相当于安卓中的.exe文件,Dex为Android应用的核心,保护不当容易被反编译,暴露程序重要信息,面临被植入广告、恶意代码、病毒等风险。

另外当使用DexClassLoader加载外部的 apk、jar 或 dex文件,当外部文件的来源无法控制时或是被篡改,此时无法保证加载的文件是否安全。加载恶意的dex文件将会导致任意命令的执行。

1.3 so保护漏洞

so库一般是程序里面核心代码块,通过Android提供的NDK技术将核心代码用安全性更高的C/C++语言实现并提供给Java层调用来保证程序核心代码的安全。高性能的代码一般都会采取C/C++实现,通过Android的NDK技术来让Java层直接使用。其安全性相对于Java会高很多,相对于Java代码来说其反编译难度要大很多,但对于经验丰富的破解者来说,仍然是很容易的事,可以通过暴力破解或国外高价工具来将其破解。应用的关键性功能或算法,都会在so中实现,如果so被逆向,应用的关键性代码和算法都将会暴露。

1.4 调试设置漏洞

如果在AndroidManifest.xml配置文件中设置了application属性为debuggable=“true”,则应用可以被任意调试,这就为攻击者调试和破解程序提供了极大方便。如果开启,可被Java调试工具例如jdb进行调试,获取和篡改用户敏感信息,甚至分析并且修改代码实现的业务逻辑,例如窃取用户密码,绕过验证码防护等。

2. 组件安全漏洞

2.1组件导出漏洞

组成Apk的四个组件,Activity,Service,Broadcast Receiver 和Content Provider,如果设置了导出权限,都可能被系统或者第三方的应用程序直接调出并使用。组件导出可能导致登录界面被绕过、信息泄露、数据库SQL注入、DOS、恶意调用等风险。

2.2 Activity组件漏洞

Activity是Android组件中最基本也是最为常见用的四大组件之一,是一个负责与用户交互的组件。Activity组件中存在以下常见的漏洞。

 (1)activity绑定browserable与自定义协议

activity设置“android.intent.category.BROWSABLE”属性并同时设置了自定义的协议android:scheme意味着可以通过浏览器使用自定义协议打开此activity。可能通过浏览器对app进行越权调用。

(2)ActivityManager漏洞

ActivityManager类中的killBackgroundProcesses函数,用于杀死

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值