WAFによるクロスサイトスクリプティング(XSS)対策

 2020.04.21  株式会社ジェイピー・セキュア

私たちは日頃からインターネットを通じて、Webアプリケーションやサービスを利用し、その恩恵を受けています。その一方でWebサイトの改ざんや情報漏えいといった事件・事故が後を絶たないという実情もあり、Webサイトの運営者はセキュリティに対する正しい知識が身に付ける必要があります。

本稿では、クロスサイトスクリプティング攻撃について解説し、セキュリティ対策として有効な「WAF(Web Application Firewall)」をご紹介します。Webサイトを保護し、ユーザーに被害を与えず、会社の信頼を守るためにもクロスサイトスクリプティングの仕組みや対策を理解しましょう。

もっと見る: WAFって何?導入のメリットとは

クロスサイトスクリプティングとは

クロスサイトスクリプティングとは、問い合わせフォームや掲示板など、外部からの入力に応じてページを表示するWebアプリケーションにおいて、HTML生成の実装に問題があることで生じる脆弱性および悪用した攻撃手法のことです。

攻撃者は、スクリプトを含んだリンクを用意するなどの罠を仕掛け、ユーザーがその罠に引っかかてしまうことで、クライアント上でスクリプトが実行されてしまい、結果としてCookieの値を盗まれて「なりすまし」に悪用されたり、書き換えられた画面から重要情報を入力してしまうなどの被害が生じます。

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

このように、攻撃者が用意する罠サイトと標的となる(脆弱な)サイトを横断することからクロスサイトスクリプティングと呼ばれており、XSSと省略されることが多くなっています。

よく例示されるCookieの値を表示するケースをもとにクロスサイトスクリプティングの動きを説明します。以下にメッセージを入力する投稿フォームがありますが、入力値の検証が行われておらず、HTMLタグやJavascriptの入力があった場合もそのまま実行し、ページを表示するようになっています。

New call-to-action
ジェイピー・セキュアソフトウェアライセンス価格表

xss-01-1

通常のメッセージを入力する分には問題ありませんが、次のような入力を行った場合はどうでしょう。

xss-02-1

CookieにセットされたセッションIDが表示されてしまいました。自分自身でこのような入力をすることはありませんので、実際のクロスサイトスクリプティングでは、前述のように攻撃者はユーザーを罠にかけて、盗んだCookieをメールで送信するなどの方法で攻撃を成立させます。

クロスサイトスクリプティングの種類

クロスサイトスクリプティングは、反射型XSSと持続型XSS、DOM Based XSSに分けられます。

反射型XSS

攻撃者が仕掛けた罠サイトに攻撃用のスクリプトがあり、ユーザーが罠を踏んでしまうことで標的サイトを介してスクリプトが実行されてしまう手法です。XSSと聞くと、この手法を思い浮かべる方が多いかもしれません。攻撃者の仕掛けた罠に引っかからなければ被害を受けることはないため、攻撃者にとってはユーザーを罠サイトへ誘導するというステップが必要になります。

持続型XSS

攻撃用のスクリプトが標的サイトのデータベースなどに埋め込まれてしまうタイプのXSSです。反射型XSSと異なり、ユーザーを罠サイトへ誘導するというステップが必要なく、ユーザーが標的サイトを閲覧することで攻撃を実行できるため、攻撃者にとってのメリットがあり、被害が拡大しやすい手法といえます。HTML生成の実装に問題があることで生じる点は、反射型XSSと同じです。

DOM Based XSS

反射型XSSや持続型XSSが標的サイトであるサーバー側のWebアプリケーションの脆弱性であるのに対し、DOM Based XSSはブラウザのプラグインやアプリなど、JavaScriptによりクライアント側で表示処理する箇所に問題がある場合のXSSです。サーバーを経由せずにXSSが発生します。

クロスサイトスクリプティングは、よく知られている脆弱性ですが、反射型XSSの印象が強いためか対策が軽視されることがあります。実際には、ソフトウェアやプラグイン等の脆弱性として発見される件数が多い傾向にあり、持続型XSSのように被害が拡大しやすいケースもありますので、注意が必要な脆弱性であることやWebサイトの運営者には対策が求められるということを意識しましょう。

クロスサイトスクリプティングの対策

それでは、クロスサイトスクリプティングに対して、どのような対策を行えば良いのでしょうか。

クロスサイトスクリプティングは、HTML生成において特別な意味を持つ記号(メタ文字)の取り扱いに問題があることで生じる脆弱性、攻撃になりますので、特殊記号であるメタ文字をエスケープし、文字そのものとして扱うようにすることが基本です。「<」「>」「&」「"」を「&lt;」「&gt;」「&amp;」「&quot;」等のように、表示するウェブページの本文やHTMLタグの属性値等の出力要素にエスケープ処理を行い、攻撃者が意図したスクリプトを実行されないよう無害化することが重要です。

WAFによるクロスサイトスクリプティング対策

WAF(Web Application Firewall)は、Webアプリケーションの脆弱性を悪用する攻撃からWebサイトを保護するためのセキュリティ製品です。WAFを導入することで、クロスサイトスクリプティング(反射型XSS、持続型XSS)を効率的に検出・防御することができます。

WAF(Web Application Firewall)

Webアプリケーションの脆弱性を悪用する攻撃に対しては、前述の根本的な対策(エスケープ処理)が理想ですが、繰り返されるWebアプリケーションの改良の中で対策漏れが生じてしまうこともあるかもしれません。Webアプリケーションの安全性を維持するには高いセキュリティ意識と知識、技術が必要となります。また、自社で開発したプログラムではなく、利用しているフレームワークやCMSのプラグインなどに脆弱性が見つかった場合は、自ら対処することは非常に困難であり、開発元からのバージョンアップ版やパッチの提供を待ち、速やかに適用する必要があります。このようなときにWAFが導入されていると、攻撃を受けた際の影響を低減することができ、セーフティネットとして大きな役割を果たします。

いかがでしょうか?Webサイトのセキュリティ強化を検討されている場合は、ぜひWAFをご検討ください。

WAFとは~WAF選定・導入のポイントとSiteGuardが選ばれる理由~

RECENT POST「WAF」の最新記事


WAFによるクロスサイトスクリプティング(XSS)対策
SITEGUARD

RANKING人気資料ランキング

RECENT POST 最新記事

ブログ無料購読

RANKING人気記事ランキング