WordPressサイトを運用する上で警戒しなければいけないのが、クロスサイトスクリプティング(XSS)です。日々、多くのサイトがサイバー攻撃の脅威に晒されていますが、中でもXSSは一般的な攻撃手法として知られています。
クロスサイトスクリプティングはWebサイトに悪意のあるスクリプトを埋め込み、訪問者のブラウザ上で実行させ、さまざまな被害を引き起こす攻撃手法です。
被害を受けるとサイトの信頼性を損ねるだけでなく、ユーザー情報の漏洩や改ざんなど、深刻な事態に発展する可能性があります。
この記事では、WordPressのクロスサイトスクリプティング対策を詳しく解説します。WordPressがXSS攻撃の標的になりやすい理由を知りたい方、被害例を把握したい方もぜひ最後までお読みください。
目次
WordPressテーマ「ISSUE」
洗練された採用サイトが誰でも簡単に作成できる。クロスサイトスクリプティングとは
クロスサイトスクリプティング(XSS)とは、Webサイトの脆弱性を悪用し、悪意のあるスクリプト(主にJavaScript)を埋め込み、訪問者のブラウザ上で実行させるサイバー攻撃です。
XSSは掲示板やコメント欄、お問い合わせフォームなど、ユーザーが入力したデータをそのまま表示する機能を持つサイトで発生しやすいです。
攻撃者は入力フォームに悪意のあるスクリプトを記述し、サイトに保存させます。その後、他のユーザーがそのページを閲覧すると、埋め込まれたスクリプトがユーザーのブラウザ上で実行されるため、さまざまな被害が引き起こるでしょう。
攻撃は3種類ある
クロスサイトスクリプティング攻撃は、主に「反射型XSS」「持続型XSS」「DOM Based XSS」の3種類に分類されます。
種類 | 特徴 | 攻撃の流れ |
---|---|---|
反射型XSS | ユーザーのリクエストに含まれるスクリプトがそのままレスポンスに返される。即時的に実行される一時的な攻撃。 | 攻撃者が悪意のあるリンクを作成し、ユーザーがそれをクリックすることでスクリプトが実行される。 |
持続型XSS | スクリプトがサーバーのデータベースに保存され、他のユーザーがページを訪れるたびに実行される。 | 攻撃者がスクリプトをデータベースに保存し、他のユーザーがそのページを閲覧することで実行される。 |
DOM Based XSS | クライアント側のDOMを操作してスクリプトを実行する。サーバーを経由せず、ブラウザ内で完結。 | ユーザーが特定のURLにアクセスした際に、ブラウザ内でスクリプトが実行される。 |
いずれのタイプも、ユーザーのセッションハイジャックや個人情報の窃取、サイトの改ざんなど、深刻な被害に繋がる可能性があります。
クロスサイトスクリプティング攻撃に
WordPressが狙われやすい理由
WordPressは、世界中で幅広く利用されるCMSです。そのため、クロスサイトスクリプティング攻撃の標的になりやすい傾向があります。
主な理由は以下のとおりです。
- コードが一般公開されているため(オープンソース)
- プラグインやテーマの脆弱性を狙われるため
それそれ詳しく見ていきましょう。
コードが一般公開されているため(オープンソース)
WordPressがクロスサイトスクリプティング攻撃をされやすい理由は、コードが一般公開されている(オープンソース)ためです。
ソースコードが無償で公開され、誰でも自由に利用できるほか、改変や再配布ができるソフトウェアのこと
これにより、攻撃者は脆弱性を探しやすく、発見されると世界中のWordPressサイトが攻撃対象となる可能性があります。
プラグインやテーマの脆弱性を狙われるため
WordPressは本体だけでなく、数多くのプラグインやテーマを利用して機能を拡張するのが一般的です。しかし、これらの中にはセキュリティ対策が不十分だったり、適切にメンテナンスがされていなかったりするものがあります。
プラグインやテーマに脆弱性があると、利用しているすべてのサイトが攻撃の危険に晒されます。
また、ユーザーが入力するコメント欄やフォームなど、動的コンテンツを扱う機会が多い場合、入力値の検証やエスケープ処理が不十分だと攻撃の入り口になりやすいです。
WordPressのクロスサイトスクリプティング対策5選
WordPressのクロスサイトスクリプティング対策は、大きく分けると5つあります。
- WordPressを最新バージョンにし続ける
- パスワード強化
- ログインにアクセス制限を設ける
- 使っていないプラグイン・テーマは削除
- WAFを導入する
それぞれ詳しく解説します。
WordPressを最新バージョンにし続ける
WordPressサイトをクロスサイトスクリプティング攻撃から守るには、以下を最新バージョンに保つ必要があります。
- WordPress本体
- テーマ
- プラグイン
WordPressの開発チームやプラグイン・テーマの開発者は、脆弱性が発見すると修正した新しいバージョンをリリースするのが一般的です。
これらのアップデートには、クロスサイトスクリプティングなどの脆弱性を修正するプログラムが含まれているため、古いバージョンのまま使用し続けると攻撃者に侵入されるリスクが高まります。
定期的な更新は手間がかかるかもしれませんが、WordPressの自動更新機能を有効化すれば、新しいバージョンがリリースされるたびにアップデートを自動で行ってくれます。
特別な理由がないかぎりは、自動更新機能を有効化しておきましょう。
パスワードの強化
WordPressのクロスサイトスクリプティング対策として有効なのは、アカウントパスワードの強化です。
特定されやすいパスワードを使用していると、不正アクセスされるリスクが高まります。
アカウントのパスワードは簡単に変更できるので、以下の手順に沿って強化なものに設定し直しましょう。
まずは、管理画面>「ユーザー」>「プロフィール」と進みます。
プロフィール画面の項目「アカウント管理」にある「新しいパスワードを設定」を選択してください。
入力欄に新しいパスワードを入力し、ページの最下部にある「プロフィールを更新」をクリックします。
攻撃者から特定されにくいパスワードにするには、英数字記号を組み合わせた複雑なものにするべきです。くれぐれも、他のサイトで使用しているものを使い回さないようにしてください。
複雑なパスワードを考えるのが難しい場合は、パスワード生成ツールの利用がおすすめです。
強固なパスワード候補を、あっという間に入手できます。
ログインにアクセス制限を設ける
WordPressの管理画面は、クロスサイトスクリプティング攻撃の標的となりやすい箇所です。管理者アカウントが乗っ取られると、サイト全体が改ざんされたり、悪意のあるスクリプトが埋め込まれたりする危険性が高まります。
これを防ぐには、ログインページにアクセス制限を設けるのが有効です。
方法はいくつかありますが、.htaccessでのIPアドレス制限がシンプルかつわかりやすいでしょう。実行すると、指定したIPアドレス以外はアクセスが拒否されます。
設定する手順は以下のとおりです。
まずはお使いのレンタルサーバーにログインし、ファイルマネージャー(ファイル管理)にアクセスします(※以降はエックスサーバーでの手順を紹介します)。
ファイルマネージャーが起動したら、該当するドメインのフォルダ>WordPressをインストールしたフォルダを選択します(エックスサーバーの場合、public_htmlがデフォルト)。
「.htaccess」を右クリック>「編集」を選択してください。
編集画面が起動するので、IPアドレスを制限するための記述を追記します。
Order deny allow Deny from all Allow from xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxxの部分に、アクセスを許可するAPアドレスを指定しましょう。
記述が終わったら「更新」をクリックします。
これにより、許可されていない第三者からの不正なログイン試行を遮断できます。
使っていないプラグイン・テーマは削除
WordPressサイトで利用していないプラグインやテーマは、セキュリティリスクとなる可能性が高いです。
したがって、速やかに削除してください。
プラグインやテーマを古いバージョンのまま使用すると、既知の脆弱性が一向に修正されないため、クロスサイトスクリプティング攻撃を受けやすくなります。
プラグインやテーマの棚卸しは定期的に行い、必要のないものは完全に削除する習慣を徹底しましょう。
WAFを導入する
Webサイトをクロスサイトスクリプティング(XSS)攻撃から保護するには、WAF(Web Application Firewall)の導入が有効です。
WAFはWebアプリケーションとインターネットの間に位置し、HTTP/HTTPS通信を監視することで、XSSやSQLインジェクションなどの脆弱性をねらった攻撃を検知しブロックする役割を果たします。
WordPress本体やプラグイン、テーマに未知の脆弱性があっても、WAFが攻撃パターンを検知して遮断するため、サイトへの不正アクセスやデータの改ざんを防ぐ効果が期待できます。
WAFは月額数千~数万円ほどで導入できるものから、数百万以上にかかるものもあるため、WordPressサイトの規模に合わせて導入を検討するといいでしょう。
WordPressのクロスサイトスクリプティング被害例
WordPressのクロスサイトスクリプティング被害例は、以下のとおりです。
- 管理画面から不正アクセスされる
- プラグインの脆弱性をねらった攻撃
- スパム
- cookieの不正取得
それぞれ詳しく見ていきましょう。
管理画面から不正アクセスされる
WordPressのクロスサイトスクリプティング攻撃の被害には、管理画面から不正アクセスされるケースがあります。これは、特に「持続型XSS」の攻撃手法によって発生しやすいでしょう。
サイトのコメント欄やお問い合わせフォームに悪意のあるスクリプトが埋め込まれると、管理画面のコメント管理ページなどで表示された瞬間、管理者のブラウザ上でスクリプトが実行されます。
このスクリプトは管理者のセッションクッキーを窃取したり、不正な管理者アカウントを作成したりする可能性があります。
プラグインの脆弱性をねらった攻撃
WordPressのクロスサイトスクリプティング被害の多くは、プラグインの脆弱性をねらった攻撃によって引き起こされます。
現在は多種多様なプラグインがリリースされていますが、すべてが厳格なセキュリティ基準で開発されているとは限りません。特に人気の高いフォームプラグインやギャラリープラグイン、SEO関連プラグインなどに脆弱性が発見される場合があります。
攻撃者はこれらのプラグインの入力フィールドや設定画面に悪意のあるスクリプトを注入し、意図しないサイトへのリダイレクトや個人情報の窃取を行ないます。
スパム
クロスサイトスクリプティング攻撃を受けると、Webサイトからスパムメールを大量に送信される可能性があります。
脆弱性を持つサイトの管理画面や、ユーザーが利用するフォームなどに悪意のあるスクリプトが埋め込まれた場合、メール送信機能が悪用され、会員に大量のスパムメールが送信されるリスクが高まります。
これにより、サイトのドメインがスパム送信元としてブラックリストに登録され、正規のメール送信ができなくなるほか、サイトの評判や信用が著しく低下するかもしれません。
また、サイトがスパム送信の踏み台として利用されると、知らないうちにサイバー犯罪に加担してしまう危険もあります。
クロスサイトスクリプティング攻撃の代表的な被害に、ユーザーのCookie情報が不正に取得されるケースがあります。
Cookieにはログイン情報やセッションIDなど、ユーザの認証に関わる重要なデータが含まれる場合が多いです。
攻撃が成功し悪意のあるスクリプトがユーザーのブラウザで実行されると、情報を読み取られ、攻撃者のサーバーへ送信されます。これにより、以下の被害を受ける可能性が高くなるでしょう。
- 攻撃者がユーザーに成りすましてサイトに不正ログインする
- 個人情報を閲覧される
- アカウント設定を変更される
- 不正取引が行われる
cookieが不正取得されると、ユーザーのプライバシーが侵害されるだけでなく、深刻な被害に繋がりかねません。
クロスサイトスクリプティングと
SQLインジェクションの違い
WordPressサイトに対する代表的な攻撃手法に、クロスサイトスクリプティング(XSS)とSQLインジェクションがあります。しかし、これらは混同されがちです。
クロスサイトスクリプティング(XSS)はWebサイトの脆弱性を悪用し、悪意のあるスクリプトを「サイト訪問者のWebブラウザ上」で実行させる攻撃です。主な目的は、ユーザーのセッションハイジャック、Cookieの窃取、フィッシング詐欺への誘導などが挙げられます。
SQLインジェクションはWebサイトの脆弱性を悪用し、悪意のあるSQLコマンドを「データベース」に対して実行させる攻撃です。主な目的は、データベース内の機密情報(ユーザー情報、パスワードなど)の窃取、データベースの破壊、データの改ざんなどが挙げられます。
簡単に言えば、XSSは「ユーザーのブラウザを攻撃する」もの、SQLインジェクションは「データベースを攻撃する」ものです。
どちらも入力値の検証不足に起因しますが、攻撃対象と結果として引き起こされる被害のタイプが異なります。
まとめ
WordPressサイトのセキュリティは、一度の対策で終わりではありません。監視の継続と最新情報の取得が欠かせません。
定期的な保守と運用を実施し、クロスサイトスクリプティング対策を徹底しましょう。
セキュリティに不安がある場合は、サイバー攻撃対策のプロへの相談も検討してみてください。専門的なサービスを受けられれば、確かな効果と安全な運営を実現できるはずです。
WordPressテーマ集
コメント