您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Android漏洞分析的回顾与思考
Android漏洞分析的回顾与思考罗夏朴香港理工大学计算机系12publicabstractFileOutputStreamopenFileOutput(Stringname,intmode)3:MODE_WORLD_READABLE(allowallotherapplicationstohavereadaccesstothecreatedfile)andMODE_WORLD_WRITEABLE(allowallotherapplicationstohavewriteaccesstothecreatedfile);0:MODE_PRIVATE(thedefaultmode,wherethecreatedfilecanonlybeaccessedbythecallingapplication(orallapplicationssharingthesameuserID)).不正确的访问授权4输入验证问题5发送一个错误格式的Intent到com.avast.android.mobilesecurity.app.scanner.DeleteFileActivity缺乏访问控制的组件6Contentprovider4.2以前缺省是公开的Query,insert,delete,updateURIs•content://com.qihoo360.mobilesafeguard/backlist•content://com.qihoo360.mobilesafeguard/call_history•content://com.qihoo360.mobilesafeguard/whitelist•content://com.qihoo360.mobilesafeguard/privatecontacts缺乏访问控制的组件7Broadcastreceiver缺乏访问控制的组件8Servicescom.android.mmsapp(SmsReceiverService)4.2中被修复://github.com/thomascannon/android-sms-spoof没有加密的网络通信9不恰当地验证SSL/TLS证书10Source:Fahletal.WebView一个简化的浏览器Apps可注册接口让页面进行访问该接口被恶意网页所使用通过Java反射执行更多的操作4.2之后加入限制没有限制file:///引致XSS攻击11~wedu/Research/paper/webview_acsac2011.pdf=314例子某浏览器注册了接口但没有保护12DiscoveredbyChenxiongQian其他可能的漏洞不正确的密钥管理利用全局可读写的文件进行IPC缺乏对动态加载的类的验证利用Intentfilter来进行访问控制广播Intent带有敏感信息记录敏感信息却未正确保护…13为什么众多的Apps有安全隐患?开发者不熟悉安全模型/案例未按照安全开发规范执行文档不清晰缺乏测试时间系统更新缓慢…14其他重要漏洞Master-key漏洞安装Apps时可绕过程序验证Pileup漏洞当系统更新时,普通Apps可以获得系统Apps的权限而不被发现。根源:Android系统更新时采用比较保守的策略来处理系统中已有的Apps及其数据、配置等信息。Permission低版本系统里的恶意App在安装时请求或者声明高版本系统上的Permission。低版本系统无法识别这些Permission,所以不会显示给用户。当系统更新时,该App会被重新安装,并授予这些权限。15漏洞16SharedUID恶意App在低版本系统中声明在高版本系统中的系统Apps所使用的SharedUID。包管理服务(PMS)将不会在高版本系统中安装这些系统Apps。遗留数据如果低版本系统中有和高版本系统中的系统Apps同名的App,而它们没有使用SharedUID,高版本系统的系统App将会被安装,低版本系统中的App将被移除,但新装的系统App会使用低版本系统中的App的数据目录。Permission-tree恶意App在低版本系统中定义一个覆盖高版本系统中的系统Apps的permission所对应的permissiontree。example.foo是如下permissions的根:example.foo.read,example.foo.write.恶意App可依此来使新Apps的permission注册失败。动态分析方法模糊测试(Fuzzing)IntentFuzzer()发送nullintent,检测App是否崩溃IntentFuzzer检测CapabilityLeaks,更加细致/全面地构造Intent,自动化测试动态污点分析18TaintDroidgetPositionTaintSourcex,yx,yaddtaintinta=x;intb=y;Strings=a+“;”+b;send(s);TaintPropagationsendTaintSinkInternetsInform动态分析的难点19运行时间/负荷触发方法路径覆盖特别是当涉及界面操作。本地代码…静态分析方法反编译Dex为Smali代码或者Jar(Javabytecode)Apktool,dex2jar,…分析Manifest.xml确定关键组件并收集其他信息模式匹配MODE_WORLD_READABLESSL/TLS验证中无实现的代码…控制流+数据流分析定义源(source)和目的(sink),然后进行可达性分析条件提取和确定符号计算20静态分析的难点21检测率没有涵盖可被攻击的路径误报率没有考虑路径上的条件,误以为该路径可以被利用计算复杂度路径爆炸Android的特性回调函数Intent的使用…动态类加载和反射本地代码…值得探究的问题22静态分析/动态分析的方法改进使用本地代码的Apps的安全隐患Root机后的保护…本地代码Java本地接口(i.e.,JNI)Java代码和本地代码可通过JNI互相访问从Android2.3开始,整个App可以用本地代码开发本地代码使用情况时间市场下载量百分比2011.5-6多个市场204,0404.52%2011.9-10同上118,3189.42%2011.12-2012.8多个亚洲市场36,00024%2012.6-2013.6GooglePlay227,91116.46%23使用本地代码的Apps使用了System.load()或System.loadLibrary()的Apps类别4,034个Apps没有本地库包含本地代码但没有使用System.load()或System.loadLibrary()在1,738个这类Apps中,394个具有加载本地代码的能力。全部使用本地代码编写的Apps16个,属于游戏和娱乐类Unity,Box2D,Libgdx,Cocos2D,…隐藏通信协议或者加密数据24Java和本地代码的交互25假设数据为源(Source),网络传输为目的(Sink),探究经过Java/本地代码的从源到目的的路径。数据起始于Java,经过本地代码的处理,返回值结束于Java(如通过Java代码传输出去)Java和本地代码的交互26数据起始于Java,传递给本地代码进行处理,无返回值。其他的Java代码从本地获得数据或者本地代码将数据从本地拷贝到Java空间,并从Java层把数据传输出去。或者直接由本地代码把数据传输出去。Java和本地代码的交互27本地代码获得数据,然后传递给Java代码,或者等Java代码来调用,之后通过Java代码传输出去。或者,本地代码获得数据后直接把它传输出去。NDroid:跨Java/本地代码的污点跟踪系统28ChenxiongQian,XiapuLuo,YuruShao,andAlvinChan,“OnTrackingInformationFlowsthroughJNIinAndroidApps”,Proc.ofthe44thIEEE/IFIPInternationalConferenceonDependableSystemsandNetworks(DSN),2014.DVMHookEngine:追踪经过JNI的信息流;InstructionTracer:处理ARM/Thumb指令来决定污点传播方法。SystemLibHookEngine:对常用的系统调用建模来简化污点传播处理。TaintEngine:处理污点的保存和传播。例子29Java代码调用本地方法”callregister”把联系人信息传输到本地方法中;利用GetStringUTFChars把Java字符串转换成c字符串;经过多种字符串处理后调用sendto把信息发送出去。其他应用30寻找与本地代码相关的漏洞检测利用本地代码动态修改字节码来变形的恶意代码Bluebox例子调用sysconf(39)获得系统页面大小;利用memcmp寻找dex文件的魔数”dex035”;调用mprotect改变内存的属性‘只读’-‘读写’修改bytecodeToRootornottoRoot?31Root机之后…32Root机之后的漏洞33攻击RootRequestIntentIntent欺骗错误格式Intent…攻击su攻击本地socket文件攻击superuser的策略数据库获得root权限之后…RootguardYuruShao,XiapuLuo,andChenxiongQian,“RootGuard:ProtectingRootedAndroidPhones”,IEEEComputer,June,2014.34提供细粒度的策略控制尽量保护自己不受攻击Rootguard35待解决的难点36已知漏洞模式,如何可以更加自动、准确、和快速地判断一个App是否有漏洞?如何发现未知漏洞并归纳总结其模式?37
本文标题:Android漏洞分析的回顾与思考
链接地址:https://www.777doc.com/doc-3394312 .html