WordPressでも起きている!クロスサイトスクリプティングとは?

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

Webアプリケーションで起こるサイバー攻撃の一種、クロスサイトスクリプティング(XSS)はご存知でしょうか。

今回は、「名前は聞いたことあるけれど何かはよくわかっていない」「攻撃されるとどうなってしまうの?」「どう対策したらいいのかわからない」といった方に向けた記事となっています。
どんな攻撃か知ることで、対策を行うことができますのでぜひ参考にしてみてください。

弊社では、WordPressの保守やセキュリティ対策を行なっておりますので、対策することが難しい方は、是非ご相談ください。
WordPressの保守・セキュリティ対策をお考えの方はこちら

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

クロスサイトスクリプティング(XSS)とは、サイバー攻撃の中でも有名な攻撃の一種です。

攻撃者が、サイトの脆弱性を利用し悪意あるスクリプトやHTMLを仕掛けることで、サイトの管理者やサイトの訪問者に対して被害をもたらす攻撃手法です。
管理者だけでなく、訪問したユーザーにまで攻撃が行われる場合があるので、被害範囲が大きくなってしまう可能性があります。

クロスサイトスクリプティングが仕掛けられていても、攻撃に気づき辛く知らない間に実行されてしまっていることがあります。

実行されてしまうと、個人情報が盗まれていたり、入力した情報が別の場所に送信されてしまっていたり、全く違ったサイトへ誘導されてしまうといったことが起こってしまいます。

普段見慣れないようなアラートやURL、自分が行なった操作とは違う処理が実行されていた場合は注意が必要です。

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

クロスサイトスクリプティングには、3つの攻撃種類があります。
では、各種類の特徴についてみていきましょう。

反射型

反射型XSSは、メールや悪意あるサイトへのリンクを配信・設置することでユーザーがクリックすることでリクエストが送信されることで起こる攻撃です。

クリックしたリクエストが悪意あるものなのにも関わらず、実行された値によってそのリクエストが正しいとブラウザが判断してしまいレスポンスを返してしまう場合があります。

メールやリンクとして表示していることによって、攻撃のハードルも低くユーザーも気づきにくいです。

蓄積型

蓄積型XSSは、攻撃者が用意したスクリプトやHTMLを攻撃対象のサーバーに格納することで起こる攻撃です。

格納してから、時間が経ってしまったとしてもデータベースやサーバー上に残っている限り永久的にXSSが発生する可能性を残していることになり、被害はとても大きなものとなってしまいます。

掲示板のような誰でも出入りできるようなサイトで記事を閲覧している場合に攻撃用のスクリプトが仕掛けられているかもしれません。
頻繁にその記事やサイトに訪れないような場合は、反射型のように誘導しなければなりませんが、今では記事の順位を検索することも可能なのでよく閲覧されている記事に仕掛けることも容易になってきています。

DOM型

DOM型XSSは、ブラウザ上で動作するJavaScriptに問題があり、攻撃者によって仕掛けられたURLを開いた場合にHTMLとして展開され、攻撃者が用意したスクリプトが実行され、意図しない結果が表示されてしまう攻撃です。

蓄積型や反射型とは違い、クライアント側であるブラウザ上で発生します。
クライアントで発生することから、サーバーでは検知することができず、ログも残ることがないため、把握に時間がかかってしまう場合があります。

WordPressサイトがXSSで狙われる理由

WordPressサイトがXSSで狙われる理由はいくつかあります。

WordPressがオープンソースであること

WordPressがOSSであるということです。
OSS(オープンソースソフトウェア)は、プログラムコードが全ての人に公開されており、誰もが開発に参加できるソフトウェアのことです。

多くの人が開発に参加することで、発展や拡張が早い一方で、ハッカーもソースコードを確認できるので、脆弱性があった場合は容易に攻撃することができます。

テーマやプラグインも脆弱性が確認されている

WordPress本体だけでなくテーマやプラグインにも脆弱性が確認されることもあるので、攻撃者に狙われる可能性が十分にあります。

特に、WordPress本体のアップデートは行なっていてもテーマやプラグインのアップデートは行なっていない方も多いのではないでしょうか。
WordPress本体は単体ですがテーマやプラグインは複数持っているがゆえに、アップデートが大変でサイトに影響が出てしまう可能性もあるために行えていない方もいらっしゃると思います。

