Android安全开发规范

1、Activity 安全
   描述:可被外部调用的activity,起因是因为 menifest.xml中Activity的属性explorted=true ,导致可以被劫持或者单个activity调用出现异常。
   检测方法:在ADB shell 环境下输入 am start -n com.qihoo.something/com.qihoo360.SomeActivity
   修复方案:
   1. 拒绝外部调用activity。
    (1)如果AndroidManifest中的activity声明了intent-filter,则默认exported为true。如果禁止外部调用需要设置为exported=false 

2、broadcast receiver 安全
   描述:可接受外部广播,起因是因为 menifest.xml中broadcast receiver的属性explorted=true ,导致接受恶意广播出现异常。
   检测方法:在ADB shell 环境下输入 am broadcast send -n com.qihoo.something/com.qihoo360.SomeReceiver
   修复方案:
   1. 拒绝外部的广播。
    (1)在 androidmenifest.xml 中修改broadcast receiver的 explorted=false
    
3、logcat 信息泄露漏洞
   描述:为了方便调试 system.out.println()使用了函数
   检测方法:在ADB shell 环境下输入 logcat 命令
   修复方案:
   1. 删除代码航中的system.out.println()函数
   
4、web接口(SQL注入、XSS、代码执行)
   描述:使用web接口按照公司web安全规范进行执行
   检测方法:'参考web安全规范
   修复方案: 参考web安全规范

5、任意文件读取漏洞
   描述:一般情况下对应用目录进行权限限制
   检测方法:ADB shell下 执行 ls -R -l /data/data/someApp/
   修复方案:chmod -wrx /data/data/someApp/
   
6、webview组件安全
   描述: WebView组件中的接口函数addJavascriptInterface存在远程代码执行漏洞,远程攻击者利用此漏洞能实现本地java和js的交互,可对Android移动终端进行网页挂马从而控制受影响设备。 
   检测方法: 访问精心构造的恶意html文件,导致执行adb 系统命令
   修复方案:
   针对4.2一下版本使用remove addJavascriptInterface,在Android 3.0以下,系统自己添加了一个叫searchBoxJavaBridge_的Js接口,
   要解决这个安全问题,我们也需要把这个接口删除,调用  removeJavascriptInterface方法。这个searchBoxJavaBridge_是跟google的搜索框相关的。
   
7、master-key漏洞
   描述: 在Android中,每个应用都有个加密签名,以确保应用中的内容未被篡改。这次发现的漏洞允许黑客在保持签名完整的情况下,修改应用中的内容。
   检测方法:暂无
   修复方案:安装android master-key漏洞补丁
   
8、自身校验安全(涵应用自行下载第三方软件服务自身校验)
   描述: 自动更新时校验下载的文件是否远端服务器文件,且安装时校验该文件是否是远端服务器下载的文件。
   检测方法:暂无
   修复方案:使用公钥签名或者apk包自带揹包算法等或者CRC校验
   
9、content provider漏洞
  1、任意读取漏洞
   描述:客户端APP的实现中定义了一个可以访问本地文件的Content Provider组件,默认的android:exported="true",对应com.qihoo.android.jobs.html5.LocalFileContentProvider,该Provider实现了openFile()接口,通过此接口可以访问内部存储app_webview目录下的数据,由于后台未能对目标文件地址进行有效判断,可以通过"../"实现目录跨越,实现对任意私有数据的访问(当然,也可以访问任意外部存储数据
   检测方法:暂无
   修复方案:凡只用于内部调用的组件,导出配置都应该设置为false,即android:exported="false"。 provider提供者要对读取者做身份验证,常用方法是获取当前调用者的uid,反查调用者的包名,获取该包的签名做验证。

10、忽略证书验证访问https(ALLOW_ALL_HOSTNAME_VERIFIER)
  1、忽略证书验证访问https(ALLOW_ALL_HOSTNAME_VERIFIER)
   描述:setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER),接受所有证书,导致中间人攻击
   检测方法:暂无
   修复方案: 实现证书锁定的方法有两种:一种是前文提到的实现X509TrustManager接口,另一种则是使用KeyStore。具体可参考 Android开发文档中HttpsURLConnection类的概览说明。
   
11、关键信息网络中传输是否加密
  1、信息传输需进行加密,协议进行加密(SSL)
   描述:信息在网络中传输确保不被泄露用户信息
   检测方法:暂无
   修复方案: 使用加密传输方案(取决于需求而定)
   
12、关键信息本地(设备中)存储是否加密
  1、存储包括但不限于sqlite xml txt dat等文件在本地存储时是否有效加密
   描述:本地存储关键数据时要加密
   检测方法:暂无
   修复方案: 对于用户密码、重要的加密key等信息不得在本地保存。如果确需保存,不得以明文或者简单Hash(如MD5)形式保存。
简单Hash有很大概率可以利用彩虹库碰撞出来。至少要使用用户信息和一个本地独特的信息在一起做Hash,比如密码+IMEI。这样可以极大降低本碰撞出的机率。

13、webview API接口是否进行白名单限制
  1、确保webview接口调用系统功能时仅限于该应用的功能范围之内
   描述:webview接口避免使用第三方程序恶意使用发送短信,拨打电话,删除文件
   检测方法:暂无
   修复方案: 白名单进行限制,功能仅限于该应用的功能范围之内

14、对于onreceive和oncreate等过程传递的数据没有办法获取身份,那么就需要在业务逻辑上避免用此类接口控制重要逻辑.

15、动态加载jar包时一定要有某种安全校验机制(如:来源,签名校验,md5(不推荐))

16、用SharedPreference来保存数据时,对于敏感信息的key尽量使用缩写或者其他不易知其意的命名,比如:KEY_PHONENUMBER, KEY_SERVER_IP_ADDRESS,应该改为KEY_P_N, KEY_S_I_A等;


四、android渗透工具
   Ad Network Detector (1.2): http://market.android.com/details?id=com.lookout.addetector
   App Backup & Restore (1.0.5): http://market.android.com/details?id=mobi.infolife.appbackup
   App Cache Cleaner (1.1.3): http://market.android.com/details?id=mobi.infolife.cache
   ARPspoof: https://github.com/robquad/Arpspoof/Arpspoof.apk/qr_code
   CACertMan (0.0.2-20110906): http://market.android.com/details?id=info.guardianproject.cacert
   CacheMate for Root Users Free (2.4.2): http://market.android.com/details?id=com.aac.cachemate.demo
   Carrier IQ Detector (1.1.1): http://market.android.com/details?id=com.lookout.carrieriqdetector
   DeuterIDE (0.5): http://market.android.com/details?id=com.didactic.DeuterIDE
   Devcheats (1.2): http://market.android.com/details?id=miquelco.devcheats
   DroidVPN (1.8.7c): http://market.android.com/details?id=com.aed.droidvpn
   Gibberbot (0.0.9-RC4): http://market.android.com/details?id=info.guardianproject.otr.app.im
   InfoSec Reference (40): http://market.android.com/details?id=hackers.reference.free
   IPv6 and More (2.1): http://market.android.com/details?id=com.tsts.ipv6

 

------------------ 摘取自360安全编码规范

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章