以下の内容はhttps://cysec148.hatenablog.com/entry/2025/08/10/175145より取得しました。


第33回:プッシュ通知とWebSocketの落とし穴

Hello there, ('ω')ノ

📬 プッシュ通知とは?

Googleの提供する Firebase Cloud Messaging(FCM)などを通じて、アプリに通知メッセージをプッシュ配信する機能です。

  • 例)LINEの新着メッセージ通知
  • 例)ショッピングアプリのセール情報

🔐 ここが落とし穴

リスク 内容
通知に機密情報が含まれている 例:認証コードやユーザー名、予約内容など
通知の盗聴 旧バージョンでは暗号化されていないことも
通知のなりすまし トークンが漏洩すると、偽の通知を送信できてしまう

✅ 診断チェックポイント(プッシュ通知編)

項目 チェック方法
通知内容に個人情報が含まれていないか 実機で通知を受け取り、内容を確認する
通知が端末ロック中にも表示されるか ロックスクリーンで見える場合、意図せぬ漏洩のリスク
通知トークンの扱い SharedPreferencesやDBに平文で保存されていないか?

🌐 WebSocketとは?

WebSocketは、クライアント(アプリ)とサーバー間で常時接続の通信を維持し続けるプロトコルです。 チャットアプリや株価更新、オンラインゲームなど、リアルタイム性が求められる場面でよく使われます。

WebSocket ws = new OkHttpClient()
    .newWebSocket(request, new WebSocketListener() {
        public void onMessage(...) {
            // リアルタイムで受信
        }
    });

🔐 WebSocket通信の落とし穴

リスク 説明
TLSなしで通信している 内容が平文で流れて盗聴される
認証トークンがURLに含まれている wss://example.com/socket?token=abc123 ←要注意!
接続後の認可処理がない 認証後の確認をせず、どのユーザーでも情報取得できてしまう

✅ 診断チェックポイント(WebSocket編)

項目 チェック内容
ws://(非SSL)を使っていないか? 通信内容が暗号化されているかを確認(wss:// 推奨)
認証・認可は正しく実装されているか? 接続後にサーバーがユーザー認証を再確認しているか?
通信内容に個人情報やセッション情報が含まれていないか? Burp Suite + WebSocketタブなどで内容を可視化

🧪 実践:Burp SuiteでWebSocketを診る

  1. Android端末のプロキシをBurp Suiteに設定
  2. WebSocket通信を行うアプリを起動
  3. Burp Suiteの「WebSocket history」タブで通信内容をモニタリング

✅ 見るべきポイント

  • CONNECT リクエストに token= が含まれていないか?
  • サーバーから全ユーザーの情報が届いていないか?
  • message データに個人情報が含まれていないか?

🛡️ 対策方法まとめ

項目 対策
プッシュ通知内容の制限 通知には個人情報を含めず、アプリ内で詳細表示させる構造に
通知トークンの適切な保存 暗号化して保存 or 認証付きAPIで都度取得
WebSocketのTLS化 常に wss:// を使用
認可チェック WebSocket接続後にもユーザー認証をサーバー側で検証
通信ログの監視 WebSocketや通知APIの呼び出しログを残しておく

✅ まとめ

  • プッシュ通知やWebSocketは便利な通信手段だが、セキュリティ設計を怠ると大きなリスクに直結する
  • 通知内容・通信プロトコル・トークン管理の3点を重点的にチェック
  • Burp Suiteなどを活用すれば、リアルタイム通信の内容も可視化・診断可能
  • 非同期・非表示の通信こそ、診断では“裏側”を丁寧に見ることが求められる

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/08/10/175145より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14