しかし、アップデートを行わないでサイトを運営し続けてしまうと脆弱性が確認されているため、古くなったテーマやプラグインが標的にされしまいます。

アップデートが来た際には、その都度行うことで標的となるような状態を防ぐことができますので、最新にしておくことをおすすめします。

また、定期的にアップデートが行われるWordPress本体とは違い、開発者によってはテーマやプラグインの更新が全くない場合もありますので、本体同様に管理が非常に重要になってきます。

更新を行わず、また、更新されないプラグインを長期間利用していては、情報や構造も古くなってしまっています。
例えで言えば、年数の経ったマンションの修繕工事を行わず、劣化した部分から雨漏りや漏電など起きてしまっているような状態です。

そうした部分を攻撃者は探し脆弱性を突いてくるので、アップデートがあった際には必ず行い、更新が途絶えているテーマやプラグインは使わないようにすることで安全にサイトを運営することができます。

参考:JVN iPedia 脆弱性対策情報データベースで確認されているクロスサイトスクリプティング

セキュリティ対策していないサイトが多い

WordPressはHTMLやCSSなどの知識がなくても、Webサイトを作成できる非常に便利なツールです。
しかし、Web初心者の方が使うことが多いため、そもそもセキュリティ対策を行なっていないというサイトも多いです。

セキュリティ対策を行なっていないことにより、攻撃が行われていても気づくのに遅れてしまったり、攻撃できるような環境を攻撃者に与えてしまっているのです。

攻撃者に狙われる状態にしない為にも、XSS対策だけでなく、セキュリティ対策は非常に重要です。

WordPressサイトが攻撃された場合の被害と影響範囲

WordPressサイトがクロスサイトスクリプティングが攻撃された場合の被害と影響範囲は攻撃者が仕掛けた罠によります。

XSSの被害は

  • Webサイトの改ざん
  • Cookieの盗難
  • 情報漏洩
  • 偽サイトでのフィッシング詐欺

といったような被害が考えられます。
以下で説明していきます。

Webサイトの改ざん

Webサイトの改ざんは記事の内容やソースコードを書き換えられる可能性があります。
表面的に見えている記事の内容や不明なサイトへのリンク・バナーが付いている場合は気づくことができるかもしれません。

しかし、内部のソースコードを書き換えられてしまい訪問者を追跡するようなことがある場合には大きな被害になってしまう可能性があります。

Cookieの盗難

Cookieにはログイン情報やアクセストラッキング情報が保存されているので盗難にあった場合、攻撃者がログイン状態を再現できてしまいます。

ログインされてしまうと攻撃者の好き放題できてしまいますし、それがECサイトであったとしたら、決済情報や会員情報まで盗まれてしまうような状態になってしまいかねません。

情報漏洩

会員サイトのような、個人で扱っているサイトではない場合はさらに注意が必要です。
多くの会員や詳細な個人情報を扱っているサイトであればあるほど、被害範囲は大きくなってしまいます。

情報が多く格納されたデータベースのデータが流出してしまったときには、サイト内の被害に止まらず場合によっては生活にまで影響がでる可能性があります。
ひどい場合には、損害賠償請求まで発生してしまうので注意が必要です。

偽サイトでのフィッシング詐欺

宅配メールやECサイトからのレコメンド通知のリンクからログインしてしまったがゆえに、ログイン情報やクレジット情報などが盗まれてしまいます。

昨今、アマゾンや楽天市場、Yahoo!オークションなどの便利なサービスを利用しメール配信や本家に似たようなサイトを構築し、ユーザーを落とし入れるようなこともあるので、見知らぬリンク・メールを開封する場合には一度確認してから行いましょう。

参考:佐川急便かたる偽SMS急増 偽サイトに誘導 iPhone→ID詐取 Android→偽アプリ配布

また、蓄積型のクロスサイトスクリプティングのような攻撃が行われていた場合、永久的に発生するので、その分被害も大きくなってしまいます。

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

WordPressが狙われてしまう理由と攻撃された場合の被害と影響範囲を紹介してきました。

では実際にはどんな対策を行なっていけば良いのでしょうか。

Webサイト管理者とユーザーお互いに対策できますので、それぞれ説明していきます。

