HackerOneはこのほど、「How to Find XSS|HackerOne」において、クロスサイトスクリプティング(XSS: Cross-Site Scripting)の主要な攻撃手法について解説した。クロスサイトスクリプティングは主にWebアプリケーションから発見される脆弱性で、悪用されるとフィッシングサイトへの誘導、機密情報の窃取、リモートコード実行(RCE: Remote Code Execution)などの被害に遭う可能性がある。

  • How to Find XSS|HackerOne

    How to Find XSS|HackerOne

主要なクロスサイトスクリプティング

HackerOneが解説したXSSの主要な攻撃手法は次のとおり。

反射型クロスサイトスクリプティング(Reflected XSS)

URLに悪意のあるスクリプトを追記して被害者にアクセスさせることで、目的のWebページを表示すると同時に悪意のあるスクリプトを実行させる攻撃手法。WebサイトのCookie情報を窃取可能なため、アカウントを乗っ取られる可能性がある。WebアプリケーションがURLパラメータを適切にサニタイズしないことで発生する。

蓄積型クロスサイトスクリプティング(Stored XSS)

ユーザー入力を表示に利用する掲示板のようなWebサイトにおいて、入力データを適切にサニタイズせずに保存することで発生する脆弱性。攻撃者は悪意のあるスクリプトを投稿し、Webページにアクセスしたすべてのユーザーに悪意のあるスクリプトを実行させる。

ブラインドクロスサイトスクリプティング(Blind XSS)

蓄積型クロスサイトスクリプティングの一種。悪意のあるスクリプトを保存させる手法は同じだが、WebページではなくWebアプリケーションのバックエンドや他のアプリケーションを標的にする。わかりやすい例では、企業の問い合わせページから悪意のあるスクリプトを投稿し、サポート担当者のブラウザー上で悪意のあるスクリプトを実行させる。

DOMベースのクロスサイトスクリプティング(DOM-based XSS)

上記3つはサーバ側の脆弱性だが、これはクライアント側の脆弱性。ブラウザ上のJavaScriptがDOM(HTML)を操作する際に、ユーザー入力を適切にサニタイズしないことで意図しない表示や悪意のあるJavaScriptを実行する。

HackerOneは上記以外にも珍しい例として「PDFのXSS」や「ElectronアプリケーションにおけるXSS」を解説している。いずれも重大な結果につながる可能性があることから、これらをWebアプリケーションから扱う際には注意することが望まれている。

脆弱性の検出

XSSの脆弱性を検出するには、Webアプリケーションの入出力処理を根気よくすべて調査する必要がある。HackerOneは作業を支援できる自動検出ツールとしてDalfox、XSStrike、xsshunterの3種類を挙げている。これらはそれぞれ異なるクロスサイトスクリプティングの脆弱性の検出を得意としている。

自動検出ツールでは対応できない複雑なWebアプリケーションから脆弱性を検出するには手作業で対応する必要がある。この作業には多くの時間と労力を必要とするが、脆弱性は無視できないため可能な限り発見に務めることが推奨されている。なお、資金力のある企業は時間の節約および開発者の負担軽減のために報奨金プログラムを採用しており、未採用の企業には採用に向けた前向きな検討が望まれている。