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

起因
今天刷推特的時候發現 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=;i<1000000;i++) { total= total+i.toString (); history.pushState (,,total); }</script> </body> </html>
demo:(溫馨提示:請保存瀏覽器其它窗口的編輯任務)
www.0xroot.cn/demo.html (點擊一下,又不會懷孕!)
接來下會發生什么?
點開以后,我的狀態是這樣的:

如果你是 PC 端用戶,點開鏈接以后,電腦 CPU 內存極有可能一路狂飆直至瀏覽器崩潰卡死!
如果你是移動端(安卓、iPhone)用戶,點開鏈接以后你的瀏覽器會閃退!在微博、微信客戶端點開鏈接同樣會閃退。iPhone 用 Safari 打開之后鏈接之后,手機注銷重啟了!…
思考
這是 Bug 還是 0day?為什么會有這一現象?如何實現的?
作者/雪碧,轉載須注明來自 FreeBuf 黑客與極客(FreeBuf.COM)
來自: www.freebuf.com
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!