應(yīng)用

技術(shù)

物聯(lián)網(wǎng)世界 >> 物聯(lián)網(wǎng)新聞 >> 物聯(lián)網(wǎng)熱點(diǎn)新聞
企業(yè)注冊個人注冊登錄

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

2021-06-21 09:50 量子位

導(dǎo)讀:iPhone又出現(xiàn)漏洞了,這個漏洞能讓你手機(jī)一連WiFi就崩潰。

iPhone又出現(xiàn)漏洞了,這個漏洞能讓你手機(jī)一連WiFi就崩潰。

如果有人把WiFi名稱(SSID)設(shè)置成一串特殊字符,那么你要小心了,因?yàn)槟阋坏﹪L試去連接這個WiFi,你的iPhone就會“中招”。

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

而且就算重啟iPhone也不管用,必須還原手機(jī)的網(wǎng)絡(luò)設(shè)置才能讓W(xué)iFi功能恢復(fù)正常。

僅iPhone受影響

發(fā)現(xiàn)這一漏洞的是一位叫做Carl Schou的安全工程師,他把自己家的WiFi設(shè)置成了以下名稱:

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

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

之后他就發(fā)現(xiàn)iPhone的WiFi功能徹底崩潰了。

每次他嘗試再次開啟WiFi時,系統(tǒng)都會迅速關(guān)閉,即便他重新啟動設(shè)備,或把家里的WiFi改成一個正常的名稱也不行。

Carl首先是在他iOS版本14.4.2iPhone XS上測試發(fā)現(xiàn)的,之后他又在最新的14.6系統(tǒng)上進(jìn)行了同樣的測試,漏洞依舊存在。

Carl首先在Twitter上反饋了這一問題,其他多位網(wǎng)友看到他的描述后也復(fù)現(xiàn)了該漏洞。

而且據(jù)這位網(wǎng)友反饋,問題不僅是WiFi不能用,連AirDrop也打不開了。

當(dāng)然,這個問題也不是完全不能修復(fù),具體的修復(fù)方法我們后面再提。

如果你是Android用戶,則完全不必?fù)?dān)心,因?yàn)橛腥藝L試用Android手機(jī)連接同樣名稱的WiFi,問題沒有出現(xiàn)。

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

雖然WiFi也不是不能靠重置解決,但一些網(wǎng)友認(rèn)為,這個“可怕的”漏洞應(yīng)該引起高度的重視。

因?yàn)橄襁@樣的漏洞可能會被黑客利用,比如在公共場合設(shè)置在流氓WiFi,就可以讓附近所有iPhone崩潰。

而且這很可能是一個特權(quán)提升漏洞,會導(dǎo)致溢出錯誤,從而破壞了plist。(plist是蘋果用來儲存用戶設(shè)置的文件)。

一串字符為何讓iPhone崩潰

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

問題就出在名稱里的“%”符號上。

如果你學(xué)會C、C++語言,那么應(yīng)該對這個符號有所了解:%叫做“格式化字符串”(format string),用來處理特殊的變量名或命令。

比如“%3d”就是將變量以3位整型數(shù)方式輸出。

再回到“%p%s%s%s%s%n”這串特殊字符,%p代表輸出指針,%s代表輸出字符串,%n的含義稍微復(fù)雜一些,代表輸出%n之前的字符長度。

比如下面這串代碼:

printf(“geeks for %ngeeks”, &c);

輸出結(jié)果并不顯示%n,只是

geeks for geeks

但是這行代碼會將%n之前的字符數(shù)統(tǒng)計下來,存放在變量c中。

如果我們再加一句printf(“%d”, c);就會發(fā)現(xiàn)輸出結(jié)果為10。(空格也算一個字符)

iPhone會將未經(jīng)過濾的Wi-Fi名稱(SSID)傳遞給一些執(zhí)行格式化字符串的內(nèi)部庫,這會導(dǎo)致任意的內(nèi)存寫入和緩沖區(qū)溢出,從而破壞內(nèi)存數(shù)據(jù)。而iOS看門狗會終止該進(jìn)程,導(dǎo)致Wi-Fi禁用。

所以iPhone沒有把“%p%s%s%s%s%n”理解成普通文字,而是當(dāng)成了特殊字符串來處理。iPhone的錯誤日志也記錄下了這一事件。

至于為何要把WiFi改成這個奇怪的名字,Carl說,他的所有設(shè)備都以格式化字符串命名,以此來發(fā)現(xiàn)那些有問題的設(shè)備。

其實(shí),這也不是iPhone第一次遭遇特殊字符串的攻擊。

之前最出名的莫過于2018年的“死亡短信”,只要給iPhone發(fā)送一段有特殊泰盧固語字符的短信,用戶就再也無法打開短信App,因?yàn)橹灰稽c(diǎn)擊,iPhone就會自動重啟。

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

之后iPhone在iOS 11.3修復(fù)了此漏洞,但類似的字符串攻擊方式頻頻出現(xiàn),幾乎每隔一段時間就會出現(xiàn),防不勝防。

解決方法

這個bug盡管用重啟iPhone的方式不能,但也不至于讓你的手機(jī)徹底壞掉,解決方法并不復(fù)雜:

打開iPhone上的“設(shè)置”,選擇“通用”進(jìn)入最下方的“還原”選項(xiàng)選擇“還原網(wǎng)絡(luò)設(shè)置”,輸入你的手機(jī)密碼

等網(wǎng)絡(luò)還原完成后,你的iPhone就會恢復(fù)正常。不用擔(dān)心手機(jī)資料丟失,此操作只會讓iPhone“忘記”之前保存的WiFi密碼,其他不受影響。

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

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

參考鏈接:

[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/