首页
社区
课程
招聘
[原创]CVE-2016-7200分析
发表于: 2017-11-20 21:34 6445

[原创]CVE-2016-7200分析

2017-11-20 21:34
6445

标签(空格分隔): Chakra

其中左值为0x0000000200000001,右值为0x8000000280000002
value实际指向ArraySegment,其中length=3,size=6,元素为1、2、3

对应于poc中定义的dummy

会调用Array.prototype.filter()

filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

对于chakra来说这个函数实现在JavascriptArray::FilterHelper函数中,大体逻辑如下

代码的逻辑很容易理解,首先从源Array中依次取出元素,再根据用户callback进行判断,如果满足条件就置入新的Array中,否则会被丢弃。
这里的newArr的创建操作如下

注意虽然进行了转换,但是最后newArr却是NativeIntArray类型

观察接下来的取值和赋值操作可以发现问题

pArr的类型为JavascriptArray
newArr的类型为JavascriptNativeIntArray
这里直接从pArr中取出值放入了newArr,很明显是一个类型混淆

造成这个混淆的根本原因是设置了static get [Symbol.species]() { return dummy; }导致返回了一个JavascriptNativeIntArray,从而与JavascriptArray造成混淆。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 793
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
GOOD  THanks  for  sharing!!!!
2017-11-22 10:38
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不错!
2017-11-22 10:46
0
游客
登录 | 注册 方可回帖
返回
//