Webサイトやアプリケーションに関わっている方なら、「XSS(クロスサイトスクリプティング)」という言葉を1度は聞いたことがあるでしょう。
XSSは、脆弱性を利用してユーザーの個人情報を盗み取る悪質な攻撃手法です。比較的古いサイバー攻撃ですが、現在でもXSSによる被害報告が多数上がっています。
しかし、本記事で解説するXSSの危険性と攻撃手法、その対策を理解すれば、サイバー攻撃による被害を最小限に抑えることが可能です。XSSの攻撃から自身のWebサイトやアプリケーションを守りたい方は、ぜひ最後までご覧ください。
目次
[ 開く ]
[ 閉じる ]
- XSS(クロスサイトスクリプティング)とは
- XSSとCSRFの違い
- SQLインジェクション
- XSS(クロスサイトスクリプティング)攻撃の流れ
- XSS(クロスサイトスクリプティング)の攻撃手法
- Reflected-XSS
- Stored XSS
- DOM Based XSS
- XSS(クロスサイトスクリプティング)の被害事例
- ユニクロの被害事例
- Twitterの被害事例
- YouTubeの被害事例
- XSS(クロスサイトスクリプティング)の5つの対策
- ①スクリプトを無害化する
- ②セキュリティの最新性を保つ
- ③フォームの入力値を制限する
- ④URLの出力を制限する
- ⑤WAFを導入する
- GMOサイバーセキュリティ byイエラエがセキュリティ課題を解決
- まとめ
XSS(クロスサイトスクリプティング)とは
XSS(クロスサイトスクリプティング)とは、Webサイトやアプリケーションの脆弱性を利用し、サイト利用者の個人情報盗難などの被害を及ぼすサイバー攻撃のことです。
XSSは、悪意のあるユーザーがWebサイト上に不正なスクリプトを埋め込み、第三者のユーザーがそれを実行することで被害につながります。
【関連記事】サイバー攻撃とは?種類や被害事例、対策方法についてわかりやすく解説
▼XSSの被害が発生する主なシーン
- セキュリティ上に欠陥がある掲示板や個人情報の入力画面
- アンケートサイトやサイト内検索
- FacebookやTwitterなどのアプリケーション
こうしたサイバー攻撃は、Webサイトの信頼性を低下させるため、もしくはユーザーの個人情報を盗むために行われます。
比較的古いサイバー攻撃ではありますが、古いがゆえに油断が生まれ、想定外の被害に遭遇するケースがあります。
- ▼XSSによる実被害
- IPA(独立行政法人 情報処理推進機構)が公表した「ソフトウェア等の脆弱性関連情報に関する届出状況 2022 年第 4 四半期(10 月~12 月)」によると、XSSによる被害は59件と最も多く、被害全体の59%を占めています。
XSSとCSRFの違い
XSSとCSRF(クロスサイトリクエストフォージェリ)は、両方ともWebサイトの脆弱性を悪用するサイバー攻撃ですが、それぞれ異なるポイントがあります。
XSSは不正なスクリプトがWebサイト上で実行され、半強制的にサイバー攻撃を受けてしまうのに対し、CSRFはユーザーが無意識のうちに攻撃者が意図した操作を実行し、予期せぬ被害を受けてしまうのが特徴です。
CSRFを実行する攻撃者は、主にログイン機能を設けているWebサイト上で正規ユーザーを装い、偽のリクエストを送信してユーザー側が予期していない処理を実行させます。
したがって、CSRFによる被害ケースは、ログイン状態を維持するネットショッピングサイトなどが多い傾向にあります。
SQLインジェクション
SQLインジェクションもまた、Webサイトやアプリケーションの脆弱性を利用したサイバー攻撃の1つです。
しかし、SQLインジェクションは、データベースの不正利用を招くのを目的としています。
- ▼SQLとは
- データベース言語の1つ。データベースを管理するソフトウェアを操作・制御することが目的。攻撃者はSQL文に不正なプログラムやコマンドを注入し、データベースを不正に操作します。攻撃を受けたデータベースは、格納されている顧客情報を流出させたり、データの改ざんや消去などの被害に遭う可能性があります。
XSS(クロスサイトスクリプティング)攻撃の流れ
Webアプリケーションを対象とした、XSSによる攻撃から被害までの流れを説明します。XSSによる攻撃は、主に以下4つのステップで実行されます。
- 【攻撃者】悪意のあるスクリプトの注入
- 【被害者】悪意のあるスクリプトを実行してしまう
- 【攻撃者】被害者の個人情報を盗む、悪意のあるWebサイトに誘導する
- 【被害者】盗まれた個人情報が不正利用される
初めに、攻撃者は悪意のあるスクリプトをWebアプリケーションに注入します。これは、コメント欄やフォームにコードを入力するといった形で実行されるケースが多いです。
その後、第三者のユーザーがそのページに訪れ、設置した罠(リンク)に触れてしまうと、自動的に悪意のあるスクリプトが実行されます。心当たりのないポップアップ画面や、怪しげな入力フォームが表示された際は要注意です。
悪意のあるスクリプトが実行されると、攻撃者は制御権を利用し、罠に嵌ったユーザーの個人情報を盗んだり、マルウェアに感染させたりします。
そのほか、悪意のあるWebサイトにリダイレクトさせるといったケースもあります。
XSS(クロスサイトスクリプティング)の攻撃手法
XSSの攻撃手法は主に3種類あります。適切な対策を講じるためにも、まずは以下3つの攻撃手法を把握しておきましょう。
- Reflected-XSS
- Stored XSS
- DOM Based XSS
ここでは、それぞれの攻撃手法を順番に解説します。
Reflected-XSS
Reflected-XSS(反射型XSS)は、ユーザーが特定のリンクをクリックしたときにのみ被害が発生します。
攻撃者は偽造したWebサイトやメールに不正なスクリプトを含んだリンクを設置し、脆弱性のあるWebサイトにリクエストさせます。
ユーザーがリンクをクリックするとスクリプトが実行され、個人情報の抜き取りなどを行うのが基本の流れです。被害の具体例としては、フィッシング攻撃が挙げられます。
Stored XSS
Stored XSS(格納型XSS/蓄積型XSS)は、攻撃者がWebアプリケーションに悪意のあるスクリプトを残し、ほかのユーザーがページにアクセスするたびにスクリプトが実行されるという攻撃手法です。
具体的な被害例としては、掲示板やコメント欄に不正なスクリプトを含む投稿を行い、その投稿を見たユーザーが攻撃者の被害に遭うといったケースが挙げられます。
該当ページにアクセスするたびにスクリプトが実行されることから、Stored XSS(格納型XSS/蓄積型XSS)、もしくはPersistent XSS(持続型XSS)と言われています。
DOM Based XSS
DOM Based XSSは、WebページのDOM(Document Object Model)を操作して攻撃を行う手法です。Webページに存在する脆弱性を利用した手法で、サーバー側ではなくユーザー側のブラウザ上で処理が完了します。
例えば、Webページに埋め込まれたJavaScriptなどが適切に処理できていない場合、攻撃者はその入力を利用し、不正なスクリプトを実行する可能性があります。
XSS(クロスサイトスクリプティング)の被害事例
XSSによる攻撃は個人に対してだけでなく、大規模なサービスやプラットフォームでも起こっています。ここでは、具体的な被害事例をいくつか紹介します。
ユニクロの被害事例
2020年9月、ユニクロのAndroid版公式アプリ「ユニクロアプリ」にて、XSSの脆弱性が存在することが明らかとなり、脆弱性情報対策データベース(JVN iPedia)から注意喚起が行われました。
ユニクロは迅速な対応を取り、すぐに脆弱性の修正を行ったため、XSSによる被害は確認されませんでした。XSSの影響を受けるバージョンは「7.3.3」以前であり、「7.3.4」以降のバージョンは修正されているため安全です。
Twitterの被害事例
大手SNSのTwitterでも、2010年9月にXSSによる被害がありました。
公式Twitterアカウントで「マウスカーソルを乗せると勝手に任意のテキストが投稿される」という被害事例があり、悪意のあるメッセージをフォロワーに送信したり、大量のスパムが投稿されたりなど、一時は大きな問題となりました。
調査した結果、混乱を引き起こすためのいたずら目的と判明しましたが、XSSによる被害として最大50万人が影響を受けた可能性があります。
YouTubeの被害事例
2010年7月には、YouTubeのコメント投稿に関するシステムがXSSの攻撃を受け、デマニュースのポップアップや無関係なWebサイトへのリダイレクトなどが確認されました。
これは、コメント欄に悪意のあるスクリプトが埋め込まれ、アクセスしたユーザーがそれをクリックし、不正なスクリプトが実行されたというものです。
アメリカのSANS Instituteにより、深刻な被害をもたらす可能性があるとして警告されました。
XSS(クロスサイトスクリプティング)の5つの対策
XSSの攻撃手法や被害事例がわかったところで、効果的な対策についてみていきましょう。主な対処法として以下の5つが挙げられます。
- スクリプトを無害化する
- セキュリティの最新性を保つ
- フォームの入力値を制限する
- URLの出力を制限する
- WAFを導入する
ここでは、各対策を一つずつ解説します。
①スクリプトを無害化する
1つ目の対策は、「サニタイジング」と呼ばれるスクリプトの無害化です。
これは、Webページの表示に影響する「<」、「>」、「&」などの記号文字を、HTMLエンティティ「<」、「>」、「&」などに置き換えるというものです。
処理を実行すれば、スクリプトが意図していない動きをするリスクが軽減します。この対処法は、HTMLのエスケープ処理とも言われます。
②セキュリティの最新性を保つ
セキュリティなど、すべての動作環境を最新に保つことも有効です。
ブラウザやサーバーのセキュリティを定期的にアップデートすることで、新たに発見された脆弱性からサイバー攻撃の被害を食い止めます。
ブラウザやサーバーのアップデートは、比較的手軽にできる対策です。XSSによる被害を受けないためにも、最新性の保持を日頃から意識しておきましょう。
③フォームの入力値を制限する
ユーザーが入力できるフォームの入力値に制限を設けることで、XSSによる攻撃の被害を抑えられます。
XSSの攻撃は、Webサイトに不正なスクリプトを埋め込もうとする手法が基本です。
Webサイトにおけるフォームの入力値を制限し、不正なスクリプトを入力できないようにすれば、XSSによる攻撃手法が少なくなるため被害を未然に防止できます。
▼具体的な対処法
- パスワードの入力欄に「半角英数字8文字まで」などの制限を設ける
- 郵便番号の入力欄に「数字以外は入力できない」などの制限を設ける
- 備考の入力欄に「文字数は最大120文字まで」などの制限を設ける
入力値の制限を設ける際は、サーバー側で設定を施しましょう。
ユーザー側の入力値を制限してしまうと、ユーザー側がJavaScriptをオフにした場合、不正なスクリプトを入力できてしまいます。
④URLの出力を制限する
不正なスクリプトが実行されないように、URLの出力を制限するのも1つの手です。
これは、http・httpsで始まるURLのみ出力を許可し、そのほかのスクリプトは拒否するという方法です。
これにより、不正なスクリプトの実行を防げます。なかには「javascriptスキーム」などから始まるURLもありますが、この場合、悪意のあるスクリプトを実行されるリスクがあるため、http・httpsから始まるURLのみを許可する設定にしましょう。
⑤WAFを導入する
WAF(Web Application Firewall)を導入することでも対策を図れます。そもそもWAFとは、Webアプリケーションのセキュリティを強化するためのツールのことです。
ネットワークレベルのファイアウォールとは違い、WAFは不正なアクセスや攻撃を検知し、ブロックする機能が備わっています。
また、利用者の通信内容を監視することも可能であるため、掲示板などに入力された悪意のあるスクリプトもブロックできます。
GMOサイバーセキュリティ byイエラエがセキュリティ課題を解決
画像引用元:GMOサイバーセキュリティ byイエラエ
XSSによる被害を最小限に抑えたいなら、「GMOサイバーセキュリティ byイエラエ」の導入が推奨されます。
国内トップクラスのホワイトハッカーが多数在籍しており、Webアプリケーションの脆弱性を診断し、診断結果に応じた最適なソリューションで課題を速やかに解決します。
▼GMOサイバーセキュリティ byイエラエの特長
- Webアプリケーション内のXSSやSQLインジェクションなどの脆弱性を診断
- 検出された脆弱性に応じてセキュリティリスクを徹底排除
- 経験豊富なセキュリティ診断員による高精度な診断
XSSによるサイバー攻撃は厄介ですが、適切な知識と対策を施していれば安全に防げます。
より強固なセキュリティを構築したい場合は、ぜひ「GMOサイバーセキュリティ byイエラエ」の導入を検討してみてください。
まとめ
本記事では、XSSの危険性と攻撃手法、その対策について詳しく解説しました。
XSSはユーザーの個人情報を盗み出すサイバー攻撃であり、その対策としてスクリプトの無害化、セキュリティの最新性の保持、フォームの入力制限などが挙げられます。
本記事で紹介した対策を適切に講じることで、XSSの攻撃からWebサイトやアプリケーションを守ることが可能です。
より高い安全性を確保したい場合は、「GMOサイバーセキュリティ byイエラエ」の導入をご検討ください。
文責:GMOインターネットグループ株式会社