Android的安全问题报告
来源:互联网 发布:mp3 编辑软件 mac 编辑:程序博客网 时间:2024/05/21 04:23
新产品总是伴随着新的攻击者,两者就像一对好基友,你追我赶,各种捉迷藏。
下面分两部分介绍Android安全问题,第一部分是从非技术层面介绍Android安全问题和解决思路,参考[1];第二部分是从技术层面介绍Android的不安全因素,参考[2], 摘取了一些重点和图片, 想看完整的可以移步[2]。
第一部分:Android的安全问题和解决思路
- 风险和易攻击点:
- 用户无法承担管理者的重任。用户拥有安装app、确定给予app权限、任意下载data并且访问不安全的网络的权限。这就像360弹出的是否允许权限的框一样,用户根本不知所以,一般都无差别选择“是”。
- 应用市场管理差。Android的应用市场没有很好的检查应用安全性。
- 任意连接PC。没有对SD卡的安全管理,SD上的文件可以被任意访问。
- 应用权限管理。用户不明白弹出权限的含义,大量读写SMS、地理信息以及Phone的权限都被给予了。
- 恶意应用劫取应用交互信息。应用截取应用间传输数据的Intent信息,从而获取重要数据和干扰应用的正常运行。
- 第三方应用权限过高。Android中大量包括通讯录、短信、键盘等在内的重要应用都可以更换,容易丢失重要数据。即使Facebook和Twitter这样的大公司也使用过明文传输密码和账号,更何况躺在床上敲代码的程序员呢。
- Rooting。Rooting类似于iPhone中的越狱。一旦越狱,Android有没有很好的管理系统级别的权限,不法应用将获得高级权限。
- WIFI。通过wifi共享从而进入内部网络,同时使用大量无加密的不可靠WIFI容易丢失信息。
- 传统浏览器木马。不多说了。PC上木马泛滥。
- 隐私信息。大量GPS等地理信息被窃取。
- 不可靠的生产厂商。HTC曾在系统级别的应用上理所当然的收集accounts、Phone numbers、SMS等信息,并且还没有把接口保管好,容易被第三方应用窃取。
- 解决思路
- 关闭root。必须关闭,否则手机一旦被刷机所有防护功能都失效。
- 权限管理。默认Android只能选择是否给予权限从而安装与否,现在需要能够选择功能或者更新Android源码将部分权限回收。
- 擦除信息。将擦除信息的应用装载为root级别,从而防止此类安全应用被下载。
- 设备死锁。图案密码是必须的。
- 数据加密。加密所有重要数据。
- 市场严格过滤。查看市场来源,甚至使用apkinspector来查看assets、resources和certificates保证安全。
- 应用密码认证。使用密码来安装市场中的应用,防止恶意安装。
- 链接安全监测。
- 通话权限管理(MDM)。使用黑名单限制过滤通话权限。使用通话或者短信时需要过问或者直接屏蔽。
- NFC支付功能限制。
第二部分:Android的安全问题和解决思路
1. 敏感数据通过Permission System Service保护,权限由权贵把持。
2. 码农的安全意识很重要。
- 不要把应用数据放在不加密的SD卡中,从而全局文件泄露。
- content provider需要保护,否则容易遭受权限代理攻击。
- 注意关闭log信息,否则重要信息容易被外部读取,logcat即可。
- 加密网络请求,传输容易被窃取,使用可靠的协议。使用https或者ssl协议。
- 考虑到丢失手机时,应用一定要有锁。
- 不要在程序中存储路径。
- Permission越少越好,尽量调用应用。
3. 用户证书
Android没有严格的开发者证书,但是它依旧很重要,丢了密钥沙盒也保护不了你。
同样的签名可以共用UID,意味着获得用户的数字签名后可以去读取用户信息。保护好私钥。
4. Android安全架构
- 最底层认证:Linux DAC机制,每个App拥有UID和GID。系统功能或者System Services调用open等系统调用则需要Linux DAC。
- 上层认证:组件认证,通常是被调用一方进行权限控制,比如应用调用系统能力(指System Server层的System Services)可能有System Server鉴权;应用间调用则由被调用一方进行IPC认证,Android采用的IPC认证为Binder进制的Intent fileters、Permissions以及Signatures来进行管理。
类似Browser Process:Binder机制->System Call
普通应用:Binder机制->System Server/Services->System Call
5. 沙盒
应用都存在于自己的沙箱里。防止病毒在应用间相互感染。
问题来源:通过反射和java层对接;native code修改进程空间,动态修改应用状态。
Android应用的Binder机制:Intent filters用于过滤,Permissions摆设而已,Signatures很有用。
6. 总结:攻击入口,千疮百孔。
7. 权限控制不是万能的,最好使用签名控制,比较靠谱。
下图说明权限控制保证恶意应用无法直接申请到权限。
但是应用通过其它软件的漏洞接口来实现wifi等功能。
关键得签名控制,AndroidManifest中有权限控制。
http://developer.android.com/guide/topics/manifest/permission-element.html
protectionLevel="normal" 无提示
protectionLevel="dangerous" 有提示
protectionLevel="dangerous" 有提示
protectionLevel="signature" 只有相同签名的应用才可以互相间调用。
参考资料:
[1] Ryan Farmer "A Brief Guide to Android Security"
[2] 老王 Google安全团队对Android安全的认识
- Android的安全问题报告
- Android的安全问题
- Android安全问题的博客推荐
- android安全问题
- android 安全问题
- android手机root后的安全问题
- Android手机Root后的安全问题汇总
- android手机root后的安全问题(二)
- android开发中注意的安全问题
- android开发中遇到的安全问题
- Android中其他常见的安全问题
- Android Handler 发送消息的线程安全问题
- Android签名与权限的安全问题(3)
- Android 主要涉及的安全问题调研
- Android下需注意的安全问题
- android DateFormat 线程安全问题
- Android安全问题-网络传输
- android 开发之安全问题
- nokia5110液晶初始化
- 实例讲解如何科学的建设外链
- 如何在AppDeleGate.m上添加按钮或画面(view)
- eclipse构建maven的web项目
- 经典线程同步总结 关键段 事件 互斥量 信号量
- Android的安全问题报告
- 结合mysqlbinlog与mysqldump进行MySQL数据备份与恢复(适用于较小的数据量)
- Apple Official Example for every control: UICatalog.xcodeproj
- 隐藏和覆盖
- SOAP消息的格式
- $.ajax not working in chrome but is working in firefox and IE
- 第十一周项目3-6-调用函数输出1000内的回文素数
- 【Android】使用LinearLayout实现计算器效果
- 判断字符串中的字符是否唯一