Hello there, ('ω')ノ
🔌 WebSocketsの概要
WebSockets(ウェブソケット)は、現代のウェブアプリケーションで多く使われている通信方式です。
- 初期接続はHTTPで開始され、その後プロトコルが切り替わって「常時接続」が確立されます。
- 一度接続が確立されると、クライアント(ブラウザ)とサーバーがリアルタイムかつ双方向に通信できるようになります。
📦 主な用途
WebSocketsは以下のような機能で使用されています:
- チャットアプリケーション
- オンラインゲーム
- 金融取引(株価表示など)
- 通知機能(リアルタイム更新)
🔐 WebSocketsに潜む脆弱性
WebSockets自体は便利ですが、セキュリティの落とし穴も多いため注意が必要です。
1. 通常のHTTP脆弱性がそのまま発生
WebSocketsはHTTPを使って接続するため、次のような脆弱性も影響します。
- セッションハイジャック
- 認証漏れによるアクセス制限の回避
- クロスサイトスクリプティング(XSS)からのトークン奪取
- サーバー側の入力検証ミスによるコマンドインジェクション
2. WebSocket通信の盗聴
ws://
で始まる通信は暗号化されません(=HTTP通信と同様)。wss://
(SSL/TLSによるWebSocket)を使わないと中間者攻撃(MITM)のリスクがあります。
3. 認証情報の扱いミス
WebSocket接続時、セッションIDや認証トークンが送信されることがあります。これが安全に管理されていないと、認証回避が可能になります。
🧪 WebSocket診断時のポイント
- 初期接続のリクエストを確認(Upgrade: websocket ヘッダーの有無)
- 通信内容をBurp Suiteなどで傍受・改ざんできるか検証
- クライアント側JavaScriptを調べ、送信されるメッセージ構造を理解
- サーバー側で不正な入力を適切に検証しているかチェック
- wss(暗号化)を使っているか確認
💡まとめ
WebSocketsはリアルタイムで快適なユーザー体験を提供しますが、HTTPと同様の脆弱性に加え、独自の注意点もある通信手法です。診断時には、接続の仕組みから通信の中身、認証情報の取り扱いまで一貫して確認することが重要です。
Best regards, (^^ゞ