安卓拒绝服务漏洞分析及漏洞检测

  “超级拒绝服务漏洞”是一个安卓通用型拒绝服务漏洞,恶意攻击者可能利用此漏洞让手机中的任意应用崩溃无法正常工作,几乎影响目前市面上所有的安卓APP应用。

  漏洞分析:

  0xr0ot和Xbalien交流所有可能导致应用拒绝服务的异常类型时,发现了一处通用的本地拒绝服务漏洞。该通用型本地拒绝服务可以造成大面积的app拒绝服务。

  针对序列化对象而出现的拒绝服务主要是由于应用中使用了getSerializableExtra() 的API,由于应用开发者没有对传入的数据做异常判断,恶意应用可以通过传入畸形数据,导致应用本地拒绝服务。

  漏洞应用代码片段:

  Intent i = getIntent();

  if(i.getAction().equals("serializable_action")){

  i.getSerializableExtra("serializable_key"); //未做异常判断

  }

  攻击应用代码片段:

  Intent i = new Intent();

  i.setAction("serializable_action");

  i.setClassName("com.exp.serializable", "com.exp.serializable.MainActivity");

  i.putExtra("seriadddddlizable_dkey",XXX); //此处是传入畸形数据

  startActivity(i);

  比如XXX处传入BigInteger.valueOf(1)极有可能发生转型异常错误java.lang.ClassCastException。

  但后来交流中发现,当传入一个自定义的序列化对象Serializable或getParcelable对象时,接收Intent的目标组件在getSerializableExtra()、getParcelable()等会抛出类未定义的异常java.lang.NoClassDefFoundError。这是因为,当你给漏洞应用传入一个应用本身并没有的序列化类对象,在应用上下文中肯定是找不到这个类的。

  自定义的序列化类很简单:

  public class DataSchema implements Serializable {

  private static final long serialVersionUID = -3601187837704976264L;

  public DataSchema() {

  super();

  }

  }

  对应的攻击代码中XXX处传入new DataSchema(),我们发现传入的key不管是否与漏洞应用相同,都会抛出类未定义的异常。

  随着测试的深入,我们通过logcat发现,在错误日志里不一定是getSerializableExtra()、getParcelable()导致的。然后我们就延伸了下,试着向getXXXExtra()传入我们自定义的序列化类对象,发现都会抛出类未定义的异常。

  测试app代码片段:

  protected void onCreate(Bundle savedInstanceState) {

  Intent intent = getIntent();

  intent.getStringExtra("ROIS"); //此处依然会由于NoClassDefFoundError crash

  }

  接着我们测试了市面上大量主流应用,涵盖BAT等。发现这种方法可以通杀。我们开始觉得这个是android本身的问题,开始翻源代码。

  /frameworks/base/core/java/android/content/Intent.java

  public String getStringExtra(String name) {

  return mExtras == null ? null : mExtras.getString(name);

  }

  /frameworks/base/core/java/android/os/Bundle.java

  public String getString(String key) {

  unparcel(); //处理数据

  ...

  }

  /* package */ synchronized void unparcel() {

  ...

  mParcelledData.readMapInternal(mMap, N, mClassLoader);

  ...

  }

  /frameworks/base/core/java/android/os/Parcel.java

  readMapInternal解析传递进来的数据

  /* package */ void readMapInternal(Map outVal, int N,

  ClassLoader loader) {

  while (N > 0) {

  Object key = readValue(loader);

  Object value = readValue(loader);

  outVal.put(key, value);

  N--;

  }

  }

  最后当解析到Serializable对象时,由于加载不到类,抛出异常

  public final Serializable readSerializable() {

  ...

  try {

  ObjectInputStream ois = new ObjectInputStream(bais);

  return (Serializable) ois.readObject();

  } catch (IOException ioe) {

  throw new RuntimeException("Parcelable encountered " +

  "IOException reading a Serializable object (name = " + name +

  ")", ioe);

  } catch (ClassNotFoundException cnfe) {

  throw new RuntimeException("Parcelable encountered" +

  "ClassNotFoundException reading a Serializable object (name = "

  + name + ")", cnfe);

  }

  }

  但是回头想想,谷歌肯定不是认为这是android的漏洞,开发者只要加个try catch 捕获异常就可以了。

  漏洞检测:

  爱内测开发了一个自动化的检测工具,开发者可以进行漏洞检测。检测工具:http://www.ineice.com/

  漏洞修复:

  不管是get什么extra,只要是getXXXExtra(),加上try catch捕获异常即可。

时间: 2024-10-13 23:44:52

安卓拒绝服务漏洞分析及漏洞检测的相关文章

JAVA Apache-CommonsCollections 序列化漏洞分析以及漏洞高级利用

