公開:2022.06.20 10:00 | 更新: 2022.08.09 07:25
私はWebアプリケーション診断を専門としていますが、診断時に通信を確認すると最近WebSocketを見かけるようになったのでその通信について書いていきたいと思います。
Web 上でクライアント(Web ブラウザ)・サーバー間を常時接続にしておいて、双方向通信を低コストで実現するための技術規格で、セキュアな通信としてプロトコル(wss)があります。
クライアントからのリクエストがなくても、常時接続しているのでサーバーからクライアントに好きなタイミングで通信ができるということを実現できるのが WebSocket です。
例えば、チャットアプリでは、複数のユーザーが同じページを見ているような状況で、誰かの発言が他のユーザーのページにもページのリロードなしでリアルタイムに更新されるようにしたい、ということがあると思います。
この「リアルタイムに更新」という機能を実現するためには、誰かが発言したということを サーバーからクライアントに伝える必要がありますが、このような機能をWebSocketは実現します。
クライアントとサーバー間の標準のWebSocketインタラクションには、次の手順が含まれます。
また、リクエスト内容はこのようになります。
通信の検証内容は、下記になります。
WebSocketハイジャック攻撃は、XSS、SQLインジェクション、XXE、機密情報の開示、MiTM攻撃、サービス拒否攻撃などの多くの脆弱性につながる可能性があります。
悪用可能な場合、これらの攻撃は重大な結果につながる可能性があります。
WebSocketの脆弱性として、以下が挙げられます。
診断時、WebSocketでは以下のような項目を検証します。
今回の記事では、WebSocketの概要と脆弱性についてご説明しました。
WebSocketにおいてもPOSTやGETなどのhttp通信と同じようにXSS、SQLインジェクションなどの脆弱性を含んでいます。
新たな技術規格を取り入れた際は、セキュリティのテストも必要となりますのでWebアプリケーションに潜む脆弱性を継続的に診断及び改善しシステムの安全性を維持することを推奨します。
サービス紹介:セキュリティ脆弱性診断
LOADING...