XSSとはWebサイトを介したサイバー攻撃です。
この記事ではXSSの概要や、またXSSを受けるとどんな影響があり、どのような対策が必要になるのか説明しています。Webサイトだけでなく、ユーザーにも多大な被害を及ぼすXSSとその対策を理解し、今後の安全なサイト運営に努めていきましょう。
また、XSSとも関連が深く、IPAセキュリティ10大脅威でも常連の今ホットな脅威である標的型攻撃の事例・サンプルをまとめたpdf資料を無料で配布しています。オリジナルの解説付きです。
XSSとは何か
XSSとは「クロスサイトスクリプティング」の略称です。
標的となったWebサイトの利用時に、不正なスクリプトを紛れこまして実行させ、利用者の個人情報を抜き取るなどの被害をもたらすものです。攻撃者の真の標的はサイトではなく、サイトのエンドユーザーです。
もともと複数のWebサイトを経由し不正なスクリプトを送信、実行される特徴を指して「クロスサイト」と名づけられました。現在では脆弱性を持つWebサイトのスクリプトとして実行される攻撃を総称しXSSと呼んでいます。
手口はさまざまあって、フィッシング詐欺など攻撃者が設置したサイトに誘導されるものや、普段利用するサイトを経由し、ユーザーの環境下で不正なスクリプトを実行するものが代表的です。
XSSの攻撃を受けた場合の影響
それではXSS攻撃はどういった影響を与えるのでしょうか。
ここでは代表的な3つの影響について解説していきます。
Cookie情報の窃取
「セッションハイジャック」とも呼ばれます。
Cookie情報が盗まれるとWebサイトとの接続情報(セッションID)まで流出することがあり、不正ログインの原因になってしまいます。
ユーザーになりすましてWebサービスにアクセスされる危険性が高く、ネットバンクの不正出金やSNSアカウントの乗っ取りなどの被害が起こります。
不正なサイトへの誘導
「フィッシング詐欺」とも呼ばれます。
Webサイトの投稿サービスやSNS、メールなど、何らかの形でサイトユーザーを不正なサイトに誘導し、個人情報を送信させます。
たとえば、Amazonのログイン画面に似せたページを持つサイトに被害者を誘導し、IDとパスワード、またクレジットカード番号を入力させ、個人情報の抜き取りやカードの不正利用を図る例が典型的です。
不正プログラムへの感染
XSSにより不正なWebページを表示させて、ユーザーに不正なプログラムをダウンロードするよう促し、マルウェアに感染させることがあります。
ユーザー端末の挙動をおかしくしたり、端末内部の情報を流出させたりとその影響ははかりしれません。
XSSの被害や脆弱性事例
影響についてに理解はできたかと思います。
では実際にどんな被害が出ているのでしょうか。ここでは事例も交え解説していきます。
XSSによるYouTubeの不正な動作
2010年7月にYouTubeのコメントシステムの脆弱性を狙ったXSS攻撃があり、YouTubeのコメントが閲覧できなくなったり、デマ情報を記載したポップアップ画面の表示、悪趣味なサイトにリダイレクトされるなどの事象に見舞われました。
原因はYouTubeのコメント出力データの暗号化処理に問題があったとみられます。ユーザーのCookieを盗んだ攻撃者は、ユーザーがコメント機能を利用した際にJavaScriptの不正なコードを仕込み、ユーザーのWebブラウザで不正な動作を実行させました。
不正なプログラムをユーザーのWebブラウザで実行できると、Cookieの窃取だけでなく、偽のログインページなど外部サイトに誘導されるといった危険性があります。
金融サービスサイトに関係するフィッシング被害の要因の一つがXSS
アメリカのIT企業のAkamaiによると、フィシングサイトの被害を受けた組織のうち、50%は金融サービス関係だったといいます。
フィッシングサイトの標的は主に金融サービスの利用者で、XSSにより偽サイトに誘導された被害者からログイン情報を盗み出されることがあります。
また金融サービス関係のサイトは不正ログイン攻撃を受けることが多く、個人情報の窃取だけでなく、さまざまな被害をもたらしています。
ユニクロアプリに不正なリクエスト実行の脆弱性
2020年9月に情報セキュリティに関する政府系組織のIPAや民間組織のJPCERT/CCは、ユニクロのAndroidアプリにXSSに関する複数の脆弱性があることを公表しました。
任意のアプリからURLアクセスのリクエストを受け取り、ユーザーの意思によらずアクセスしてしまうといいます。ユニクロはアプリの脆弱性を修正済みで、被害の報告は確認されていません。
XSSはWebブラウザを経由せずとも、脆弱性のあるアプリを介して攻撃してくることがあります。アプリユーザーには常に最新バージョンへのアップデートを徹底してもらうことが重要になります。
XSSの対処法
XSSを未然に防ぐには、クライアントPCと情報システムの双方で対処する必要があります。
PC側のXSS対処法
ブラウザを最新にアップデート
XSSの脅威を防ぐには、まずはWebブラウザやアプリを最新バージョンにアップデートすることです。バージョンが古いと、XSSに限らず何らかの脆弱性を抱えていることがあるためです。
ベータ版などの最新バージョンは動作が不安定になる可能性もありますが、旧バージョンのままにしておくよりもサイバー攻撃にあう危険性は基本的に低くなります。
不審なリンクはクリックしない
XSSは標的になったWebサイトの内部に仕掛けられることもありますが、ほとんどは外部からの不正なスクリプトの入力により発生します。つまり不正なスクリプトの入力を誘導できれば成立します。不正なスクリプトは面倒なキー入力でなく、不正なスクリプトを紛れこませたアクセスリンクの形でばら撒かれます。
XSSの大半はクリックして発動するセキュリティ攻撃になるため、メールやWebサイトなどで不審なリンクを見かけたらクリックしないことが一番の防御策となります。
ウイルス対策ソフトのインストール
個人向けのウィルス対策ソフトにもXSS対策が期待できる機能が搭載されており、できるだけ利用することをおすすめします。ウィルス対策ソフトには不正なスクリプトの検出機能や、正規のサイトを装った不正サイトにアクセスさせないブロック機能があります。
ブラウザの設定変更
Webサイトはブラウザで閲覧・利用されることがほとんどです。ブラウザのセキュリティ設定を変更してスクリプトの実行を無効化すれば、ブラウザ経由による被害を防ぐことも可能です。
社内システムの使用上問題がないなら、ブラウザのセキュリティ設定を変更しておくとよいでしょう。
情報システム側のXSS対処法
サーバーの脆弱性対処
Webサーバー全般の脆弱性をなくすことで、XSSをはじめさまざまな脅威を避けることができます。特に日常的なサーバーの脆弱性の確認や、OSやサーバーで使われるミドルウェアのアップデート作業を怠らないことです。また脆弱性が発見された場合は速やかに対処することが求められます。
Webアプリのスクリプト流入&実行を阻止
XSSの不正なスクリプトは主にWebアプリの入力フォームから流入します。そのため、WebアプリのフォームにhtmlタグやJavaScriptのスクリプトが入り込めないようにすると安心です。代表的なのは「入力値の制限」「スクリプトの無害化(サニタイジング)」です。
入力値の制限とは、特定の文字しか入力を受け付けない設定のことです。
たとえば生年月日の入力フォームにおいて特定の範囲の数値しか受け付けないようにすれば、スクリプトが入り込むことはなくなります。また任意の文字入力が必要な場合でも、入力できる文字数に制限を設ければ長いコード入力が困難になり、危険性をある程度抑えられるでしょう。
スクリプトの無害化とは、仮に不正なスクリプトが流入しても実行できないようにすることです。スクリプトで使用される記号文字「&」「<」「>」「”」「’」を別の文字に置換する(エスケープ処理)を行うことで攻撃者が意図する処理を行えなくなります。しかし、この場合は悪意のあるスクリプトを無害化(サニタイジング)するだけで、スクリプトの流入自体は防げていません。有害なスクリプトの流入を阻止するにはWAFが必要になります。
WAFの導入
WAF(Web Application Firewal)とはWebアプリ専用のセキュリティシステムで、Webアプリの通信を監視します。
WAFはWebアプリに対する不審なアクセスや、通常では返すはずのないデータの流出を検知すると通信をブロックします。WAFはユーザーのリクエスト内容をチェックできるため、XSSによる被害を防げます。
社内ネットワークで不正な通信をブロック
企業内から被害者を出さないようにするには、社内ユーザーが不正なサイトにアクセスする手段をできるだけなくすことが肝要です。
つまり、不審なメールの受信をブロックしたり、外部の不正サイトへのアクセス制限を行えば、ある程度の被害を防げます。
まとめ
XSSはWebサイトの利用者を標的に不正なスクリプトを実行するものです。XSS攻撃により、サイトの不正な挙動を引き起こしたり、個人情報漏洩、マルウェア感染といった多大な被害を受ける恐れがあります。
XSSの被害は事業者の規模や業種を問わず、ホームページ以外にもスマホアプリにまで広く及びます。XSS対策は提供側が実施するだけでなく、ユーザー側のセキュリティ強化が必要です。特に企業においては自社サイトのほか、社内のWeb利用においてもセキュリティ対策を施しましょう。