浅谈:APP有哪些常被黑客利用的安全漏洞

首先,说到APP的安全漏洞,身为程序猿的大家应该不陌生;如果抛开安卓自身开源的问题的话,其主要产生的原因就是开发过程中疏忽或者代码不严谨引起的。但这些责任也不能怪在程序猿头上,有时会因为BOSS时间催得紧等很多可观原因。所以本文会对 Android 系统的开源设计以及生态环境做一些浅谈。

1. 应用反编译
漏洞:APK 包非常容易被反编译成可读文件,稍加修改就能重新打包成新的 APK。
利用:软件破解,内购破解,软件逻辑修改,插入恶意代码,替换广告商 ID。
建议:使用 ProGuard 等工具混淆代码,重要逻辑用 NDK 实现。
例子:反编译重打包 FlappyBird,把广告商 ID 换了,游戏改加插一段恶意代码等等。

2. 数据的存储与传输
漏洞:外部存储(SD 卡)上的文件没有权限管理,所有应用都可读可写。开发者把敏感信息明文存在 SD 卡上,或者动态加载的 payload 放在 SD 卡上。
利用:窃取敏感信息,篡改配置文件,修改 payload 逻辑并重打包。
建议:不要把敏感信息放在外部存储上面;在动态加载外部资源的时候验证文件完整性。
漏洞:使用全局可读写(MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE)的内部存储方式,或明文存储敏感信息(用户账号密码等)。
利用:全局读写敏感信息,或 root 后读取明文信息。
建议:不适用全局可读写的内部存储方式,不明文存储用户账号密码。

3. 密码泄露
漏洞:密码明文存储,传输。
利用:
root 后可读写内部存储。
SD 卡全局可读写。
公共 WiFi 抓包获取账号密码。
建议:实用成熟的加密方案。不要把密码明文存储在 SD 卡上。

4. 组件暴露 (Activity, Service, Broadcast Receiver,Content Provider)
漏洞:
组件在被调用时未做验证。
在调用其他组件时未做验证。
利用:
调用暴露的组件,达到某种效果,获取某些信息,构造某些数据。(比如:调用暴露的组件发短信、微博等)。
监听暴露组件,读取数据。
建议:验证输入信息、验证组件调用等。android:exported 设置为 false。使用 android:protectionLevel="signature" 验证调用来源。

5.WebView
漏洞:
恶意 App 可以注入 JavaScript 代码进入 WebView 中的网页,网页未作验证。
恶意网页可以执行 JavaScript 反过来调用 App 中注册过的方法,或者使用资源。
利用:
恶意程序嵌入 Web App,然后窃取用户信息。
恶意网页远程调用 App 代码。更有甚者,通过 Java Reflection 调用 Runtime 执行任意代码。
建议:不使用 WebView 中的 setJavaScriptEnabled(true),或者使用时对输入进行验证。

6. 其他漏洞
ROOT 后的手机可以修改 App 的内购,或者安装外挂 App 等。
Logcat 泄露用户敏感信息。
恶意的广告包。
利用 next Intent。

7. 总结
APP的漏洞大部分都是因为开发人员没有对输入信息做验证造成的,另外因为 Intent 这种特殊的机制,需要过滤外部的各种恶意行为。再加上安卓应用市场混乱,开发人员水平参差不齐。所以现在 Android 应用的漏洞,恶意软件,钓鱼等还在不断增多。

再加上 root 对于 App 沙箱的破坏,Android 升级的限制。国内的安卓环境一片混乱,惨不忍睹。所以,如果想要保证你的应用没有安全漏洞,就要记住:永远不要相信外面的世界。

最后推荐:爱内测APP漏洞安全检测(www.ineice.com/) 服务可以一键找出APP潜在的漏洞和安全问题,为您的APP提供全方位的安全检测。

时间: 2024-10-14 14:39:50

浅谈:APP有哪些常被黑客利用的安全漏洞的相关文章

柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布

柔弱的APP如何自我保护,浅谈APP防御手段,使用360加固助手加固/签名/多渠道打包/应用市场发布 由于JAVA和Android的平台型,所以APP很容易被反编译,这对于我们开发者来说,是一个不想要的结果,对于用户来说,就是一个噩耗,而安全性,一直是我们关注的焦点,今天,我们来聊聊这个安全性,和一起玩玩Apk加固! 一.我们为什么要提高APP的安全性 手机已经是不会离开身边了,APP更是重中之重的环节,我们衣食住行,基本上大部分都是靠APP来完成的,这样的话,APP的安全就是一个很大的挑战了,

浅谈APP测试经验

近年来,随着智能手机兴起,很多App软件不断涌起.那今天我浅谈一下本人在工作如何测试App软件与经验. 一.App三种开发模式介绍(测试App时,必须要先了解您测试的App是用什么模式开发的) 1.Native APP 2.Web APP 3.Hybrid AP 对App开发模式不清楚的人.请自行百度. 二.通用App测试点(这些点必须测试) 1. 使用App时,手机耗电情况: 2 .App占用手机内存情况: 3 .App安装包的大小: 4. 使用App时,流量消耗情况: 5 .App在WiFi

