【初心者向け】3分でわかる!クロスサイトスクリプティング(XSS)とは?手口と対策の基本

male Icon

XSSって何?おいしいの?

料理で言うと、勝手に変な調味料入れられる感じかな

female Icon

male Icon

まさか…カレーにチョコソース入れる的な?

それどころじゃないよ。
個人情報まで煮込まれるの!

female Icon

male Icon

ひぇっ…甘口どころじゃなかった!

セキュリティは辛口でいこうね!
今日は、クロスサイトスクリプティング(XSS)の手口と対策の基本を解説するね

female Icon

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

クロスサイトスクリプティング(XSS)は、Webアプリケーションでの脆弱性を突いた攻撃手法です。攻撃者は、悪意のあるスクリプトをWebサイトに埋め込み、ユーザーのブラウザでそのスクリプトを実行させます。これにより、攻撃者はユーザーの個人情報(ログイン情報、セッションID、クレジットカード情報など)を盗みます。

XSSの特徴は、攻撃者がターゲットとなるユーザーのブラウザで、悪意のあるスクリプトを実行させる点にあります。ユーザーは意識せずに攻撃を受けるため、深刻な被害を及ぼす可能性が高くなります。

クロスサイトスクリプティング(XSS)の仕組み

XSS攻撃の仕組みは、どのようなものでしょうか。IPA(情報処理推進機構)の情報をもとに、以下に、XSS攻撃の基本的な流れを紹介します。

XSS攻撃の仕組み

1、攻撃者によるスクリプトの埋め込み

攻撃者は、Webサイトのコメント欄や検索バーなど、ユーザーが入力できるフィールドを利用して、悪意のあるスクリプトを埋め込み、罠ページを作成します。さらに、そうしたスクリプトを含んだURLをメールに埋め込んで送るなど、ユーザーを罠ページに誘導するケースもあります。


2、ユーザーが罠ページや不審なリンクにアクセス

ユーザーが誘導された罠ページを開いたり、送られてきた罠メールの不審なリンクをクリックしたりすると、悪意のあるスクリプトがリクエストと一緒にサーバーに送信されます。


3、サーバーが無害化せず、そのままスクリプトを返す

不正なスクリプトに対する対策が不十分な場合、サーバーはそのまま内容を返してしまいます。この結果、悪意のあるスクリプトを含んだページが表示されてしまいます。


4、スクリプトがブラウザ上で実行され、情報が抜き取られる

ユーザーが表示された罠ページを閲覧したタイミングで、ユーザーのブラウザ上で悪意のあるスクリプトが実行されます。その結果、ユーザーの個人情報(ログイン情報、セッションID、クレジットカード情報など)といった重要なデータが攻撃者に送信される恐れがあります。

参考:IPA(情報処理推進機構)安全なウェブサイトの作り方 – 1.5 クロスサイト・スクリプティング

クロスサイトスクリプティング(XSS)の種類と手口

XSS攻撃には、主に3つのタイプがあります。それぞれに特徴的な手口があり、攻撃者はこれらを駆使して攻撃します。

反射型XSS(Reflected XSS)

攻撃者が悪意のあるスクリプトを含むリンクをユーザーに送り、ユーザーがそのリンクをクリックした際にスクリプトが即座に実行される攻撃です。スクリプトがそのままユーザーに返ってくることから「反射型XSS」と呼ばれています。


格納型XSS(Stored XSS)

攻撃者が悪意のあるスクリプトを、サーバー側に保存する攻撃です。攻撃者が挿入したスクリプトは、サーバー上で永続的に保存されます。次回以降、すべてのユーザーが、そのWebページを表示するたびにスクリプトが実行されます。


DOMベースXSS(DOM Based XSS)

クライアント側で実行されるJavaScriptなどによって、表示のたびに構築されるWebページに対して、悪意のあるスクリプトを挿入する攻撃です。この攻撃は、サーバーがスクリプトを送信するのではなく、Webページ自体がそのスクリプトを画面表示時に処理することで成立します。


標的にされやすいWebサイトの特徴

XSS攻撃は、あらゆるサイトにおいて注意が必要です。以下は、標的にされやすいWebサイトの特徴になります。


1、ユーザーが入力できるWebサイト

コメント欄、検索フォーム、アンケートフォーム、ログインフォームなど、ユーザーが入力できるWebページは、XSS攻撃の標的にされやすい傾向にあります。これらのフォームにセキュリティ対策がされていない場合、攻撃者はスクリプトを挿入しやすくなります。


2、入力内容を即座に表示するWebサイト