作者: 随风 漏洞原理分析 该漏洞的出现的根源在CommonsCollections组件中对于集合的操作存在可以进行反射调用的方法,并且该方法在相关对象反序列化时并未进行任何校验,新版本的修复方案对相关反射调用进行了限制. 问题函数主要出现在org.apache.commons.collections.Transformer接口上,我们可以看到该接口值定义了一个方法 我们可以看到该方法的作用是给定一个Object对象经过转换后同时也返回一个Object,我们来看看该接口有哪些实现类 这些tran

CVE-2017-7269—IIS 6.0 WebDAV远程代码执行漏洞分析

漏洞描述: 3月27日,在Windows 2003 R2上使用IIS 6.0 爆出了0Day漏洞(CVE-2017-7269),漏洞利用PoC开始流传,但糟糕的是这产品已经停止更新了.网上流传的poc下载链接如下. github地址:https://github.com/edwardz246003/IIS_exploit 结合上面的POC,我们对漏洞的成因及利用过程进行了详细的分析.在分析过程中,对poc的exploit利用技巧感到惊叹,多次使用同一个漏洞函数触发,而同一个漏洞同一段漏洞利用代码

CVE-2019-0708 漏洞分析及相关测试

在CVE-2019-0708公布后几天就已经尝试过复现该漏洞,但借助当时exp并没能成功复现反弹shell的过程遂放弃,故借助这次漏洞复现报告再来尝试复现该漏洞,因为还在大三学习中,有很多知识还没有掌握,出现的错误希望得到指正,也想借此给19年的学习画上句号,希望这次可以成功吧. 漏洞背景 CVE-2019-0708 | 远程桌面服务远程执行代码漏洞 安全漏洞发布时间: 2019-05-14 MITRE CVE-2019-0708 当未经身份验证的攻击者使用 RDP 连接到目标系统并发送经特殊设

App漏洞分析,爱加密全网首推智能安全检测

2014年6月初,爱加密高调推出免费自动化App安全检测平台,这是国内首家自动化App安全检测平台,也是爱加密推出的一个重磅产品.作为国内首家免费自动化App安全检测平台,在目前整个互联网行业,包括移动互联网行业还没有这样的服务平台出现,行业前景相当乐观. 文章参考:www.ijiami.cn 只需一键,专业简单,让风险漏洞无处遁形 爱加密漏洞分析平台的推出旨在打造一个服务于移动互联网开发者的安全服务平台,同时也给整个移动互联网安全领域带来一份保障.目前移动应用开发者越来越多,他们不知道自己的应

libUpnp缓冲区溢出、拒绝服务等漏洞分析

该漏洞存在于UPnP?设备的便携式SDK中,也叫做 libupnp.这个库是用来实现媒体播放(DLAN)或者NAT地址转换(UPnP IGD).智能手机上的应用程序可用这些功能播放媒体文件或者利用用户的家庭网络连接到其他的设备. 事实上,这些漏洞早在2012年12月份就已经修复了,然而仍然有很多app在使用存在漏洞的老版本SDK.统计发现有547个应用还在使用老版本的 libupnp,其中326个可从谷歌Play store中下载到,包括Netflix和腾讯QQ音乐.这些都是非常流行的应用,用户

android添加账户流程分析涉及漏洞修复

android修复了添加账户代码中的2处bug,retme取了很酷炫的名字launchAnyWhere.broadAnywhere(参考资料1.2).本文顺着前辈的思路学习bug的原理和利用思路. 我们先看下源码里setting中添加账户的代码,来理解bug产生的原理. /packages/apps/Settings/src/com/android/settings/accounts/AddAccountSettings.java下oncreate: public void onCreate(B

比葫芦娃还可怕的百度全系APP SDK漏洞 - WormHole虫洞漏洞分析报告 (转载)

瘦蛟舞 · 2015/11/02 10:50 作者:瘦蛟舞,蒸米 ”You can’t have a back door in the software because you can’t have a back door that’s only for the good guys.“ - Apple CEO Tim Cook ”你不应该给软件装后门因为你不能保证这个后门只有好人能够使用.” – 苹果CEO 库克 0x00 序 最早接触网络安全的人一定还记得当年RPC冲击波,WebDav等远程攻

HTTP.SYS远程执行代码漏洞分析

社区:i春秋 时间:2016年8月10日 作者:MAX丶 大家肯定用过bugscan老板裤子里面经常出现这个漏洞提示. [xxx存在http.sys远程漏洞]今天我们来分析分析这漏洞如何存在的, 据称,利用HTTP.sys的安全漏洞,攻击者只需要发送恶意的http请求数据包,就可能远程读取IIS服务器的内存数据,或使服务器系统蓝屏崩溃. 根据公告显示,该漏洞对服务器系统造成了不小的影响,主要影响了包括Windows 7.Windows Server 2008 R2.Windows 8.Windo

Java反序列化漏洞分析

相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 http://www.tuicool.com/articles/ZvMbIne http://www.freebuf.com/vuls/86566.html http://sec.chinabyte.com/435/13618435.shtml http://www.myhack58.com/Articl