特定の名前を持つWi-Fiスポットに繋ぐと、iPhoneのWi-Fi機能が無効化されるバグが発見
コメント
選択しているユーザー
これ書式文字列攻撃というセキュリティホールだね。
Appleのソフトウェアは実はセキュリティホールだらけなのかもね。
https://ja.m.wikipedia.org/wiki/%E6%9B%B8%E5%BC%8F%E6%96%87%E5%AD%97%E5%88%97%E6%94%BB%E6%92%83
注目のコメント
dyld_shared_cacheの -[WFLogger WFLog:message:]という関数のよう
認証検証時に以下のような感じで不正なSSIDを文字列連結してWFLog:message:にぶん投げてしまうのが原因
v28 = objc_msgSend(
&OBJC_CLASS___NSString,
"stringWithFormat:",
CFSTR("Attempting Apple80211AssociateAsync to %@"),
v27);
v29 = objc_msgSend(&OBJC_CLASS___NSString, "stringWithFormat:", CFSTR("{ %@+} %@"), CFSTR("ASSOC"), v28);
v30 = objc_autoreleasePoolPush();
v31 = (void *)qword_100251888;
if ( qword_100251888 )
{
v32 = objc_msgSend(v29, "UTF8String");
objc_msgSend(v31, "WFLog:message:", 3LL, v32);
}
その結果CFStringCreateWithFormatAndArguments->destination が3で固定されてしまうのでDoSを起こして延々にwifi有効化ラジオボタンで検証がループ
if ( self->_destination != 2
&& (!self->_wflRunningOnWatchClassDevice || self->_wflEnableDualLoggingOnWatchClassDevice) )
{
〜中略〜
v10 = j__CFStringCreateWithFormatAndArguments_26(0LL, 0LL, v7, v21);