ネプラスのテックブログ。ネットワーク、クラウド、サーバなどのITインフラ情報を中心に発信中。

  1. ネプラス インフラエンジニア採用
  2. テックマガジン
  3. セキュリティ
  4. クロスサイトスクリプティング(XSS)とは何か?対策7選なども紹介

クロスサイトスクリプティング(XSS)とは何か?対策7選なども紹介

  • セキュリティ
  • テクノロジー
  • プログラミング
公開日時:   更新日時:
クロスサイトスクリプティング(XSS)とは何か?対策7選なども紹介
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>

    クロスサイトスクリプティング(XSS)について


    クロスサイトスクリプティングとは「XSS」とも表記されるWebサイトの脆弱性のひとつです。個人情報が盗まれたり、ファイルが破壊されたりする危険性があります。

    クロスサイトスクリプティングという脆弱性は、Webサイト外部から実行可能なスクリプトの侵入を許してしまう点にあります。

    悪意のあるスクリプトが送り込まれたときに、防御していないサイトでは情報漏洩やファイル破壊を実行されてしまいます。

    クロスサイトスクリプティングのメカニズム3選


    クロスサイトスクリプティング(XSS)とは、Webサーバーのエコーバックを利用した攻撃です。また第二攻撃(Second-order XSS)も攻撃のひとつとして挙げられます。

    どちらの場合も、スクリプト注入されるWebサーバーにて起きており、これはHTML作成時にスクリプト除染が充分でないために起こるとされます。

    XSSでは、「攻撃者」「標的サイト」「被害者」の3者が関係しており、以下のようなメカニズムで攻撃される可能性があるとされます。

    メカニズム1:攻撃ページ

    攻撃者はスクリプト注入攻撃のための攻撃ページを用意し、被害者を巧みに騙して閲覧させます。またHTMLメールで送ってくる場合もあります。

    メカニズム2:標的とするプログラムを呼び出す

    攻撃ページは被害者が日常的に利用しているWebサイトの特定プログラムを呼び出します。

    この際に、悪意があるJavaScriptコードがその特定プログラム(標的となるプログラム)に与えられます。

    標的とされるプログラムには、与えられた文字列をそのままHTMLページ内にエコーバックしてしまうものが狙われます。

    メカニズム3:悪意あるスクリプトの実行

    攻撃ページからのHTTPリクエストに呼応して、攻撃スクリプトが被害者のブラウザで実行されます。

    そして不正なページに誘導し意図しない商品を購入させる、ニセのログインフォームに入力させてIDとパスワードを盗むなどさまざまな被害が起こります。

    クロスサイトスクリプティングで受ける影響3選


    クロスサイトスクリプティングにより、対策されていないWebサイトを使って、個人情報の取得やプログラムの実行などの悪意ある行動ができてしまいます。

    ここでは、クロスサイトスクリプティングによってもたらされる影響について、具体例を交えて紹介します。クロスサイトスクリプティングの脆弱性がみつかったときに問題視される意味や、自分の生活への影響なども考えながら参照してみてください。

    影響:Webページの改ざんが可能

    クロスサイトスクリプティング攻撃に対する防御策が講じられていないWebサイトでは、Webサイトそのものを改ざんされてしまう危険性があります。

    Webサイトを構成しているhtmlやcssなどのコードを書き換え、不正なプログラムを組み込んでしまうこともできます。

    内部コードが書き換えられるだけでは、ユーザーに気付かれず、不正なプログラムによってIDやパスワードが盗まれる事態にもつながりかねません。

    影響:Cookie情報が抜き出されてしまう

    クロスサイトスクリプティングの脆弱性をついた被害の中でも多いのが、Cookie情報の盗難です。

    本来、Cookieに保存されている情報は、盗まれても問題にならない類の情報に限られるべきですが、利用しているサイトによってはCookieにIDやパスワードを保存させるサイトもあります。

    ユーザーは自分の情報が危険な状態にあることに気付かないまま、IDとパスワードを晒しているような状態になりかねません。

    影響:ユーザーに気づかれずに通信ができる

    クロスサイトスクリプティングでは、ajaxという技術を使って、脆弱性のあるサイトの内部や、脆弱性のあるサイトを経由して、外部サイトへデータを受け渡せます。

    ajaxは非同期の通信を可能とする技術です。クロスサイトスクリプティングの脆弱性を利用した攻撃では、Webサイトの当事者が気付かぬうちに外部サイトに通信を行うので、通信相手からは攻撃された脆弱性のあるWebサイトからの通信だと認識されます。

    クロスサイトスクリプティングで受けた被害例


    クロスサイトスクリプティングの脆弱性の発見や、脆弱性をついた攻撃はニュースになることも増えており、耳にしたことがあるという人も多いでしょう。/mark>

    ここでは、近年ニュースになったクロスサイトスクリプティングの脆弱性に関する事例の中でも、影響範囲が世界規模となった具体例を紹介します。自分の利用環境と照らし合わせながら、クロスサイトスクリプティング攻撃の危険性について考えてみましょう。

    Twitterワーム拡散事件

    Twitterもクロスサイトスクリプティングの脆弱性を攻撃され、脆弱性を悪用したワームが拡散されました。すでにこの脆弱性は修正されていますが、ワームツイートにマウスを合わせるだけでリツイートされてしまうという現象が起きていました。

    脆弱性はTwitter.comのみだったため、Twetter.com以外のTwitterクライアントに問題はありませんでした。JavaScriptの無効化も防御として有効でした。

    YouTube不正アクセス事件

    YouTubeも攻撃を受けたことがあります。YouTubeを介してデマが流され、コメントも表示されなくなりました。

    YouTubeが受けた攻撃は、コメントシステムの脆弱性を悪用したものでした。クロスサイトスクリプティングの脆弱性が発見され、攻撃者はクロスサイトスクリプティングを利用してcookieを盗み、不正なコードを仕込んでユーザーのWebブラウザ上で動作させました。

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


    クロスサイトスクリプティングの脆弱性は、簡単に攻撃でき、甚大な影響を与えることも可能です。Webサイトの管理者は、攻撃に備えて対策しておくことが必須です。

    クロスサイトスクリプティング対策とは、どのようなことをしておけば良いのでしょう。ここでは、クロスサイトスクリプティングに対する対策を7つ紹介します。Webサイト管理者は、管理するWebサイトが対応できているか確認してください。

    クロスサイトスクリプティングの対策1:アプリケーションを最新に保つ

    クロスサイトスクリプティングに限らず、セキュリティを保つためにはWebサイトの構築で利用しているアプリケーションを常に最新に保つことが大切です。

    OSを含めアプリケーションの開発元では、システムの脆弱性が発覚した場合、脆弱性を改修し、対策アプリケーションを公開します。

    アプリケーションの最新版は、システムに自動で適用されることはないので、運用担当者が最新版の情報を入手し、適宜対応する必要があります。脆弱性のあるアプリケーションを使い続けることは、攻撃を受けるリスクが高いので絶対に避けなければなりません。

    クロスサイトスクリプティングの対策2:入力値を制限してみる

    クロスサイトスクリプティングは、Webサイトの入力エリアを利用して実行されることも多いので、不正な文字列が入力されないよう、入力値を制限したりチェックしたりすることは大変有効です。

    入力値のチェックとしては、文字の種別や文字数の制限を行いましょう。チェックはJavaScriptを使ってクライアント側で行う方法と、サーバー側プログラムで行う方法があります。

    クライアント側でJavaScriptの無効設定がされているとチェックが行われないので、サーバー側のチェックは必ず実施した方が安全性が高くなります。

    クロスサイトスクリプティングの対策3:サニタイジングを実行する

    プログラム実行に使用する文字列を使って、Webサイトの入力項目から実行されることを防ぐため、プログラム実行に関する特殊な文字を別の文字へ置き換える「サニタイジング」が必要です。

    サニタイジングとはエスケープとも呼ばれ、「<」は「<」、「>」は「>」など、決められたエスケープ文字に置き換えを行います。エスケープ文字は、使用する環境によって異なります。

    クロスサイトスクリプティングの対策4:不正メールをブロックする

    メールに添付されたURLやファイルから不正サイトに誘導されたり、パソコンに不正なプログラムを常駐させられたりする被害が多発しています。

    不正なURLやファイルが添付されたメールは受け取らないようにブロックしておくことも、クロスサイトスクリプティングの対策になります。

    メールのブロックは、メールクライアントでも設定できますが、一般的にはメールサーバー側で対応します。

    クロスサイトスクリプティングの対策5:ネットワークからの不正サイトをブロックする

    Webサイトのクロスサイトスクリプティング対策として、ネットワーク内部から不正サイトへの通信や、不正サイトからネットワーク内部へのアクセスをブロックすることも可能です。

    不正サイトが明らかな場合は、あらかじめブロック設定しておくべきでしょう。セキュリティ上の防御策として、自社のセキュリティポリシーから外れるサイトを不正サイトとみなし、アクセス制御を設定しておくことも有効です。

    クロスサイトスクリプティングの対策6:セキュリティソフトを導入する

    クロスサイトスクリプティングだけでなく、想定される脆弱性を網羅し、防御してくれるセキュリティソフトは、サーバー側にもクライアント側にも導入不可欠です。

    セキュリティソフトを導入していても、未知の脆弱性が発覚した場合は危険にさらされることになりますが、既知の攻撃からは確実に守ってくれます。サーバーやパソコンだけでなく、クライアントとして使うタブレットやスマホにも導入が必要です。

    クロスサイトスクリプティングの対策7:WAFを導入し防御する

    WAFはWebアプリケーションファイヤーウォールと呼ばれる仕組みで、Webアプリケーションとアクセス元との通信内容を検査して攻撃を検知できます。

    WAFでは過去の不正な通信や攻撃パターンに合致する情報を検知し、通信を遮断したり、アクセス情報を記録したり、警告(alert)を発したりできます。

    WAFを導入しておくと、不正なアクセスが発生したときに通信を遮断してくれるので、被害を最小限に抑えられます。

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


    クロスサイトスクリプティングには複数の種類がありますが、主な種類は次にあげる3つといえます。

    クロスサイトスクリプティング対策としては、いずれの種類も網羅する形で語られますが、対策ツールによって得意とするクロスサイトスクリプティングの種類が異なることもあるので、各種類の動作の違いを知識として覚えておきましょう。

    ここでは、持続型XSSと反射型XSS、DOM Based XSSを紹介します。

    クロスサイトスクリプティングの種類:持続型XSS

    持続型XSSは格納型XSSともStoredXSS、蓄積型XSSとも呼ばれます。脆弱性のあるWebサイトに攻撃コードが埋め込まれ、このサイトを利用したユーザーに危害が及びます。

    持続型XSSは蓄積型とも呼ばれるように、Webアプリケーションが利用するデータベースに不正な動作をするスクリプトが書き込まれます。ユーザーはWebアプリケーションを通常通り使うだけで攻撃コードが実行されてしまいます。

    クロスサイトスクリプティングの種類:反射型XSS

    反射型XSSは、non-persistent型、reflected型とも呼ばれます。反射型XSSは、ユーザーが不正なWebサイトやメールを使うことで、脆弱性のあるWebサイトに対してユーザーのクライアントから攻撃をしかけてしまう仕組みです。

    JavaScriptやphpで書かれたプログラムをメール添付のURLやWebサイトに貼られたURLから実行させて、クライアント経由で情報を盗み出します。

    クロスサイトスクリプティングの種類:DOM Based XSS

    DOM Based XSSでは、スクリプトにより動的にWebページを生成する際に、管理者が意図していないスクリプトを含むページが生成されます。

    クライアント上で実行されるスクリプトは正規のスクリプトですが、そこで表示されたWebページの操作の結果として不正なスクリプトが実行されます。このクロスサイトスクリプティングは、サーバー通信が発生しないプログラムでも脆弱性が作りこまれることがあります。

    どのクロスサイトスクリプティング対策にも限界があることを知っておく


    クロスサイトスクリプティングの対策にも限界があることを理解したうえで、既知の問題については完全に防げるように対策しておくことが大切です。

    Webアプリケーション導入の際は、テストサイトを使って、既知の問題を一通りテストしておくべきでしょう。知識の積み上げとして、わかりやすく図解されたセキュリティ対策書籍も利用してみましょう。セキュリティソフトやWAFの導入も必須と考えておいた方がよいでしょう。

    FEnetを運営しているネプラス株式会社はサービス開始から10年以上
    『エンジニアの生涯価値の向上』をミッションに掲げ、
    多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
    ネプラス株式会社ロゴ

    ネプラス株式会社はこんな会社です

    秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • インフラ業界に特化

      インフラ業界に特化

      ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。

      業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。

    • 正社員なのにフリーランスのような働き方

      正社員なのにフリーランスのような働き方

      正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。

      プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。

    • 大手直取引の高額案件

      大手直取引の高額案件

      案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。

      Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。

    • スキルアップ支援

      スキルアップ支援

      不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。

      受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など

      ※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。

    • 現給与を保証します!

      100%現給与保証

      前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。

      ※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。

    • インセンティブ制度

      インセンティブ制度

      ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。

      取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。

    • 社会保険・福利厚生

      社会保険・福利厚生

      社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。

      さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      ネプラスは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    ネプラス株式会社に興味を持った方へ

    ネプラス株式会社では、インフラエンジニアを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    オンライン面接も随時受付中。ぜひお気軽にご応募ください。

    ネプラス株式会社へのご応募はこちら↓
    ネプラス株式会社へのご応募はこちら↓

    新着案件New Job

    CCNA取得者歓迎!案件・求人はこちら