應(yīng)用

技術(shù)

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

iPhone必崩潰bug曝光!這個(gè)WiFi水太深誰(shuí)也把握不住

2021-06-21 09:50 量子位

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

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

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

就像下面這樣,從此你的iPhone再也連不上WiFi了,即使手動(dòng)打開(kāi)也會(huì)自動(dòng)關(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

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

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

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

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

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

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

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

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

另外,量子位親測(cè),該WiFi名稱對(duì)Mac無(wú)影響??磥?lái)這個(gè)漏洞應(yīng)該是iPhone獨(dú)有的。

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

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

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

一串字符為何讓iPhone崩潰

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

問(wèn)題就出在名稱里的“%”符號(hào)上。

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

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

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

比如下面這串代碼:

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

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

geeks for geeks

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

如果我們?cè)偌右痪鋚rintf(“%d”, c);就會(huì)發(fā)現(xiàn)輸出結(jié)果為10。(空格也算一個(gè)字符)

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

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

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

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

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

iPhone微信也會(huì)受到此類(lèi)攻擊的影響。

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

解決方法

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

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

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

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

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

參考鏈接:

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