当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0102940

漏洞标题:WebKit 处理疏忽造成浏览器 crash

相关厂商:WebKit

漏洞作者: kamael

提交时间:2015-03-25 14:32

修复时间:2015-05-09 14:34

公开时间:2015-05-09 14:34

漏洞类型:拒绝服务

危害等级:低

自评Rank:5

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-25: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-05-09: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

WebKit 对 JS 代码处理疏忽导致可以设计恶意页面导致用户浏览器 crash。
该问题在所有使用 JavascriptCore(也就是WebKit原生配套JS引擎)的浏览器(比如 Safari)和库里都存在。

详细说明:

PoC:

<img src=x onerror="alert(1)});alert(2);f = ({">


WebKit在对事件和内嵌入代码进行绑定时,使用如下方式:

(function(event) { [code] }\n)


其中 code 为我们写入的代码。
代码里并没有检测闭合。
但是在代码即将被执行前,WebKit 会做一个检查,检查该代码是否是一个单一的函数,如果不是,则直接 crash 掉。
crash 代码在 http://trac.webkit.org/browser/trunk/Source/JavaScriptCore/runtime/CodeCache.cpp#L156
156行。由于组合后不是单一函数,statement = 0x0,于是 crash。

// This function assumes an input string that would result in a single function declaration.
155 StatementNode* statement = program->singleStatement();
156 ASSERT(statement);
157 ASSERT(statement->isBlock());
158 if (!statement || !statement->isBlock())
159 return nullptr;


漏洞证明:

以下代码插入页面中, 用 WebKit 内核浏览器访问即可。

<img src=x onerror="alert(1)});alert(2);f = ({">

修复方案:

这里返回空函数,或者在拼接之前进行 Parse 合法性检查就好了,直接页面崩溃不太好吧。。

版权声明:转载请注明来源 kamael@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