DaveC
@davecode
說
Tue, Jun 22, 2021 2:42 AM
8
4
ref Mark Lim
引用一下版主文章:
資安研究員 Carl Schou 發現, iPhone 手機在加入名為 “%p%s%s%s%s%n” 的 Wi-Fi 後, 即使重新啟動手機或更改名稱, 也會永久禁用 Wi-Fi
Quick Analysis for the SSID Format String Bug
看了這篇果然是 format string 的問題。在連線到(或者應該說掃描,嘗試連線?)wifi時,OS會增加一筆 log:
{ASSOC+} Attempting Apple80211AssociateAsync $ssid
系統先呼叫 msg= [NSString stringWithFormat:”Attempting Apple80211AssociateAsync %@“, ssid]
DaveC
@davecode
說
Tue, Jun 22, 2021 2:43 AM
這時 msg 是 “Attempting Apple80211AssociateAsync %p%s%s%s%s%n”
然後 msg2= [NSString stringWithFormat:”{%@+} %@“, “ASSOC”, msg]
於是msg2是“{ASSOC+} Attempting Apple80211AssociateAsync %p%s%s%s%s%n”
之後這個字串傳進 WFLog, 偏偏他的log function支援不固定參數的 format string, 於是就 runtime error 了。
DaveC
@davecode
說
Tue, Jun 22, 2021 2:43 AM
(很久沒寫 objective C,上面程式碼請當 pesudo code 就好🤐)
不過會寫成這樣,而不是在呼叫log時傳 format進去:
http://logger.info/...
(“{ASSOC+} Attempting Apple80211AssociateAsync %@“, ssid)
可能是有些寫成
define
吧。
DaveC
@davecode
說
Tue, Jun 22, 2021 2:43 AM
so 這個bug 可以開採?
永遠的真田幸村
@ivanusto
Tue, Jun 22, 2021 2:49 AM
應該是可以 不過蘋果應該近期修正掉釋出更新
載入新的回覆
引用一下版主文章:
資安研究員 Carl Schou 發現, iPhone 手機在加入名為 “%p%s%s%s%s%n” 的 Wi-Fi 後, 即使重新啟動手機或更改名稱, 也會永久禁用 Wi-Fi
看了這篇果然是 format string 的問題。在連線到(或者應該說掃描,嘗試連線?)wifi時,OS會增加一筆 log:
{ASSOC+} Attempting Apple80211AssociateAsync $ssid
系統先呼叫 msg= [NSString stringWithFormat:”Attempting Apple80211AssociateAsync %@“, ssid]
然後 msg2= [NSString stringWithFormat:”{%@+} %@“, “ASSOC”, msg]
於是msg2是“{ASSOC+} Attempting Apple80211AssociateAsync %p%s%s%s%s%n”
之後這個字串傳進 WFLog, 偏偏他的log function支援不固定參數的 format string, 於是就 runtime error 了。
不過會寫成這樣,而不是在呼叫log時傳 format進去:http://logger.info/...(“{ASSOC+} Attempting Apple80211AssociateAsync %@“, ssid)
可能是有些寫成 define 吧。