阅读更多

0顶
0踩

移动开发

原创新闻 Android平台漏洞挖掘与利用

2015-10-28 09:33 by 副主编 mengyidan1988 评论(0) 有3523人浏览
由于Android平台特殊的生态,每一个Android设备中存在着Google、手机开发商、芯片厂商等多种来源的软件。每个软件模块没有统一的安全审计制度和测试流程,导致质量良莠不齐,对于安全研究者乃至于恶意攻击者来说,一直是一个比较好的目标。

从安全的角度考虑, Android平台利用Linux的uid特性把权限做了很好的区隔,使得在App层级,权限比较受限,一方面阻隔了许多恶意软件可能造成的破坏,另一方面也限缩了用户能够掌控自己设备的能力。例如,卸除用不到的预装软件、清理、加速、杀毒这类的功能,在Android平台上因为权限的关系,都不容易进行。

为了因应用户强烈的需求,Rooting App工具软件诞生了。Rooting App利用各种系统漏洞帮用户提升权限,也让Android漏洞在近年来被大量挖掘,利用的手法也不断演进,同时也促使厂商更注重Android平台的安全性。

在Android平台上,最底层也是各种权限控制的中枢是Linux内核。Linux内核主体是社群维护的操作系统,也包含了Google、手机厂商、芯片厂商的各种扩展。其中,手机厂商与芯片供货商提供的设备驱动这一部分,一直以来都存在许多安全漏洞。例如,2012年底开始出现mmap类的漏洞利用,第三方软件可以轻易地修改内核数据甚至代码来提权。Samsung平台上的CVE-2012-6422漏洞,算是其中大家比较熟知的。
引用
注:mmap是一个用来映像内存空间的系统调用,常用于从内核暴露一段地址空间让用户态可以更有效率的进行内存读写。

除了mmap类的漏洞外,用户态与驱动数据交换导致的任意地址写漏洞也在2013年开始大量被发现。例如Qualcomm平台上的copy_from_user类漏洞CVE-2013-6123,第三方软件可以用伪造的数据与摄像头驱动做交互,进而修改任意地址的内容。
引用
注:copy_from_user是一个Linux内核中的应用程序接口,用于从用户态拷贝数据到内核态。例如,应用程序设定内核驱动中的某个变量,常会用到这个接口。




提到Android漏洞,当然不得不提2013年出现的通用型漏洞。CVE-2013-6282算是最早被用在Rooting App中的通用型漏洞,它是一个内核层级的应用程序接口调用缺少必要的参数检查,导致攻击者可以透过一个简单的系统调用做到任意地址写。搭配Linux内核的信息泄露设计疏失,使得利用这个漏洞做提权的工具几乎可以横扫当时所有的Android设备。

其他包括CVE-2014-3153,以及CVE-2015-3636,都算是存在Linux内核操作系统的漏洞,可以适用于大部份Android设备。其中,近期发现的CVE-2015-3636是一个关于内存分配与释放的逻辑错误,是一种比较难被发现而且利用门坎较高的漏洞类型,特征不如前面两个类型明显,需要对于代码逻辑有较深的理解才能挖到漏洞。而漏洞利用时需要的合适攻击目标也比较难定位,这一部分只能依靠平时积累经验以及多充实工具库,如此一来,当漏洞出现时能尽快找到合适的武器。

除了权限中枢Linux内核以外,对于拥有较高权限的进程也是被关注的目标,例如mediaserver这样的进程,由于需要处理多种媒体文件格式,使用了大量第三方应用库,也同时引入了很多安全漏洞。其中,Stagefright的一系列问题在2015年8月开始大量被披露,其攻击手段就是利用第三方应用库处理较复杂的媒体文件格式时,没考虑到的边界情况导致溢出,进而控制mediaserver。由于这些媒体文件可以以MMS的形式传递到手机,对Android手机用户是一个很大的威胁。



相较于media权限,以system权限执行的system_server更是攻击者觊觎的一个目标,CVE-2014-7911就是通过第三方软件准备的数据使得system_server进程执行任意代码,获取system权限后,更多的攻击目标会被暴露在外,例如使用Qualcomm一系列芯片的手机上存在的CVE-2014-4322漏洞,在正常的情况下,第三方软件是无法与其相关的驱动做交互。然而,利用CVE-2014-7911提升到system权限后,CVE-2014-4322相关的设备文件就能被打开,进而造成有效的攻击。
只要人类继续写代码,漏洞无可避免地会被持续制造出来,并且被挖掘与利用。一方面,开发和测试人员应该关注的是如何有效地审计代码,在用户使用之前找出可能的漏洞。另一方面,假设漏洞必然存在,厂商应该与安全研究人员积极的合作,更快速地修补漏洞。然而,由于漏洞修补的实时性存在很多不可控的因素,如何使用更底层的保护机制避免漏洞被有效地利用,将会是手机厂商与芯片厂商需要投入研究的方向。

本文总结自【技术公开课】Android平台漏洞挖掘与利用,演讲PPT>>下载地址

作者简介:

吴家志,奇虎360高级安全研究员,美国北卡州立大学计算机科学博士,研究方向主要为系统安全、虚拟化安全。从事网络安全设备开发多年,近年主要关注Android平台系统安全,曾独立发现多个Linux内核,厂商驱动0-day漏洞,目前带领奇虎360无线安全研究院ROOT团队进行漏洞挖掘与利用研究以及超级ROOT产品开发,是C0RE Team创始成员之一。
  • 大小: 35.5 KB
  • 大小: 49.1 KB