管理者側のXSS対策

  • WordPress本体とテーマ・プラグインを常に最新にする
  • エスケープ処理を行う
  • 入力制限を行う

WordPress本体とテーマ・プラグインを常に最新にする

一番身近で簡単な対策方法です。
WordPress本体とテーマ・プラグインを常に最新に保つことです。

WordPress本体のマイナーアップデートはセキュリティアップデートが含まれているので、アップデートが報告されたらすぐに更新を行い最新にしましょう。
サイトのレイアウトなど崩れてしまうような可能性は低いので、問題なくアップデートすることができます。
心配であれば、バックアップを行なってアップデートを行いましょう。

放置されてしまっているテーマやプラグインを利用していると、脆弱性を突かれてしまう可能性が高くなってしまいます。
更新が止まっている・使用していないテーマやプラグインは削除することで、攻撃する隙を与えないようにすることができます。

エスケープ処理を行う

問い合わせやコメントフォームなどユーザーが入力できる機能がある場合、意味のある処理として実行されてしまう可能性があるため、エスケープ処理を行う必要があります。
入力された文字をエスケープすることで、意味のある実行(スクリプト・HTML)として実行させないようにすることができます。

エスケープすることができないと、不正なスクリプトが実行されてしまったり不正なHTMLが埋め込まれてしまう場合があります。

エスケープする必要のある記号が以下の表になります。

エスケープ前 エスケープ後
<
>
&
空白

入力制限を行う

検索窓やフォームに対して、入力制限を行うことでスクリプトの実行などを防ぐことができます。

入力制限は脆弱性を突いた攻撃を防ぐことができるだけでなく、ユーザーの打ち間違えや登録間違えも防止できる有効な手段ですので、対策してみましょう。

ユーザー側のXSS対策

WAFの導入

WAFを導入することで、通常のファイアウォールとは違いWeb アプリケーションに対して対策を行うことができます。

導入することによって、XSSやSQLインジェクションといった攻撃を遮断することが可能で悪用された場合にも検出することが可能です。

脆弱性が見つかった場合に遮断することができるため、すぐに脆弱性対策を行えない場合などにも有効ですので、導入してはいかがでしょうか。

通信が保護されていないサイトでのフォーム入力に注意する

サイトにアクセスした時に、URLが表示されるようになっていますが、httpではセキュリティ状態は担保されておらず、通信は保護されていませんといった注意が検索バーに表示されます。
そうした状態で通信を行なってしまうと攻撃者が通信を盗み取ってしまったり、書き換えられる恐れがあります

また、GoogleはChrome79からHTTPSのサイト内で画像や外部ファイルがよもこまれていた場合、そのファイルの読み込みをブロックする機能を追加すると報告しています。
今後Webサイトに安全安心に訪れることができるようになりますので、ユーザーにとっては嬉しいアップデートです。

参考:Google Security Blog

セキュリティソフトを入れる

PCやブラウザにセキュリティソフトを入れることで、悪意あるサイトを遮断することができます。

今ではPCだけでなく、ブラウザに特化したセキュリティソフトも発売されていますのでネットサーフィンをしている時に危険なサイトに立入る前に検出することができる場合もありますので、有効活用してみてください。

WordPressのセキュリティ対策を依頼する

今回はクロスサイトスクリプティング(XSS)について、紹介してきました。

XSSが起こってしまった場合、自分に対してだけでなく他者にも影響が及んでしまうことで、大きな被害や信頼を失ってしまう場合があります。

小さな対策から行い、少しでも脆弱性を狙われにくいサイトを構築していきましょう。

対策を行うのは難しいといった場合はWordPressの保守・セキュリティ対策をおこなっていますので、ぜひご相談ください。

土井純也

土井 純也 Twitterアイコン Facebookアイコン

WordPressスペシャリスト・エンジニア
株式会社プレートテクノロジー 取締役
1985年北海道生まれ。200社以上のWordPressサイトの制作を担当し、「wp.support」では一部上場企業を含め、様々なサイトのWordPress保守・セキュリティをサポートしている。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

記事が気に入ったら
wp.supportを "いいね!"
Facebookで更新情報をお届け。

WordPressの保守・セキュリティ対策なら「wp.support」