2 ポイント 投稿者 GN⁺ 2025-04-28 | 1件のコメント | WhatsAppで共有
  • Darwin Notification システムの特性と脆弱性を利用して iPhoneを文鎮化できた事例の紹介
  • この脆弱性は CVE-2025-24091 として登録され、報告者は $17,500(2500万ウォン) のバグバウンティを受け取った
  • 特別な権限なしに システムレベルの通知を送信できる点を悪用し、iOSデバイス全体を麻痺させることができた
  • 簡単な1行コードで "Restore in Progress" モードを強制的に発生させ、再起動の繰り返しを誘発する サービス拒否(DoS)攻撃 の可能性が確認された
  • iOS 18.3アップデート により、重要なDarwin Notificationの送信に 制限付き権限(entitlement) を要求するよう修正され、脆弱性は解消された

Darwin Notifications

  • Darwin Notifications は、iOSとmacOSでプロセス間の簡単なメッセージをやり取りするための CoreOSレベル の仕組み
  • notify_post でイベントを通知し、notify_register_dispatch でイベントを受信し、状態値(state) を読み書きできる構造
  • 特別な権限なしに 受信と送信が可能で、セキュリティ検証手順がない
  • システムのさまざまなコンポーネントが このレガシーAPI に依存していた

脆弱性の概要

  • Appleオペレーティングシステム上のすべてのプロセスは Darwin Notifications を受信でき、特別な権限は不要
  • サンドボックス化されたアプリ からでも Darwin Notificationを送信 できるという構造的な欠陥が存在した
  • データ転送量が限られているため、機密データ流出のリスクは大きくない
  • 特定の重要なシステム通知(例: 復元開始通知)を送信すると、システム全体に影響を与えうる
  • このことから サービス拒否(DoS)攻撃 の可能性が見つかった

EvilNotifyとVeryEvilNotify

  • EvilNotifyアプリ によって、さまざまなシステム反応を強制的に発生させることができた
    • 液体検出アイコン の表示
    • Wi-Fiの遮断とセルラーの強制使用
    • ロック画面およびコントロールセンターのジェスチャー無効化
    • Find MyのLost Modeへの移行 など
  • 特に、notify_post("com.apple.MobileSync.BackupAgent.RestoreStarted") の1行だけで Restore in Progress 状態に陥らせることができた
  • このモードではデバイスが実際には復元されないため失敗し、唯一の解決策は "再起動" ボタンを押すことだった
  • VeryEvilNotifyアプリ はウィジェット拡張を利用して、再起動後も自動で攻撃を再開 できるように実装された
  • ウィジェット拡張はシステムによってバックグラウンドで定期的に実行され、notify_post 関数を呼び出して "復元中" モードを繰り返しトリガーした
  • 結果として、デバイスを 完全に文鎮化 する効果を引き起こせた

タイムラインとCVE登録

  • 2024年6月26日: Appleに初回インシデント報告書を提出
  • 2024年9月27日: Appleから緩和策を進めているとのメッセージを受信
  • 2025年1月28日: 問題解決完了およびバグバウンティ資格確定
  • 2025年3月11日: CVE-2025-24091として正式登録され、iOS/iPadOS 18.3で修正
  • バグバウンティ金額17,500米ドル 支払われた

対応と緩和策

  • 機微なDarwin Notification の送信には 制限付き権限(entitlement) が必要となるよう変更された
  • 例えば、従来の com.apple.MobileBackup.BackupAgent.RestoreStarted 通知は com.apple.private.restrict-post.MobileBackup.BackupAgent.RestoreStarted に変更された
  • 通知を受信するプロセス側も新しい名前を使うことで、未認可アプリによる不正送信を遮断 する
  • この制限付き権限の仕組みは iOS 18.2 beta 2 から適用が始まり、iOS 18.3 で完全に仕上げられた

1件のコメント

 
GN⁺ 2025-04-28
Hacker Newsの意見
  • このAPIでは、設定や通知の投稿に関するあらゆる利用について権限を要求しない点が興味深い

    • デバイス上でプロセス間に64ビット情報を共有できる方法がある
    • アプリ間のユーザー追跡に適した機能である
    • システムが値を保存し、どのアプリから来たのかを追跡しないなら、アプリの削除と再インストール後も永続的なストレージが可能になる
    • IDFAやIDFVのリセットを回避するために使える可能性がある
  • 説明された脆弱性はデバイスを「文鎮化」しない

    • 復旧にはテザード復元が必要である
  • $17,500はかなり良い額だ

    • ブログ記事では、たいてい金額が少ないか、企業が脆弱性を修正しても報奨を支払わないことが多い
    • Appleは2019年以降、この点で改善している
  • 素晴らしい仕事だ

    • シンプルで効果的かつ強力な脆弱性である
    • 20年前に大学の友人と一緒に理論化した完璧なサーバー脆弱性を思い出させる
    • 2年前にCVE-2022-23093として見つかった
  • iOSコアチームがこれをレビューしたとき、オフィスでどれほど大変な一日だったか想像できる

  • コード1行でデバイスを「復旧進行中」モードに入れられた

    • どんなプロセスでも通知を送って、システムをそのモードだと欺けた
  • 昔のIRC時代が恋しい

    • 小さな変化が技術にどれほど危険になりうるかを思い出させる
    • セキュリティは先手を打てているのか、それとも漏れを塞ぎ続けているだけなのか気になる
  • サードパーティ製アプリが独自の通知機構を持っているなら、同様になりすまされる可能性があることを示唆している

    • デバイスを文鎮化することはできないだろうが、別の動作を引き起こす可能性はある
  • 悪意のあるアプリをユーザーが自発的にインストールする必要があるため、優先度は低いかもしれない

    • しかし、その対応スケジュールには安心感がない
  • この記事は素晴らしい読み物だった

    • 非常に古いAPIがどれほど強力だったかを示している
    • iOSの低レベル状態をすべてトリガーする見事なデモだった
    • notify_post が今どうなっているのか気になる