- EAの開発環境である"integration"でテストを行っていたところ、特定のゲームの実行ファイルにハードコードされた認証情報を通じて、権限付きアクセストークンを取得した。
認証ドキュメント
- APIドキュメントの公開状況を確認するため、複数のエンドポイントをスキャンした。
/connect/api-docs/index.jsonでSwagger JSONファイルを発見し、Nexus Connect APIの完全なSwagger実装を確認した。
- SwaggerファイルをOpenAPI 3.0仕様に更新し、ローカルのSwagger UIサーバーで実行した。
さらに探すために
- EA Desktopは、複数のバックエンドサービスを統合するGraphQL APIである"Service Aggregation Layer"を使用している。
gateway.int.ea.comで80以上のサービスエンドポイントを発見した。
金脈の発見
- すべてのエンドポイントにリクエストを送り、OpenAPI仕様に変換してさまざまなデータを確認した。
- 特定のゲームチームに関するデータなど、興味深い情報を発見した。
本番環境の時間
- 本番用OAuthクライアントでアクセス可能なエンドポイントを調査した。
/identity/pids/meおよび/identity/pids/me/personasエンドポイントを通じて、アカウント情報と"ペルソナ"一覧を確認した。
大きな発見
/identity/pids/{pidId}/personas/{personaId}エンドポイントを通じてペルソナを更新できることを発見した。
- ユーザー名の変更、ペルソナ状態の変更、別アカウントへのペルソナ移動などの操作が可能だった。
もうひとつの気付き
/identity/namespaces/{namespace}/personasエンドポイントを通じて、非公開アカウントも検索可能だった。
- 他人のアカウントのペルソナを自分のアカウントへ移動させることで、アカウントデータを制御できた。
3回目の試み
- Xbox/PSNトークンを使って2FAを回避し、アカウントにログインできることを発見した。
- Xboxからゲームにログインすることで、被害者アカウントにアクセスできた。
影響
- 攻撃者はペルソナデータを移動させ、ユーザー名やゲームデータを盗むことができる。
- Xbox経由でアカウントにログインし、被害者アカウントにアクセスできる。
- ペルソナをBANしたり、ユーザー名を変更したりできる。
いくつかの所感
- EAが問題を修正するまでに時間がかかったこと、またバグバウンティプログラムがない点は残念だった。
- EAとの協力関係は前向きだった。
タイムライン
- 2024年6月16日 - EAに脆弱性を報告
- 2024年7月8日 - パッチ1を展開(ペルソナ所有権の確認)
- 2024年9月10日 - パッチ4を展開(ドキュメント削除)
1件のコメント
Hacker Newsの意見
EAはすべてのゲームで共通システムを使うのを好む。Maddenで
blazeという共通バックエンドが見つかり、WebとTCPのエンドポイントを備えていた。エンドポイント呼び出しツールを作ったが、サーバーを1台ずつ落としてしまった。その後、探索を防ごうとしてAPIを構築したXbox経由でBattlefield 2042をインストールし、正常に接続できた。ハッカーたちは気に入っている
攻撃を実行するのにどれほどの時間と労力が必要だったのかを示すノートがあると興味深い
この記事を楽しんだ人は、HackerOneの「Hacktivity」のようなバグバウンティプラットフォームでさらに多くの内容を読める
この記事のおかげで、開発用および運用用のAPIサーバーを点検し、OpenAPI UI/JSONディスクリプタのパスが露出していないか確認した
EAのゲームは動くかどうかが不確かだ。大手クラウドでも似たような状況が起こりうる。インフラの世界ではありえないシナリオだが、EAのコンシューマー向けの世界では日常的だ
EAはXboxアカウントを新しいアカウントに変更するのは「技術的に不可能」だと主張していたが、実際には可能だ。古いXboxアカウントを接続できないため、EAのゲームをXboxでプレイできない
すべてのアカウントを停止して、データベースのバックアップがないことを願うのは面白そうだ
大企業でエンジニアとして働くのがどんな気分なのか気になる。複数のチームがそれぞれ異なる部分を所有しているため、脆弱性が存在する可能性が高い
EAがいまだにバグバウンティプログラムを始めていないのは残念だ。報告するインセンティブがないために脆弱性を隠す人もいる。EAが業界の流れに従うことを望む。報告に対する報奨がなかったのか気になる