クロスサイトスクリプティング(XSS)とは?わかりやすく解説

クロスサイトスクリプティング(XSS)とは?わかりやすく解説

クロスサイトスクリプティング(XSS)とはWebアプリケーションへのサイバー攻撃手法で、代表的なサイバー攻撃のひとつです。クロスサイトスクリプティングによって顧客の個人情報の流出もあり得るのでしっかり対策する必要があります。

この記事では、クロスサイトスクリプティングの流れや起こる原因を解説したうえ、攻撃に有効的な対策についても詳しく紹介します。

サイバー攻撃手法と対策を解説した資料をご用意

クロスサイトスクリプティング(XSS)攻撃とは

クロスサイトスクリプティング(XSS)とは、Webサイトの脆弱性を利用し、記述言語であるHTMLに悪質なスクリプトを埋め込む攻撃です。クロスサイトスクリプティングの英語表記「Cross Site Scripting」の略称として「XSS」と表記する場合もあります。

アンケートサイトやサイト内検索、ブログ、掲示板などユーザーからの入力内容をもとにWebページを生成するサイトや、FacebookやTwitterのようなWebアプリケーションはクロスサイトスクリプティングの対象になりやすいです。サイトに設置されたフォームにユーザーが情報を入力・送信する際に、埋められた悪質なHTMLスクリプトが実行され、入力された情報に加えCookie情報なども攻撃者に送られます

IPA(情報処理推進機構)への脆弱性に関する届出は、クロスサイトスクリプティングの脆弱性が常に上位に挙げられています。2021年第2四半期(4月〜6月)の届け数では、クロスサイトスクリプティングが92件と最も多く報告されています。被害に遭わないために適切な対策を講じることが必要です。

出典:IPA(情報処理推進機構) ソフトウェア等の脆弱性関連情報に関する届出状況[2021年第2四半期(4月~6月)]

 

クロスサイトスクリプティング攻撃_マンガでわかるXSS

クロスサイトスクリプティング(XSS)の攻撃流れ

クロスサイトスクリプティング(XSS)の攻撃流れは主に下記の3ステップとなります。

  1. 攻撃者は、入力フォームにスクリプト付のリンクを含む内容を入力してWebアプリケーションに罠を仕掛ける(例:掲示板サイト)
  2. 訪問者が該当のWebアプリケーションを利用
  3. リンクをクリックしてスクリプトが実行されると、別のWebサイトに遷移(クロスする)して悪意のある内容(スクリプト)が実行される

クロスサイトスクリプティングの攻撃例

その結果、悪意のあるウェブ画面が表示されたり、マルウェア感染などを引き起こします。例えば、心当たりのないポップアップ画面(Web画面)や入力フォームが表示されるような場合には注意が必要です。

これらは、個人情報などの重要な情報の入力を促して、入力した内容を窃取するように作られており、ユーザーは個人情報の流出やマルウェア感染などの被害に遭う恐れがあります

被害に遭わないためには、いつも利用しているWebアプリケーションであっても表示内容に注意し、安易にクリックや情報入力を行わないことが対策として挙げられますが、攻撃者側は巧みにクリックや、情報の入力に誘導するため、ユーザ側の注意だけで被害を避けることは困難です。

クロスサイトスクリプティング(XSS)が起こる原因

ここでは、クロスサイトスクリプティング(XSS)の起こる原因について解説しました。まず初めに、単純な作りの掲示板サイトを例に、基本的なWebアプリケーションの動作を説明します。

基本的なWebアプリケーションの動作

例となる掲示板サイトでは、Webアプリケーションの処理が以下のように行われます。

  1. 投稿画面の入力フォームに投稿内容を入力し、「確認」ボタンをクリックする。
  2. 投稿内容の確認画面が表示され、ユーザは問題ないことを確認して「投稿」ボタンをクリックする。
  3. 投稿内容を登録する処理が実行され、登録が完了すると、投稿完了画面が表示されて投稿内容が反映される。

基本的なWebアプリケーションの動作

Webアプリケーションがクロスサイトスクリプティングを受けた場合

次に、攻撃者が悪意ある投稿内容を入力するとどうなるでしょうか?

例として挙げたWebアプリケーションは入力内容をそのまま受け付けており、攻撃者はどのような文字列でも入力することが可能です。

そのため、攻撃者は入力フォームにブラウザ上で実行可能なコマンドを含む文字列を入力して罠となる画面内容を生成することができます。この画面内容はHTMLで構成されるドキュメントと、HTMLに埋め込む形式のスクリプトでJavaScriptが一般的です。

例えば、攻撃者は罠となる内容をHTMLドキュメントとして掲示板サイトに入力して以下のような画面を表示させることが可能です。

攻撃者の投稿内容の例

「今すぐチェック」ボタンには【スクリプト1】が埋め込まれており、攻撃者によって予め用意された偽のWebアプリケーションへ誘導します。

