一段程式碼,iOS 崩潰重啟;再來一行,幹崩 Chrome!
開發:“上次說要加個按鈕重啟 iPhone,現在可以做了!”
開發:“我自有我的辦法!”
一
近日,國外安全研究人員 Sabri Haddouche 發推表示,只要 15 行程式碼,就可以讓一臺 iPhone 崩潰重啟。

據瞭解,這是 WebKit 渲染引擎存在的一個漏洞,該漏洞會導致 iPhone 和 iPad 使用的 iOS 作業系統崩潰並重啟。

崩潰原因
CSS 程式碼並不複雜,主要是利用 backdrop-filter
這個 CSS 屬性。該屬性可以實現一種類似高斯模糊的效果。但是這樣的操作非常的消耗資源,如果被大量的應用,高昂的計算繪製成本,會導致 WebKit 渲染器超載,最終導致系統崩潰。

這段程式碼,首先背景有一張經過 bases64 編碼的圖片,大量的 div
標籤在其之上,就會導致所有的 div
標籤都進行 backdrop-filter
操作,最終吃掉大量的計算資源,導致崩潰。
影響範圍
此崩潰影響的範圍,在 iOS9 ~ iOS12 之間,有使用者使用 iOS7 的裝置進行測試,並沒有發生崩潰情況。但是現在大量的使用者都會隨著 iOS 系統的釋出升級新系統,很少有願意保留舊系統並持續使用的。
此漏洞發生在 WebKit 這個瀏覽器核心中,它會影響 iPhone、iPad、Mac、以及 iWatch。

注意,這些都需要使用內建的 Safari 瀏覽器開啟才生效,因為 Chrome 瀏覽器並不是使用的 WebKit 核心。
值得慶幸的是,這個漏洞雖然討厭,但是並不能用來執行惡意程式碼,也無法盜取使用者資料,它只會導致系統崩潰並重啟系統。
Haddouche 已經向蘋果公司報告了該漏洞,但是至今還沒有迴應。
崩潰的連結
說到這裡肯定有好奇的朋友想試試。Haddouche 也提供了帶有這段程式碼的網頁連線,想試試就複製去 Safari 裡開啟吧(微信開啟也行),不過在此之前請有心理準備,慎重點選。
到目前為止,該連結已經被點選了 6000+ 次了,並且還在快速增長,看來好奇的人很多。

連線太長了,我生成了一個短連結:
http://bitly.com/2MB5rSm
下面是這段程式碼的 Github 連結:
https://gist.github.com/pwnsdx/ce64de2760996a6c432f06d612e33aea
不能放過 Chrome
在此之前,Haddouche 還發布了一個訊息,通過一段程式碼,可以導致 Chrome 卡死。

這段程式碼沒有那麼神奇,就是在一個迴圈裡不停的 “後退” “前進” 操作,它們之所以能讓 Chrome 卡死,不是因為死迴圈,而是因為 “後退”、“前進” 操作會觸發同步 IPC,這並不會讓選項卡崩潰,但是會導致 Chrome 卡死。
Google 官方有一個漏洞賞金專案,只要發現了 Google 產品的漏洞並上報上去,Google 在確定了漏洞的級別後,就會對發現者以金錢獎勵的回報。
這一行程式碼,可以引發 Chrome 卡死,但是根據 Google 官方的 Bug Bounty 規則,他們並不是安全問題,最終讓 Haddouche 與獎金無緣。
Haddouche 也提供了一個嵌入此程式碼的網頁連結。
https://rawgit.com/pwnsdx/6c1049ed4e17a8dc3f36ba6a677b98a6/raw/2f254b43d91285c888b42e9b7d9270171ebb04ae/dos.html
建議你想清楚再開啟它,它會導致 Chrome 卡死,最終可能需要重啟來解決,哪怕強制退出了 Chrome,下次開啟的時候依然會提示你,是否恢復之前開啟的網頁,如果你選擇恢復,這就死迴圈了。
只有放棄之前開啟的一堆網頁,或者拼你多年練習的手速,在該頁面載入完成之前,關閉它。
小結
導致崩潰和卡死的漏洞,總是非常好的惡作劇的素材,畢竟這事兒,重啟能解決,但是也不要惡意傳播。
你還有什麼有意思的程式碼,歡迎在留言區討論。
「 聯機圓桌 」:point_left:推薦我的知識星球,一年 50 個優質問題,上桌聯機學習。
公眾號後臺回覆成長『 成長 』,將會得到我準備的學習資料,也能回覆『 加群 』,一起學習進步;你還能回覆『 提問 』,向我發起提問。
推薦閱讀:
寫作是核心競爭力 | 分詞,科普及解決方案 | 圖解:HTTP 範圍請求 | 無需服務端,玩轉小程式,內附學習資料 | 技術創業選擇清單 | HTTP 內容編碼 | 圖解 HTTP 快取 | 輔助模式實戰 | 輔助模式玩出花樣 | 小程式 Flex 佈局 | 好的 PR 讓你更靠譜

聽說喜歡 留言和分享 的人,會有好運來哦