首先,题主询问“Android应用”的安全漏洞,说到Android应用的安全漏洞,如果抛开系统设计问题,其主要原因是开发过程当中疏漏引起的。
但其实也并不能把这些责任都怪在程序猿头上。
所以本答案也将会对Android系统设计以及生态环境做一些阐述。
(如果想了解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,BroadcastReceiver,ContentProvider)。
漏洞:
组件在被调用时未做验证。
在调用其他组件时未做验证。
利用:
调用暴露的组件,达到某种效果,获取某些信息,构造某些数据。(比如:调用暴露的组件发短信、微博等)。
监听暴露组件,读取数据。
建议:验证输入信息、验证组件调用等。android:exported设置为false。使用android:protectionLevel="signature"验证调用来源。
5.WebView
漏洞:
恶意App可以注入JavaScript代码进入WebView中的网页,网页未作验证。
恶意网页可以执行JavaScript反过来调用App中注册过的方法,或者使用资源。
利用:
恶意程序嵌入WebApp,然后窃取用户信息。
恶意网页远程调用App代码。更有甚者,通过JavaReflection调用Runtime执行任意代码。
建议:不使用WebView中的setJavaScriptEnabled(true),或者使用时对输入进行验证。
6.其他漏洞
ROOT后的手机可以修改App的内购,或者安装外挂App等。
Logcat泄露用户敏感信息。
恶意的广告包。
利用nextIntent。
7.总结
Android应用的漏洞大部分都是因为开发人员没有对输入信息做验证造成的,另外因为Intent这种特殊的机制,需要过滤外部的各种恶意行为。
再加上Android应用市场混乱,开发人员水平参差不齐。
所以现在Android应用的漏洞,恶意软件,钓鱼等还在不断增多。
再加上root对于App沙箱的破坏,Android升级的限制。
国内的Android环境一片混乱,惨不忍睹。
所以,如果想要保证你的应用没有安全漏洞,就要记住:永远不要相信外面的世界。
应用安全检测
现在很多人都在使用win10电脑,系统中有些功能对于大部分用户来说没有使用的必要,接下来小编就给大家介绍一下怎么禁用win10检测应用程序安全并提示提升功能。
具体如下:1.首先第一步鼠标右键单击最下方任务栏,在弹出的菜单栏中根据下图箭头所指,点击【运行】选项。
2.第二步打开【运行】窗口后,根据下图箭头所指,在方框中输入【gpedit.msc】并点击【确定】选项。
3.第三步进入【本地组策略编辑器】页面后,根据下图箭头所指,点击【Windows设置】选项。
4.第四步在下拉菜单中,根据下图箭头所指,点击【安全设置】选项。
5.第五步在下拉菜单中,根据下图箭头所指,点击【本地策略】选项。
6.第六步在下拉菜单中,根据下图箭头所指,点击【安全选项】。
7.第七步在右侧窗口中,鼠标右键单击【用户账户控制:检测应用程序安全并提示提升】选项,在弹出的菜单栏中根据下图箭头所指,点击【属性】选项。
8.第八步打开【属性】窗口后,根据下图箭头所指,默认勾选【已启用】。
9.最后根据下图箭头所指,勾选【已禁用】选项,然后点击下方【确定】。
还没有评论,来说两句吧...