偽のWebアプリケーションの表示画面では攻撃内容を含む【スクリプト2】が埋め込まれているため、ボタンをクリックすると、ユーザは入力内容を窃取されるなどの被害に遭います。

以上のことから、Webアプリケーションでクロスサイトスクリプティング(XSS)が起きる原因として次の2点が挙げられます。

  1. 入力フォームにhtmlタグやJavaScriptなどのスクリプトが入力された場合、内容をそのまま受け付けてしまう
  2. Webアプリケーションが入力値を制限していない

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

ここではクロスサイトスクリプティング(XSS)に有効的な対策を3つ紹介します。

留意してほしいのが、これらの対策を単独で行ったとしても、クロスサイトスクリプティング攻撃を完全に回避することはできません。単独ではなく全ての対策を導入することで多層的な防御を行い、Webアプリケーションの安全性をより高めることが重要です。

対策①:サニタイジング(スクリプトの無害化)

クロスサイトスクリプティング(XSS)攻撃は、Webアプリケーションのフォームに実行可能な文字列を挿入し、Webアプリケーションの利用者の環境で悪意のある操作を実行する攻撃です。これらの文字列を実行させないようにサニタイジング(スクリプトの無害化)を実施することが有効的です。

例えば<script>〜</script>という文字列を含む内容がサニタイジングされていないWebアプリケーションに埋め込まれるように投稿された場合、投稿内容として表示されているボタンやリンクなどをクリックするとJavaScriptなどのスクリプトが実行されます。

そこでスクリプトの構成に必要な&,<,>,”,’の5文字の特殊文字に着目し、これらが文字列としてそのまま画面に表示されるように置換(エスケープ)し、スクリプトの無害化(=サニタイジング)を行います。このように置換を行うことで、スクリプトが入力された場合でも、Webアプリケーションの画面にはスクリプトのソースが表示され、攻撃者が意図する内容では表示されません。

サニタイジング(スクリプトの無害化)はクロスサイトスクリプティング(XSS)攻撃への有効な対策であり、また、根本的な解決策でもあります。

対策②:入力値を制限する

ユーザーの入力できる値を制限するのもクロスサイトスクリプティング(XSS)への対策方法です。

例えば郵便番号の入力では、数字以外の入力を許可しないことで、スクリプトの挿入ができなくなります。

また、文字種の制限ができない場合でも、入力値の長さに制限を設けることで、攻撃が可能となるスクリプトの挿入をある程度抑制することが可能です。

対策③:WAFで防御する

先述の2つの対策は、ともにWebアプリケーション作成の段階で行います。

しかし、細心の注意を払って作成されたWebアプリケーションであっても、クロスサイトスクリプティング攻撃への対策に漏れが生じる場合はあります

万が一の場合に備えるために、WAF(ワフ/ Web Application Firewall)の導入がおすすめです。Webアプリケーションの入力内容のチェックに漏れがあり、クロスサイトスクリプティング攻撃が可能となるようなことがあったとしても、WAFを導入していれば攻撃を防御することが可能です。

なぜなら、WAFはユーザが送信するリクエスト内容を監視しているからです。WAFとは、Web Application Firewall(ウェブアプリケーションファイアウォール)の略称で、Webサイトを含めたWebアプリケーションをサイバー攻撃から守るツールです。Webサーバの前面に配置され、Webアプリケーションへのすべての通信を検査・解析します。そして、攻撃者からの不正な攻撃だと検知した場合にその通信を遮断するという動きをします。

クロスサイトスクリプティング(XSS)対策ならクラウド型WAF「攻撃遮断くん」がおすすめ

Webアプリケーション層の保護に有効なWAFは、Webサービスには不可欠なセキュリティ対策システムです。クラウド型WAFであれば、導入、運用面でコストや手間を抑えたセキュリティ対策を行うことができます。クラウド型のWAFは導入ハードルが極めて低く、これからWebセキュリティ対策を行う企業様には有力な選択肢となります。WAFを選定する際には、サポート体制を重視して、自社に最適なものを選びましょう。

クラウド型WAFを導入するなら累計導入サイト数が20,000を超えた「攻撃遮断くん」がおすすめです。「攻撃遮断くん」は月額10,000円〜導入可能かつ、システム変更不要のため最短1日で導入できる日本国内で開発・運用されているWAFです。ユーザー側での運用は一切必要ないため、低価格かつ簡単に高セキュリティを実現できます!

攻撃遮断くんについて詳しく知りたいならこちらの資料をダウンロードしてください。

クラウド型WAFなら攻撃遮断くん

 

Webサイトをサイバー攻撃から
守るなら
攻撃遮断くん 攻撃遮断くん

ご利用お申し込み、お見積り依頼、
Webセキュリティに関する相談はこちらから!