WordPress 攻撃の手口と傾向

WordPressは、世界中で多くのウェブサイトに利用されているCMS(コンテンツ管理システム)ですが、その利用者数の多さからサイバー攻撃の標的になることがあります。
この記事では、WordPressに対する攻撃の手口と傾向をいくつか紹介します。

攻撃の手口

WPScanの WordPress 脆弱性統計によると、既知の脆弱性の内92パーセントはプラグインによる脆弱性であることが報告されています。
プラグインの脆弱性対策が、いかに重要かが伺えます。

※引用元: https://wpscan.com/statistics

脆弱性が存在するプラグインを利用しているか確認する方法はいくつかありますが、最も効率がよいのはWordPress専用の脆弱性スキャンツールを使用することです。 このツールを利用することで、WordPressのバージョンやプラグイン、テーマなどに対する脆弱性を素早く効率的に検出することができます。

大変便利でセキュリティにも役立つツールなのですが、この機能はサイバー攻撃の事前調査として悪用できてしまい、脆弱性が存在するWordPressサイトを見つけることが可能です。

なぜWordPressのプラグインやテーマに脆弱性が存在するのか

WordPressのプラグインやテーマは、誰でも簡単に開発することができます。
そのため、プラグインの開発者がセキュリティについて十分な知識を持っていなかったり、品質管理が不十分な場合、脆弱性が含まれることがあります。

自由に開発できる反面、脆弱性への対応が遅れたり、脆弱性の存在が周知されてもメンテナンスされずに放置されているプラグインが多数存在します。

またプラグイン単体では問題なく動作する場合でも、他のプラグインと同時に使用した場合に意図しない挙動が発生し、脆弱性になることがあります。

WordPressの脆弱性によって、どのような被害を受けるのか

脆弱性の存在するプラグインやテーマがインストールされている場合、攻撃者が容易に脆弱性を悪用することができ、次のような攻撃を仕掛けることができます。

SQLインジェクション

SQLインジェクションは、不正なSQLコマンドをWebアプリケーションに送り込むことで、データベースに対する不正アクセスを行う攻撃手法です。
具体的には、WordPressサイトのコメント欄のような入力フォーム等にSQLコマンドを入力することで、データベースの情報を読み出したり、改ざんしたりすることができます。
SQLインジェクションの被害を受けると、個人情報や機密情報の漏洩、WordPressサイトを破壊して閲覧できなくする場合があります。

CSRF(クロスサイトリクエストフォージェリ)

CSRFは、Webアプリケーション上で意図しない操作を行わせる攻撃手法です。
具体的には、攻撃者がWordPressサイト内に攻撃用ページを作成するなどして、そのページを閲覧したユーザーのログイン情報などを不正に取得したり、WordPressサイト内に保存されているデータを漏えいさせることができます。

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

XSS(クロスサイトスクリプティング)とは、Webサイトの脆弱性を悪用して、攻撃者が用意したスクリプトを被害者のブラウザ上で実行させる攻撃手法のことです。

具体的には、WordPressサイトのコメント欄のような入力フォーム等にプログラムコードを埋め込んで送信することで、攻撃者が意図したコードが被害者のブラウザ上で実行されるようにします。 これにより不正ログインするために必要な情報を盗み出し、攻撃者が被害者のアカウントにログインした状態で不正な操作を行うことができます。

WordPressのプラグインやテーマの脆弱性に対策する方法

プラグインやテーマに存在する脆弱性への対策は、開発者自身がいかに素早く対応してくれるかがポイントになります。
そのため、インストールする前に次の点を確認することが重要です。

頻繁にアップデートされていること

WordPressプラグインやテーマがバージョンアップする理由は、何も脆弱性を修正するためだけではありません。 プラグインに機能追加したり、細かな修正でクオリティを上げていくためにバージョンアップされることもあります。

つまり、定期的にアップデートされているからといって即座に脆弱性対策がされるとは限りませんし、逆に長期間更新されていないと必ず脆弱性が放置されるわけでもないのです。

しかしながら、頻繁にアップデートされている場合は開発者が機能改善に積極的である証拠なので、長期間更新されていないプラグインやテーマよりも素早く対策してくれる可能性が高いと言えるでしょう。

インストールする予定のプラグインやテーマでの脆弱性対策状況は、当サイトで確認することができます。

最新のWordPressバージョンに対応していること

最新版のWordPressに対応していない場合は、WordPress本体のアップデートに伴って不具合が発生する可能性があります。

