首頁 > 科技

iPhone必崩潰bug曝光!這個WiFi水太深誰也把握不住

2021-06-20 12:55:03

曉查 發自 凹非寺 量子位 報道 | 公眾號 QbitAI

iPhone又出現漏洞了,這個漏洞能讓你手機一連WiFi就崩潰。

如果有人把WiFi名稱(SSID)設定成一串特殊字元,那麼你要小心了,因為你一旦嘗試去連線這個WiFi,你的iPhone就會「中招」。

就像下面這樣,從此你的iPhone再也連不上WiFi了,即使手動開啟也會自動關閉:

圖片

而且就算重啟iPhone也不管用,必須還原手機的網路設定才能讓WiFi功能恢復正常。

僅iPhone受影響

發現這一漏洞的是一位叫做Carl Schou的安全工程師,他把自己家的WiFi設定成了以下名稱:

%p%s%s%s%s%n

圖片

(溫馨提示:千萬不要自己手賤嘗試,也不要去危害其他iPhone使用者。)

之後他就發現iPhone的WiFi功能徹底崩潰了。

每次他嘗試再次開啟WiFi時,系統都會迅速關閉,即便他重新啟動裝置,或把家裡的WiFi改成一個正常的名稱也不行。

Carl首先是在他iOS版本14.4.2iPhone XS上測試發現的,之後他又在最新的14.6系統上進行了同樣的測試,漏洞依舊存在。

Carl首先在Twitter上反饋了這一問題,其他多位網友看到他的描述後也復現了該漏洞。

圖片

而且據這位網友反饋,問題不僅是WiFi不能用,連AirDrop也打不開了。

圖片

當然,這個問題也不是完全不能修復,具體的修復方法我們後面再提。

如果你是Android使用者,則完全不必擔心,因為有人嘗試用Android手機連線同樣名稱的WiFi,問題沒有出現。

圖片

另外,量子位親測,該WiFi名稱對Mac無影響。看來這個漏洞應該是iPhone獨有的。

雖然WiFi也不是不能靠重置解決,但一些網友認為,這個「可怕的」漏洞應該引起高度的重視。

因為像這樣的漏洞可能會被黑客利用,比如在公共場合設定在流氓WiFi,就可以讓附近所有iPhone崩潰。

而且這很可能是一個特權提升漏洞,會導致溢位錯誤,從而破壞了plist。(plist是蘋果用來儲存使用者設定的檔案)。

圖片

一串字元為何讓iPhone崩潰

看到Schou推文的其他安全工程師認為,是iPhone對WiFi名稱的解析問題導致了這個錯誤。

問題就處在名稱裡的「%」符號上。

如果你學會C、C++語言,那麼應該對這個符號有所瞭解:%叫做「格式化字元串」(format string),用來處理特殊的變數名或命令。

比如「%3d」就是將變數以3位整型數方式輸出。

再回到「%p%s%s%s%s%n」這串特殊字元,%p代表輸出指針,%s代表輸出字元串,%n的含義稍微複雜一些,代表輸出%n之前的字元長度。

比如下面這串程式碼:

printf(「geeks for %ngeeks」, &c);

輸出結果並不顯示%n,只是

geeks for geeks

但是這行程式碼會將%n之前的字元數統計下來,存放在變數c中。

圖片

如果我們再加一句printf(「%d」, c);就會發現輸出結果為10。(空格也算一個字元)

iPhone會將未經過濾的Wi-Fi名稱(SSID)傳遞給一些執行格式化字元串的內部庫,這會導致任意的記憶體寫入和緩衝區溢位,從而破壞記憶體資料。而iOS看門狗會終止該程序,導致Wi-Fi禁用。

所以iPhone沒有把「%p%s%s%s%s%n」理解成普通文字,而是當成了特殊字元串來處理。iPhone的錯誤日誌也記錄下了這一事件。

圖片

至於為何要把WiFi改成這個奇怪的名字,Carl說,他的所有裝置都以格式化字元串命名,以此來發現那些有問題的裝置。

其實,這也不是iPhone第一次遭遇特殊字元串的攻擊。

之前最出名的莫過於2018年的「死亡簡訊」,只要給iPhone傳送一段有特殊泰盧固語字元的簡訊,使用者就再也無法開啟簡訊App,因為只要一點選,iPhone就會自動重啟。

iPhone微信也會受到此類攻擊的影響。

之後iPhone在iOS 11.3修復了此漏洞,但類似的字元串攻擊方式頻頻出現,幾乎每隔一段時間就會出現,防不勝防。

解決方法

這個bug儘管用重啟iPhone的方式不能,但也不至於讓你的手機徹底壞掉,解決方法並不複雜:

開啟iPhone上的「設定」,選擇「通用」進入最下方的「還原」選項選擇「還原網路設定」,輸入你的手機密碼

圖片

等網路還原完成後,你的iPhone就會恢復正常。不用擔心手機資料丟失,此操作只會讓iPhone「忘記」之前儲存的WiFi密碼,其他不受影響。

如果你今後看到WiFi名稱裡有「%」號一定要多加小心了,它可能是惡作劇,也可能是黑客的陰謀。

希望蘋果能在下次iOS更新中修復這個漏洞吧。

參考連結:[1]https://www.bleepingcomputer.com/news/security/iphone-bug-breaks-wifi-when-you-join-hotspot-with-unusual-name/[2]https://appleinsider.com/articles/21/06/19/bug-in-ios-can-break-iphone-wi-fi-using-rogue-hotspot-name[3]https://9to5mac.com/2021/06/19/a-specific-network-name-can-completely-disable-wi-fi-on-your-iphone/


IT145.com E-mail:sddin#qq.com