Hello there, ('ω')ノ
✅ 概要
WebSocketは、リアルタイム性と効率性に優れた双方向通信を提供する一方で:
従来のHTTPベースと同様の、あるいはそれ以上に深刻な脆弱性を引き起こす可能性がある
という点に注意が必要です。
🧨 発生しうる脆弱性タイプ
1. サーバー側:入力処理の不備による脆弱性
| 種類 | 内容 |
|---|---|
| SQLインジェクション | WebSocket経由で受け取ったIDなどを直接SQLに使うケース |
| コマンドインジェクション | WebSocketメッセージからOSコマンドを組み立てて実行 |
| XML外部実体(XXE)攻撃 | WebSocketメッセージ内のXMLに外部エンティティを含める |
2. 外部連携:OASTを必要とするブラインド型脆弱性
WebSocketは非同期&反応がない通信が多く、次のような脆弱性は見た目では検知できない:
| 種類 | 対応方法 |
|---|---|
| ブラインドXSS | OAST(Burp Collaboratorなど)で外部呼び出しを監視 |
| ログインジェクション | ログサーバーがリクエスト内容を保存しているかを監視 |
3. クライアント側:XSSやDOM汚染のきっかけに
| 攻撃 | 条件 |
|---|---|
| XSS | 他ユーザーに送ったWebSocketメッセージが画面に未エスケープで表示される |
| DOMベースXSS | JavaScriptがメッセージ内容をそのままDOMに反映している場合 |
🔍 診断で注目すべきポイント
| 対象 | 観察点 |
|---|---|
| 送信メッセージ | サーバー側でバリデーションされているか? |
| 受信メッセージ | DOM表示前にサニタイズされているか? |
| 通信の双方向性 | 一方が信頼しすぎていないか?(例:サーバーが全てのクライアントデータを信頼) |
✅ まとめ
WebSocketでも従来のWeb脆弱性と同じタイプの攻撃が成立するため、診断観点は非常に多岐にわたります。
| 脆弱性カテゴリ | 具体的な攻撃例 |
|---|---|
| サーバー側処理系 | SQLi, OSコマンド, XXE |
| ブラインド系 | OAST必須のXSS, SSRF, ログ注入など |
| クライアント側 | 反映型XSS, DOM汚染, JSONインジェクション |
Best regards, (^^ゞ