クロスサイトスクリプティング(XSS)とはWebアプリケーションへのサイバー攻撃手法で、代表的なサイバー攻撃のひとつです。この攻撃は適切な対策を行うことで回避可能なサイバー攻撃です。
クロスサイトスクリプティングを始めとした代表的なサイバー攻撃を、まとめて解説した資料もご用意しています。こちらもぜひご覧ください。
クロスサイトスクリプティング(XSS)とはWebアプリケーションへのサイバー攻撃手法で、代表的なサイバー攻撃のひとつです。この攻撃は適切な対策を行うことで回避可能なサイバー攻撃です。
クロスサイトスクリプティングを始めとした代表的なサイバー攻撃を、まとめて解説した資料もご用意しています。こちらもぜひご覧ください。
クロスサイトスクリプティング(XSS)攻撃とは、ユーザからの入力内容をもとにWebページを生成するサイト(例:アンケートサイト、サイト内検索、ブログ、掲示板など)やTwitterのようなWebアプリケーションで、Webアプリケーションの脆弱性を利用して悪意のあるデータを埋め込み、スクリプトを実行させる攻撃手法です。この脆弱性を「クロスサイトスクリプティング(XSS)の脆弱性」と呼びます。
クロスサイトスクリプティングの英語表記「Cross Site Scripting」の略称として「XSS」と表記する場合もあります。
IPA(情報処理推進機構)への脆弱性に関する届出は、クロスサイトスクリプティングの脆弱性が常に上位に挙げられていて、クロスサイトスクリプティング攻撃への対策が必要なことがわかります。
2021年第2四半期(4月〜6月)の届け数では、クロスサイトスクリプティングが92件と最も多く報告されています。
(参照:https://www.ipa.go.jp/security/vuln/report/vuln2021q2.html)
具体的な攻撃の流れを例で解説します。
その結果、悪意のあるウェブ画面が表示されたり、マルウェア感染などを引き起こします。例えば、心当たりのないポップアップ画面(Web画面)や入力フォームが表示されるような場合には注意が必要です。
これらは、個人情報などの重要な情報の入力を促して、入力した内容を窃取するように作られており、ユーザーは個人情報の流出やマルウェア感染などの被害に遭う恐れがあります。
被害に遭わないためには、いつも利用しているWebアプリケーションであっても表示内容に注意し、安易にクリックや情報入力を行わないことが対策として挙げられますが、攻撃者側は巧みにクリックや、情報の入力に誘導するため、ユーザ側の注意だけで被害を避けることは困難です。
まず初めに、単純な作りの掲示板サイトを例に、基本的なWebアプリケーションの動作を説明します。
例となる掲示板サイトでは、Webアプリケーションの処理が以下のように行われます。
次に、攻撃者が悪意ある投稿内容を入力するとどうなるでしょうか?
例として挙げたWebアプリケーションは入力内容をそのまま受け付けており、攻撃者はどのような文字列でも入力することが可能です。
そのため、攻撃者は入力フォームにブラウザ上で実行可能なコマンドを含む文字列を入力して罠となる画面内容を生成することができます。この画面内容はHTMLで構成されるドキュメントと、HTMLに埋め込む形式のスクリプトでJavaScriptが一般的です。
例えば、攻撃者は罠となる内容をHTMLドキュメントとして掲示板サイトに入力して以下のような画面を表示させることが可能です。
「今すぐチェック」ボタンには【スクリプト1】が埋め込まれており、攻撃者によって予め用意された偽のWebアプリケーションへ誘導します。
偽のWebアプリケーションの表示画面では攻撃内容を含む【スクリプト2】が埋め込まれているため、ボタンをクリックすると、ユーザは入力内容を窃取されるなどの被害に遭います。
以上のことから、Webアプリケーションでクロスサイトスクリプティング(XSS)が起きる原因として次の2点が挙げられます。
クロスサイトスクリプティング(XSS)攻撃への対策方法の一つ目はサニタイジングです。
クロスサイトスクリプティング(XSS)攻撃は、Webアプリケーションのフォームに実行可能な文字列を挿入し、Webアプリケーションの利用者の環境で悪意のある操作を実行する攻撃です。
これらの文字列を実行させないようにサニタイジング(スクリプトの無害化)対策を行います。
例えば<script>〜</script>という文字列を含む内容がサニタイジングされていないWebアプリケーションに埋め込まれるように投稿された場合、投稿内容として表示されているボタンやリンクなどをクリックするとJavaScriptなどのスクリプトが実行されます。
そこでスクリプトの構成に必要な&,<,>,”,’の5文字の特殊文字に着目し、これらが文字列としてそのまま画面に表示されるように置換(エスケープ)し、スクリプトの無害化(=サニタイジング)を行います。このように置換を行うことで、スクリプトが入力された場合でも、Webアプリケーションの画面にはスクリプトのソースが表示され、攻撃者が意図する内容では表示されません。
サニタイジング(スクリプトの無害化)はクロスサイトスクリプティング(XSS)攻撃への有効な対策であり、また、根本的な解決策でもあります。
クロスサイトスクリプティング(XSS)の対策方法の二つ目は入力値の制限です。
例えば郵便番号の入力では、数字以外の入力を許可しないことで、スクリプトの挿入ができなくなります。
また、文字種の制限ができない場合でも、入力値の長さに制限を設けることで、攻撃が可能となるスクリプトの挿入をある程度抑制することが可能です。
これら2つの対策は、ともにWebアプリケーション作成の段階で行います。
しかし、細心の注意を払って作成されたWebアプリケーションであっても、クロスサイトスクリプティング攻撃への対策に漏れが生じる場合はあります。
WAF(ワフ/ Web Application Firewall)はクロスサイトスクリプティング攻撃の防御に有効なので、万が一の場合に備えて導入すれば、より一層強固な対策となります。
万が一Webアプリケーションの入力内容のチェックに漏れがあり、クロスサイトスクリプティング攻撃が可能となるようなことがあったとしても、WAFを導入していれば攻撃を防御することが可能です。
なぜなら、WAFはユーザが送信するリクエスト内容を監視しているからです。
これらの対策を単独で行ったとしても、クロスサイトスクリプティング攻撃を完全に回避することはできません。単独ではなく全ての対策を導入することで多層的な防御を行い、Webアプリケーションの安全性をより高めることが重要です。
Webアプリケーション層の保護に有効なWAFは、Webサービスには不可欠なセキュリティ対策システムです。クラウド型WAFであれば、導入、運用面でコストや手間を抑えたセキュリティ対策を行うことができます。クラウド型のWAFは導入ハードルが極めて低く、これからWebセキュリティ対策を行う企業様には有力な選択肢となります。WAFを選定する際には、サポート体制を重視して、自社に最適なものを選びましょう。
クラウド型WAF「攻撃遮断くん」は、最新の攻撃パターンにも自動的に対応していくため、セキュリティパッチをすぐに適用できない状況や、定期的に脆弱性診断が出来ない状況でも、セキュアな環境を保てます。ぜひこの機会にWebセキュリティ対策を見直し、WAFの導入を検討してみてください。
「攻撃遮断くん」の詳細資料は、こちらからダウンロード頂けます。