ユーザーが入力した内容が、すぐに他のユーザーに表示されるWebページの場合、XSS攻撃を受けやすい傾向にあります。特に、入力されたデータを適切に処理せず表示すると、攻撃者がスクリプトを挿入しやすくなります。


3、あまり更新されていないWebサイト

セキュリティパッチやシステム更新が行われていないWebサイトは、XSS攻撃に対して非常に脆弱です。特に、見た目が古いWebサイトは、更新が遅れている場合が多いため、注意する必要があります。

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

XSS攻撃が成功した場合、以下のような深刻な被害が発生する可能性があります。


1、個人情報の流出

Cookieには、セッションIDや個人情報(氏名、メールアドレス、クレジットカード情報など)が多く含まれています。XSS攻撃によって、Cookie情報が漏えいされることにより、ユーザーのパスワードやクレジットカード情報などが、不正利用される恐れがあります。


2、セッションハイジャック

セッションハイジャックとは、攻撃者がユーザーのセッションIDを不正に取得し、正規ユーザーになりすましてログインする攻撃手法です。XSS攻撃によりセッション情報が盗まれると、セッションハイジャック攻撃につながり、アカウントの不正操作や情報漏えいのリスクが高まります。


3、Webサイトに偽情報の表示・フィッシング被害

XSSによってWebページが改ざんされると、正規のWebページ上に偽の情報が表示されてしまう場合があります。ユーザーは気づかずに偽サイトへ誘導され、ログイン情報やクレジットカード番号などの個人情報を入力してしまう可能性があります。

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

XSS攻撃を防ぐためには、システムの開発段階だけでなく、運用後も継続的な脆弱性管理と対策が必要です。以下では、基本的なXSS対策を紹介します。


1、エスケープ処理

ユーザーが入力したデータをそのままHTMLに反映させると、悪意のあるスクリプトも実行される危険性があります。「<」「>」「&」などの特殊文字を無害化(エスケープ)処理することで、XSS攻撃を防ぎます。


2、「http://」や「https://」で始まるURLのみを許可する

WebサイトのURLで、「javascript:」や「data:」スキームは、悪意のあるスクリプトが実行される可能性があります。そのため、「http」や「https」で始まるURLのみを許可する設定する必要があります。


3、WebサイトやメールのURLを安易にクリックしない

ユーザー側でも対策が必要となり、WebサイトやメールのURLを安易にクリックしないことが重要です。

攻撃者は、偽のWebサイトやXSSを仕込んだリンクをメールやSNSなどで送ってきます。特に、送信元が不明または信頼できないメールに含まれるリンクは非常に危険なため、注意が必要です。


4、動作環境を常に最新の状態に保つ

こちらもユーザー側の対策で、動作環境を最新に保つ必要があります。サーバー側だけでなく、ユーザー側でもOSやブラウザなどのセキュリティアップデートを定期的に実施することが重要です。


5、脆弱性対策の実施

セキュリティ対策は、一度導入すれば終わりではありません。定期的な脆弱性診断を実施し、継続的な対策と運用メンテナンスすることが大切です。

脆弱性診断では、専門のシステムテスト会社などによるセキュリティ診断を実施し、XSSをはじめとする脆弱性の有無を継続的に確認します。診断結果をもとに、コードの修正やセキュリティ設定の見直しをすることが重要です。


近年では、巧妙化した攻撃手法も増えているため、常に最新の情報を把握しながら対策を講じる必要があります。

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

まとめ

クロスサイトスクリプティング(XSS)は、非常に危険なWeb攻撃であり、ユーザーの個人情報の漏えいや不正操作につながるリスクがあります。これを防ぐためには、システム開発時からセキュリティ対策を講じるとともに、運用中も定期的な脆弱性診断を実施することが不可欠です。

脆弱性診断を実施することで、XSSの脆弱性を早期に発見・修正でき、Webサイト全体の安全性を高めることが期待できます。こうした対策を継続的に行うことで、ユーザーの安全を守るだけでなく、品質向上や企業の信頼性向上にもつながります。

株式会社GENZでは、セキュリティリスクからお客様と企業を守る、脆弱性診断サービスを提供しております。

セキュリティに関するお悩みがございましたら、GENZの脆弱性診断サービスをぜひご活用ください。

GENZ 脆弱性テスト・セキュリティテスト

そのほか、システムのお悩みがございましたら、お客様の課題にあわせて経験豊富なスタッフが、最適なプランをご提案いたします。ご不明な点やご質問がございましたら、お気軽にお問い合わせください。

GENZがお客様のシステムを安全でより良くなるよう、サポートいたします。

お問い合わせはこちら