這個操作是把你的蘋果手機的日期設定為1970年1月1日,設置完成後關機重啟,這個時候你要是意外發現你的iPhone變成一塊“磚頭”不要驚訝,據說用這種方法變磚之後進DFU模式都無法刷機重啟。
外媒稱凡是運行iOS 8以上系統的64位設備都有可能遇到這一問題,如果你的iphone是32位設備,那麼先小小的恭喜你下,目前你還是安全的。看到這裡的童鞋要注意了,如果你身邊有在用蘋果手機,或者將要用蘋果手機的用戶,提醒他們注意安全,以免帶來不必要的麻煩。
如果你把系統時間設置到1970年1月1日,那麼你的iPhone便會徹底變磚。這個漏洞會影響到所有搭載iOS 8和iOS 9系統的64位iPhone,以及使用A7、A8、A8X和A9X處理器的iPad。
iPhone時不時會出現一些奇奇怪怪的小毛病,比如會在收到特定短信或訪問特定網站時重啟。而在最近,又有人發現了iPhone的另一個“弱點”,而它則更加致命。如果你把系統時間設置到1970年1月1日,那麼你的iPhone便會徹底變磚。
如果你沒有特別強烈的自虐傾向,請不要在自己的iPhone上進行嘗試,因為這會讓你的手機徹底無法使用,當中的數據也無法恢復。
根據Reddit用戶的分析,時區可能是引起這個bug的原因——如果你把日期設置得盡可能得久遠,時鐘值就會更改至0以下,從而引發這個嚴重問題。
蘋果目前尚未對此事發表任何評論。
UNIX時間戳
在確認這件事情的真假前,你需要了解的一個知識是Unix時間戳。
iOS系統時間使用Unix時間戳(Unix epoch)表示(time_t數據類型)。在系統中,使用系統位數個二進制位儲存時間。
Unix時間戳規定,UTC時區的1970年1月1日0點0時0秒的值為0,以秒為單位,即每過一秒,二進制數字加1。
如果您想詳細了解Unix時間戳,請移步到 Unix Time。
不能往前調,那我把時間往後調
有些好奇的朋友拿出了自己手機,心想:既然我不能往回調,那我要是把時間使勁往後調能怎樣?
細心的朋友發現了一個問題,iOS系統可以設置的最大時間是2038年1月1日,並不能再往後設置。蘋果一定考慮到了這個問題,為什麼這麼說呢?
在32位系統中,time_t是長度為32位的,有符號整數(signed int)類型。首個二進制位是符號位,用來儲存正負。正數則為1970/1/1以後的時間,負數反之;其余的31位用來記數。當時間到達2038年1月19日3時14分08秒時,數值位全部向前進1,導致符號位被置1,其余31位為0。介時,將出現『時間回歸』的情況,系統時間變為1901年12月13日20時45分52秒,系統將會出現錯誤。
▲From Wikipedia "Year 2038 Problem"
所以Apple為了避免這種問題導致的錯誤發生,將最大時間期限定在了2038年1月1日23時59分59秒。這樣即使超出這個范圍,在18天內也不會有太大問題,況且32位設備到那個時候基本都已經淘汰了。
64位系統會不會受到這個影響呢?通過計算我們可以得到,292,277,026,596年12月04日15時30分08秒是64位系統可以表示的最大時間。
64位處理器的『時間回歸』問題
有了剛才的知識儲備,現在我們回到正題,開始探討搭載64位處理器設備的時間bug。
我們說到了以UTC時區的1970年1月1日0點0時0秒為界限,數值為0,時間正常流逝為正數,反之為負數。不過各位需要留意的是,時間受到時區的影響。
假設一種情況,我原來是北京時區,假設將時間設置到了1970年1月1日0點0時0秒,那麼我將這個時間轉換為UTC時間,公式:北京時間= GMT+8 = UTC+8,那麼UTC時間則為1969年12月31日16時0分0秒。這樣就會出現時間負值,即時間回歸bug觸發,系統啟動卡在Kernel階段,時間錯誤,無法繼續進行啟動。
觸發bug條件與表現:
滿足以下條件,『時間回歸』bug被觸發:
系統版本:iOS8.0 ~ iOS9.3 beta 3
硬件設備:搭載64位處理器的設備(即處理器為A7~A9X的設備)
進入『設置』-『通用』-『時間與日期』,關閉『自動設置』,並將時間修改為1970年1月1日,分秒任意。
修改時間後,需要重啟設備。
Bug觸發表現:iOS設備啟動時,卡在蘋果Logo,無法繼續啟動。
Bug危害分析
黑客可以利用此bug通過無線局域網發出范圍性攻擊。
當iOS設備連接到公共網絡時,iOS系統將會使用NTP服務對時區、時間進行校准。如果黑客發送惡意的NTP攻擊,將iOS系統時間校准至UTC < 0的時間,那麼所有用戶設備均會受到此bug影響,在重新啟動設備後無法使用設備。
解決方法:
▼針對所有64位處理器的iOS設備
拆機並拆出電池,放置10分鐘後重新安裝。
電量充足的情況下,等待數小時,當Unix時間戳的數值大於等於0,系統時間生效,可正常開機。
▼針對已越獄設備的防范
添加Cydia源http://repo.ziph0n.com/
並安BrickingDate插件
注意:此插件只可以防止人為修改時間,並無法防止代碼惡意篡改時間。