首页
社区
课程
招聘
[原创]【Chakra】CVE-2017-11809
发表于: 2017-11-2 18:24 6374

[原创]【Chakra】CVE-2017-11809

2017-11-2 18:24
6374

这个漏洞是10月份Chakra最新补丁所修补的,POC由韩国神童公布在Pj0
https://bugs.chromium.org/p/project-zero/issues/detail?id=1338&can=1&q=lokihardt%40google.com

执行POC异常地点如下

其中rcx的值为0x4208导致mov内存访问违例,分析发现rcx其实是ScopeSlots对象的private成员slotArray

追溯slotArray的来源发现是由scopeSlots进行初始化的

而scopeSlots是在frameDisplay中取出的,frameDisplay是传递的FrameDisplay对象指针

继续跟踪frameDisplay的来源

可以看到stackFrameDisplay是在interpreterFrame中取出的

观察以下调用栈

注意ThrowStackOverflowError,之所以会产生这个错误推测是因为poc递归的相互调用导致了栈空间被耗尽。
之后发生的事情与描述的一致,在InterpreterStackFrame::INTERPRETERLOOPNAME函数中,正常情况下是由this->InitializeClosures();对栈变量进行初始化的。但是由于poc耗尽了栈空间,导致PROBE_STACK函数直接抛出异常,而在异常处理函数中却引用了还未来的及初始化的栈变量,导致了内存未初始化漏洞。

function trigger() {
    let a, b, c;
    function g() {
        trigger();
        a, b, c;
    }
    g();
}
trigger();

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 2
支持
分享
最新回复 (2)
雪    币: 1746
活跃值: (227)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
2
emmmm,大佬,exp编写过程呢
2017-11-3 08:33
0
雪    币: 27
活跃值: (622)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
坐等exploit
2017-11-15 14:10
0
游客
登录 | 注册 方可回帖
返回
//