来自: CSDN
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 深入探索Jakarta Struts:Java Web应用程序开发框架

    Jakarta Struts是一个功能强大的Java Web应用程序开发框架,通过采用MVC架构和约定优于配置的原则,帮助开发人员构建可维护、可扩展和易于测试的应用程序。Jakarta Struts是一个用于Java Web应用程序开发的优秀框架,它提供了一种模型-视图-控制器(MVC)的架构,帮助开发人员构建可维护、可扩展和易于测试的应用程序。MVC架构:Jakarta Struts采用MVC架构,使得开发人员可以将业务逻辑、用户界面和控制流程分离开来,提高了代码的可读性和可维护性。

  • jakarta struts中文版

    jakarta struts中文版

  • Structs入门

     .style2 {color: #FFFFFF}.style2 {color: #FFFFFF}.style5 {color: #009900}.style6 {color: #FF0000}

  • Jakarta Struts应用框架介绍

      Web应用开发早期曾经是那么的“简单”,那个时候还只是纯HTML页面和浏览器特效而已。由于还涉及不到动态数据操作和商业应用,也就省去了很多麻烦。但是这样的“简单”只是过眼云烟,如今我们不得不为复杂的基于Web的商业应用开发采用诸多技术。   本文将介绍如何利用Struts进行应用开发的前台整合的开发过程。Struts是一个为开发基于模型(Model)-视图(View)-控制器(Control

  • [转载]运用Jakarta Struts

    运用Jakarta Struts1、只在必要的时候才考虑扩展Struts框架    一个好的framework有很多优点,首先,它必须能够满足用户的可预见的需 求。为此Struts为Web应用提供了一个通用的架构,这样开发人员...

  • 精通struts技术第3章(1) (转)

    精通struts技术第3章(1) (转)[@more@]第三章:开始学习strutsXML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" ...

  • Jakarta+Struts编程(中英文双版版)

    Jakarta+Struts编程(中英文双版版)

  • Jakarta Struts简介(一)

    Web应用开发早期曾经是那么的"简单",那个时候还只是纯HTML页面和浏览器特效而已。由于还涉及不到动态数据操作和商业应用,也就省去了很多麻烦。但是这样的"简单"只是过眼云烟,如今我们不得不为复杂的基于Web的商业应用开发采用诸多技术。全文阅读:http://www.javah.net/Struts/20070513/1166.html

  • Programming Jakarta Struts, 2nd Edition

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpThe revised and expanded Programming Jakarta Struts, 2nd Edition covers everything the successful earlier edi

  • java web was界面_使用Tiles和Struts设计web界面

    UI design with Tiles and Struts使用HTML和JSP表示视图的几种方案摘要每个Web应用开发者必须组织像header、body和footer等这样的页面元素,现在有很多的技术来实现这种组织,当然每种都有各自的优缺点。本文展示了7中可能的解决方案,并且重点揭示了使用Tiles和Struts相集成的方式来灵活的组织页面元素。先用几个简单的例子演示了组织页面元素的问题,然后...

  • Java面试题简讲(一)

    1、JavaBean JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。 JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、SP等Java应用程序调用.也可以可视化地被Java开发工具

  • Jakarta Struts的七大实战心法

    编者按:当作者 Chuck Cavaness(著有《Programming Jakarta Struts》一书)所在的网络公司决定采用Struts框架之后,Chuck曾经花费了好几个月来研究如何用它来构建公司的应用系统。本文叙述的正是作者在运用Struts过程中来之不易的若干经验和心得。如果你是个负责通过jsp和servlet开发Web应用的Java程序员,并且也正在考虑采用基于Struts的构建

  • Jakarta Struts Cookbook中文版

  • 运用Jakarta Struts的七大实战心法

    是有过很多使用Struts经验的人才能写得出的文章。

  • 学习Jakarta Struts 1.1 (一)

    本文是关于Jakarta Struts 1.1的文章中的前半部分。文中一部分是出自Sue Spielman的书《The Struts Framework: Practical Guide for Java Programmers (Morgan-Kaufmann) / Struts框架Java程序员实用指南》。这本书是市场上全面的详细的介绍Struts 1.1的首批图书。你可以通过Sue的邮箱(s

  • 学习Jakarta Struts 1.1 (二)

     DynaActionForm     DynaActionForm提供了一种方便的机制,从根本上消除了编写ActionForm的需要。DynaActionForm可答应动态的表单属性。这意味着你能够在你的struts-config.XML文件中定义属性并且将表单类型设置为org.apache.struts.action.DynaActionForm。什么都不需要写。DynaActionFor

  • JavaBean到底是个什么东西?

    1.JavaBean与EJB(1)JavaBean与EJB规范在以下方面有共同的目标:通过标准的设计模式推广Java程序代码,提升开发过程和开发工具之间的重复运用性可携性 .但是这两种规格的原始问题却是为了解决不同的问题.定义于JavaBean组件模型中的标准规范,被设计来产生可重复运用的组件,而这些组件通常被用于IDE开发工具,而且通常是可视化组件,当然 并不一定是可视化组件.(2)EJB规范所

  • 部署Spring应用程序到Weblogic server 上的注意事项

    关键字:Spring weblogic server deploy 部署 配置 antlr cglib   Spring要求antlr 2.7.5 的支持,但更 在weblogic server8,9中weblogic.jar中集成的antlr的版本不够高,所以在部署时会出错。   解决办法:到www.antlr.org下载antlr-2.7.5.jar包,并修改启动weblogic启动的

  • 典型j2ee部署图,基于weblogic server

Global site tag (gtag.js) - Google Analytics