WordPress プラグイン
何千もの無料プラグインを WordPress サイトの制作、カスタマイズ、強化に使用できます。

上記でプラグインを検索し、「検証済み最新バージョン」もしくは「対応する最新バージョン」と書かれた項目を確認しましょう。

逆にWordPress本体のバージョンが最新になっていない場合、最新版に対応したプラグインをインストールすると、不具合を起こして使えなくなる場合があります。

WordPress本体の脆弱性

WordPress本体の脆弱性はプラグインに比べて少ないとはいえ確実に存在し、脆弱性の修正アップデートも頻繁にされていますので、WordPress本体も必ず最新版にしておきましょう。

WordPressの本体プログラム(コアプログラム)は、WordPressのセキュリティチームによって定期的にセキュリティメンテナンスが行われています。 問題が発生した場合には素早く対応されており、セキュリティアップデートを迅速に適用していれば、本体の脆弱性による攻撃を受ける可能性は極めて低いと考えられます。

ただし、WordPressは古いバージョンとの互換性を維持するため、問題視されている機能(xmlrpc.phpなど)でもデフォルトで有効となっています。 そのため、セキュリティを確保するためには、この機能を無効化したり、機能制限をかける設定を実施することが重要です。

admin-ajax.php に対する攻撃への対策

問題のあるプラグインによって、「admin-ajax.php」を経由して任意のファイルアップロードが可能になる脆弱性が過去に繰り返し発見されています。

admin-ajax.phpに対する攻撃には、以下のような対策が必要です。

  • サーバー側でadmin-ajax.phpにアクセスできるIPアドレスを制限する
  • admin-ajax.phpへの攻撃に対応したセキュリティプラグインを利用する
  • WordPress本体のセキュリティアップデートが提供されたら素早く適用する
  • 使用していないプラグインやテーマを削除する

xmlrpc.php に対する攻撃への対策

XML-RPCは、WordPressが外部アプリケーションとやり取りするための機能で、xmlrpc.phpは、このXML-RPCを利用するためのコアファイルです。
XML-RPCが有効になっている場合、WordPressでの記事作成や画像のアップロードなどを、外部のアプリケーションから行うことができます。

正しく利用すれば便利な機能ですが、XML-RPCを悪用して不正にログインしたり、サイトを停止させる攻撃が実行でき、脆弱性の温床として広く問題視されている機能です。
過去には「ピンバック」という機能を悪用して、人気サイトへ大きな負荷をかけて停止させたり、大量のスパムコメントを送りつける大規模な攻撃が実行された事例もあります。

この攻撃への対策を放置していると、先述したような攻撃の踏み台に利用されることがあり、第三者のサイトへの攻撃に加担することになってしまいます。
そのため、XML-RPCについて検索すると、ほぼすべてのページで無効化することが推奨されており、WordPressのレンタルサーバーでは無効化した状態で提供されていることもあります。

ただし、Jetpackなどのxmlrpc.phpを利用しているプラグインやツールがある場合は、無効化すると使えなくなってしまいます。 そのような場合は、必要な通信のみ許可するようサーバー側で設定する必要があります。

REST APIに対する攻撃への対策

REST APIもXML-RPCと同様にWordPressが外部アプリケーションとやり取りするための機能です。
XML-RPCよりもセキュリティが強化され、より高度な機能を提供しています。

しかしながら、過去に大規模なサイト改ざん事件の引き金となった脆弱性が存在しており、やはり脆弱性対策に「完璧」は存在せず、また対策に終わりもないことを思い知らされます。(現在その脆弱性は修正済み)

Contact Form 7など、大変多くインストールされている人気プラグインがこの機能に依存しており、簡単に無効化や制限のできないケースも多いですが、REST API機能を利用しない場合には、無効化することもひとつの対策として考えられます。

まとめ

この記事では、WordPressサイトに対する攻撃の手口と傾向、そして対策について解説しました。
重要なポイントは以下の通りです。

  • プラグイン・テーマの選定時に、頻繁にアップデートされているものを選ぶ
  • 最新のWordPressバージョンに対応しているプラグイン・テーマを使用する
  • WordPress本体を常に最新版に保つ
  • 必要に応じて脆弱性が問題視されている機能(xmlrpc.phpなど)を無効化したり、機能制限をかける

以上の対策を適切に実行することで、WordPressのセキュリティを向上させ、サイトを安全に運営することができます。

注目記事

脆弱性情報を受け取る