APP开发设计应以人为本!浅谈APP交互设计原则

为什么APP开发设计需要原则?设计原则其实就是对一些设计过程中基于人类的认知规律对设计做出的一些指导性原则,并且对已经成为行业共识的设计经验做个总结,用来指导设计师界定问题.提高效率. 先就APP开发设计 http://www.czwew.com 常州紫竹云科技产品经理分享交互设计的时候最为大家所认可的几条设计原则:可学习性.一致性.简洁性.流畅性.及时反馈.除了这么六个?还有其他的吗?你放心,如果需要还有更多. 一.经常用的设计原则有哪些? 1.可学习性   目标用户在已有的知识和经验基础上,

浅谈APP消息推送

作为移动端APP产品运营最重要的运营手段,消息推送(push)被越来越多的APP厂商所重视,在信息泛滥的移动互联网时代,手机APP应用安装得越来越多,小小的手机屏幕每天收到的消息推送也越来越多,站在用户的角度去想,你会看每一条推送的内容吗? 消息推送(push)是App运营最优质的渠道,运用得当可以帮助产品运营人员更高效地实现运营目标,相反盲目得push也将带来反作用. APP消息推送具有以下几个特点: ①量大,用户数即是可push覆盖的数量.假如一个APP有5000万的活跃用户,且都取得了用户

测试员浅谈App测试的重点

近年来,手机app也时持续大热.基于安卓和ios的手机app,更是受到众多投资者的青睐.而手机软件测试行业也是如此. 现在听的最多的是web测试和App测试,但实际上两者本质上没有什么区别,性质都一样! 手机上的app分为基于HTML5的app(类似于pc上的b/S应用)和本地app(类似于C/S结构).因此测试上是完全结合web的b/s和c/s测试经验. 二者在实际的测试工作中,很大的差异来自于考虑的兼容性因素. 1.web测试需要考虑自身功能的实现与浏览器的兼用性: 2.终端App测试除了要

浅谈APP漏洞挖掘之逻辑漏洞

作者:Can 联系方式:[email protected] 文章中若无特别说明,实例皆为本人自主挖掘. 转载请注明出处,本文仅为个人经验总结,介绍的并非所有方法,只是一些最常见的方法.如有错误,烦请指出. 0x00 简介 本文主要介绍APP漏洞挖掘中逻辑漏洞,包括任意用户密码重置,支付漏洞,任意用户未授权登录. 0x01 任意用户密码重置正文 首先,我们来看看任意用户密码重置. 方法一:密码找回的凭证太弱,为4位或6位纯数字,并且时效过长,导致可爆破从而重置用户密码. 这里我们来看一个实例,目前

浅谈APP的分享功能,有时候社交裂变形式比内容更“重要”

回顾2018年的移动互联网,"社交裂变""下沉"等成为年度关键词.一方面我们可以看到社交裂变助推用户增长,另一方面我们也看到了以拼多多.趣头条为代表的互联网企业对于社交裂变模式表现出的空前关注度.作为社交裂变传播中的重要一个环节,APP的社交分享功能的重要性自然就不言而喻了. 如今的社交分享已然成为了APP的标配,用户每天都在从不同的APP中分享内容到朋友圈.QQ.微博等社交平台.这个过程可以实现APP宣传.拉新.留存.和用户保持粘度等各种目标.但是效果的好坏,效率

浅谈SQL优化入门:3、利用索引

0.写在前面的话 关于索引的内容本来是想写的,大概收集了下资料,发现并没有想象中的简单,又不想总结了,纠结了一下,决定就大概写点浅显的,好吧,就是懒,先挖个浅坑,以后再挖深一点.最基本的使用很简单,直接就写在这里吧. 索引是众所周知的可以提高查询的速度,且针对的是具体的字段,使用方式为( 不具体指明则建立非聚集索引): CREATE INDEX <索引名> ON <表名(关系名)>; e.g. CREATE INDEX yearIndex ON movie(year); 而撤销索引

浅谈QMVC APP开发

 自从吾修主页上发布了QMVC源码,非常感兴趣,用了半月的时间学习,真的感觉收益非浅,在此声明非常感谢吾修大哥的分享! 1.轻快简单,框架就几个类,简单,当然代码少也就运行快!单纯的MVC,使的如果你想扩展框架,可以轻易的在QMVC上增加和减少功能,也就是说更容易的去修改和读懂源码. 2.可以与webform框架融合,也就是说你用webform和mvc共同在同一个项目中运行. 3.QMVC APP开发,QMVC APP可以轻易实现多个QMVC项目合并到一个项目中运行,也可以轻易将其分离开独立