6 ポイント 投稿者 GN⁺ 2025-03-01 | まだコメントはありません。 | WhatsAppで共有

「もちろんFirebaseが(部分的に)原因だった」

  • AIエディタ Cursor のインストーラのダウンロード過程で、Lulu ファイアウォールを通じて ToDesktop へ接続を試みていることを確認
    • ToDesktop は Electron アプリのパッケージング、SDK、アップデートなどを提供するサービス
  • アプリが Firestore を使っていることを確認し、開発者ツールを通じて Firebase の基本的な調査を開始
    • Firebase: Google が提供するアプリ向けバックエンドプラットフォームで、Firestore という NoSQL データベースを通じてクライアント側のデータ保存と処理を支援
  • 開発者ツール(DevTools)とソースマップ(sourcemap)を活用して、Firestore で使われているコレクションを調査
  • temporaryApplications という名前のコレクションが見つかったが、古い一覧にすぎず機密情報はなかった(2022年以降更新されていない)
  • 主要なロジックとデプロイ作業の大半は npm パッケージ @todesktop/cli を通じて行われていることを確認
  • @todesktop/cli にもソースマップがあり、sourcemapper で元のソース構造を把握

ToDesktop CLI をのぞく

  • ToDesktop CLI: アプリのデプロイ、ソースコードのアップロードなど主要機能を担当
  • CLI のソースマップを分析する中で、Firebase Cloud Function の getSignedURL を悪用して任意の S3 アップロードを試せる脆弱性を発見したが、実際に意味のあるファイルパスを見つけるのは難しそうだった

Postinstall スクリプトでデプロイパイプラインをハイジャックする

  • 目標: ビルドが進行するコンテナ(サーバー)でコード実行権限を得ること
  • package.jsonpostinstall スクリプトにリバースシェル(reverse shell)のペイロードを入れ、ビルドコンテナからの接続を受信
  • コンテナ内部へのアクセスに成功し、ビルド環境の構造と重要なファイルを調査
  • config.json.encrypted ファイルを確認し、復号方式も突き止めて実際の秘密情報(config.json)を抽出
  • さらに Firebase Admin キー(広範な権限を持つキー)も内部で発見

Post-exploitation

  • この脆弱性により、任意にアプリアップデートを配布でき、ユーザーがアプリを再起動した際に即座に悪意あるコードを実行できる
  • 実際にテスト用アプリへアップデートを配布した後、クライアント側で RCE(リモートコード実行)を再現

影響範囲

  • ToDesktop を使うすべてのアプリに悪意あるアップデートを配布できるため、数百万人以上のユーザーに潜在的な影響を与えうる問題
  • 例として挙げられているアプリ:
  • とりわけこれらのユーザーは IT・技術業界の従事者が多く、攻撃時の被害が大きくなる可能性が高い

The fix

  • 報告後ただちに ToDesktop 側と連絡を取り、解決プロセスを進行
  • ToDesktop は迅速に問題へ対応し、追加の報奨も提供
  • ビルドコンテナとは分離された権限のサイドカーコンテナで署名、アップロードなどの重要な作業を行うよう構成を変更
  • ToDesktop の公式セキュリティ incident レポートは こちら で確認可能
  • セキュリティ事故はどの企業にも起こりうるが、重要なのは対応姿勢であり、ToDesktop は迅速かつ協力的に対処して好印象を残した

まだコメントはありません。

まだコメントはありません。