第183章 時間回歸漏洞(續)
這與二進位表達負數的方式有關係。
因為 Unix採用了二進位的方式來存儲。
二進位數據在執行在執行00……0-1
實際進行的的運算是:(1)00……0-1(ps:省略號中有61個0)
得到的結果是11……1(ps:省略號中有61個1)
這樣的話0-1≠-1
得到的數實際是2的64方-1。
類似於這種的例子在計算機的世界裡有很多。
比如說兩個正數相加結果為0這種情況。
林灰記得以前玩ACM的時候經常遇到那種比較蛋疼的編程題。
表面上要求兩個數相加。
聽起來要求很簡單。
但跑程序測試的時候遇到的測試數據都是那種超大數。
但實際操作的時候必須要考慮數據溢出的情況。
總而言之,計算機世界。
一個奇妙的世界。
在Unix里當時間戳為0的時候進行求差也會遇到類似的這種情況。
當蘋果手機里時間戳的時間設置成0的時候重啟手機。
手機的查詢機制在通過時間求差查詢的時返回的時間非但不是一個時間戳0之前的時間。
反而會返回一個極大的時間。
功能的時間是無窮大,而系統的時間卻是0。
而現在這種情況,查詢之前的時間會出錯。
出錯的後果很直接整個系統直接罷工。
即手機直接即變磚。
當然,雖然這個漏洞存在。
但腦迴路正常的用戶在安全的網絡環境下想觸發這個漏洞很麻煩。
如果用戶想觸發這個漏洞的話。
首先用戶需要打開「通用」設置下的「日期與時間」。
在這裡用戶必須先關閉「自動設置時間」的功能才會出現手動設置時間的選項。
緊接著用戶要做的時間事情是滑動選擇的時間。
因為沒有年份的選項,用戶想要改變唯一的辦法就是滑動日期。
經過很麻煩的操作將才可以將時間設置為1970年1月1日。
而僅僅是這樣還不會觸發這個漏洞。
在時間設置為 1970年 1月 1日之後。
用戶要接著進行下一步操作:關機重啟。
至此iPhone變磚的步驟才大功告成。
按照這一番操作下來的話手機將一直卡在蘋果手機開機時Logo剛剛出來的界面。
聽起來這個漏洞似乎很難觸發啊!
這樣一個很難觸發的漏洞有什麼價值嗎?
當然有價值。
凡事就怕有心人故意利用。
漏洞這種東西也一樣。
對於普通用戶來說這個漏洞不算什麼。
但對於有心搞事情的技術人員來說通過這麼一個蠢萌的漏洞可以做很多事情。
當iOS設備連接到公共網絡時,iOS系統將會使用網絡時間協議服務對時區、時間進行校準。
如果黑客發送惡意的網絡時間協議攻擊,將iOS系統時間校準至UTC為0的時間,那麼所有用戶設備均會受到此bug影響,在重新啟動設備後無法使用設備。
NTP(網絡時間協議)是最古老的網絡傳輸協議之一。
其本身的目的是將精確計時裝置如原子鐘的時間通過網絡的手段傳遞給每一台聯網設備,從而提供最精確的對時能力。
即使網絡時間協議協議本身已經考慮到了篡改時間的可能性。
但長久以來,以網絡時間協議為切入點網絡攻擊方式屢見不鮮。
雖然林灰並不是很擅長這類操作,不過這對於黑客來說很容易做到。
畢竟哪怕是林灰這樣並非專門從事IT安全方面的人,也知道上述操作具體如何實現上述過程。
隨便找一個公共場所,設定一個不設密碼的開放 WiFi。
然後將蘋果的網絡時間協議請求解析到自己控制的 IP上(這裡的IP指IP位址)。
具體到網絡時間協議攻擊如何操作。
首先偽造一份數據給一台伺服器。
伺服器就會進行自動響應。
轉而對一個特定 IP發送大量響應信息。
而且這份數據和受害者最終收到的數據之間有一個非常大的倍數關係。
通過大量數據的阻塞攻擊,可以瞬間影響受害者的網絡帶寬,甚至直接癱瘓受害者的網絡。
這種情況下,當用戶將 iPhone連接到這個 WiFi之後,一旦重啟就變磚。
總而言之,這個漏洞在普通用戶視角中可能不算什麼。
但對於一些心術不正的技術人員來說。
這個漏洞很容易利用。
而且這個漏洞很嚴重。
遇到這個漏洞的手機解決方案只有一個:
拆機斷電。
在將 iPhone拆開之後需要將電池與主板的連接切斷。
並且放置一段時間,讓內部的電容內的電能充分消耗。
之後再次連接電池開機,這樣一來 iOS就能重歸正常工作狀態。
其中的原理更簡單,通過徹底斷電,清除 iPhone內部電子元器件的計時功能,讓一切相關數據歸零。
重啟之後就能跳出這個Bug。
當然,也僅僅是暫時跳出這個BUG而已。
但如果你將時間,或者時間被再次修改為 1970年 1月 1日,這個問題還會再次出現。
雖然看起來簡單。但實際很難,畢竟不是那麼多人擅長手機拆解。
而且拆解本身也已經對 iPhone本身造成了損傷。
總之這件事情影響很大,林灰記得前世這件事情影響很不好。
前世這個漏洞涉及的範圍很廣。
幾乎涵蓋了系統版本:iOS 8.0 -iOS 9.3 beta 3
(對對應搭載64位處理器的設備)
雖然現在iOS 8正式版還沒發布。
但iOS 8 Beta版卻已經存在了。
沒道理正式版上存在的bug在測試版上卻不存在。
不過出于謹慎,林灰找了部空餘的iPhone5s。
林灰記得這似乎是前不久買那堆電腦時順帶買的。
嘖嘖嘖。
用一部完好無損的手機來測試「變磚bug」。
老實說這測試漏洞的成本有點高昂啊。
不過比起即將獲得的回報這點成本不算什麼。
蘋果方面的安全人員也不是傻子。
不會不清楚林灰提交漏洞的價值。
刷到iOS8 beta版本之後。
林灰進行了測試。
測試的過程林灰還順帶著進行了錄像。
通過一番測試。
林灰發現這個涉及到改時間重啟會變磚的漏洞果然依舊存在。
存在很合理。
不存在才不正常。
只要蘋果手機底層跟Unix有牽連。
這個漏洞就會一直存在。
(本章完)