不正なメッセージを使用してiPhoneをブロックするiMessageのバグを修正

不正なメッセージを使用してiPhoneをブロックするiMessageのバグを修正

マルコム・オーウェンのプロフィール写真マルコム・オーウェン

· 2分で読めます

iMessage の、現在は修正済みのバグの詳細が、Google Project Zero の研究者によって明らかにされた。この問題により、ユーザーは不正なメッセージを受信した場合、iPhone を再び動作させるにはデータを消去して復元する必要があった。

Googleのバグおよび脆弱性発見チームであるProject Zeroによって発表されたこの問題は、被害者のデバイスに送信される特定の種類の不正なメッセージに関連しています。通常の公開ルールに従い、このバグは90日が経過するか、パッチが広く一般に公開されるまで公開されませんでしたが、AppleがiOS 12.3アップデートでこのバグを修正し、公開されました。

具体的には、メッセージには、本来は文字列であるはずのキー値が文字列ではないプロパティが含まれています。IMBalloonPluginDataSource _summaryTextというメソッドを呼び出す際、このメソッドは問題のキーが文字列であると想定しますが、その真偽を検証しません。

後続の IMBalloonPluginDataSource replaceHandlewithContactNameInString の呼び出しでは、想定される文字列の im_handleIdentifiers が呼び出され、その結果、例外がスローされます。

このメッセージはMacとiPhoneの両方に影響を与える可能性がありますが、影響の仕方は異なります。macOSの場合、このエラーにより「soagent」がクラッシュして再起動するため、比較的短期間で解決しますが、最悪の場合、メッセージアプリが動作を停止します。

iPhoneでは、このコードはSpringboardにあり、読み込み、クラッシュ、リロードを繰り返し、UIが表示されなくなり、iPhoneがユーザー入力に反応しなくなる状態になります。この問題はハードリセット後も発生し、iPhoneのロック解除後に再発するため、唯一の解決策はリカバリモードで再起動し、デバイスを復元することです。

情報開示の一環として、Google Project Zero は問題を再現するための手順も公開しました。

AppleInsiderは、ユーザーに可能な限りiPhoneを最新の状態に保ち、デバイスと保存データのバックアップを保持することを推奨している。

不正なメッセージは過去にもiMessageユーザーの間で問題を引き起こしてきました。その大きな例としては、2018年に発生した「Black Dot」Unicodeバグが挙げられます。このバグは、不可視文字を悪用し、iOS 11.3を搭載したiPhoneおよびiPadでアプリをクラッシュさせるというものでした。

2018年に発生した別の「テキスト爆弾」は、OpenGraphページタイトルの最適化されていないレンダリングプロセスを悪用して過度に長いタグを作成し、再びクラッシュを引き起こしました。2015年の別の攻撃では、アラビア語のスクリプト1行を使用してレンダリング時にiOSリソースを消費していましたが、これは通知として表示される場合のみでした。