WordPressの脆弱性攻撃被害事例と今からできる対策とは?

2017年10月26日(木) ノウハウ

<ちょい読み>
・オープンソースで便利に使えるCMSのWordPress
・オープンソースという特性上、脆弱性が発見されやすい
・利用ユーザーが多く、ハッカーの標的になりやすい


オープンソースで気軽に使うことができるCMSとして有名なWordPressをご存知ですか?
無料で簡単にブログを開設したり、サイトを立ち上げることができるため世界中で利用されています。
有志のユーザーが開発したプラグインやテーマを使うことで自由にアレンジができる点もユーザーが多い理由のひとつです。

無料で便利に使うことができる反面、オープンソースであるがゆえに脆弱性が発見されやすいというデメリットがあります。
今回はWordPressの脆弱性を突いた攻撃事例と対策方法についてご紹介します。

WordPressとは何か?

WordPressはオープンソース・ソフトウェアのCMSで、CMSとしては世界的にメジャーなものです。
W3Techsによる「Usage of content management systems for websites」(Webサイトのコンテンツマネジメントシステム利用率)によると、利用率は28.8%と圧倒的にトップとなっています。

WebページはHTMLと呼ばれる言語で作成されていますが、CMSを利用すると、HTMLで全て一から作成する必要がなく、本来見せたい内容のみを作成すれば、HTMLを使わなくてもWebページの作成ができるようになります。

脆弱性攻撃事例とは

それでは、WordPressの脆弱性を狙った攻撃事例についてご紹介しましょう。

①2014年 Pingback機能を悪用したDDoS攻撃

Webコンテンツ管理システムのWordPressはPingback(ピンバック)と呼ばれるリクエストを受け付ける機能が初期設定で有効となっており、本来はブログ中に参照URLリンクを記述することで、参照URLに対して、URLを記載したことを通知するための機能です。
WordPressのダッシュボードでは、
設定→ディスカッション→「この投稿に含まれるすべてのリンクへの通知を試みる 」と「新しい記事に対し他のブログからの通知 (ピンバック・トラックバック) を受け付ける」
がピンバック送信・受信の設定になります。たいてい、デフォルトでオンになっていることが多いようです。
この機能を利用して、WordPressで構築されたWebサイトを踏み台とし、リクエストを毎秒数百件と大量に送りつけることで攻撃対象のサイトをダウンさせる攻撃でした。
この攻撃の特徴は、不正なソフトウェアを感染させるというのではなく、WordPressがもつ機能を利用したという点にあります。

②2017年1月~ REST APIの処理に起因する脆弱性攻撃

WordPress 4.7.0から4.7.1には、攻撃者が細工したリクエストを送信することにより、投稿内容を改ざんすることが可能な脆弱性が存在します。
これは2017年1月に発覚した脆弱性で、WordPressの不具合の中でも深刻なものでした。
この脆弱性はコンテンツの書き換え権限に関する脆弱性で、権限のないユーザーでも特定の文字列を入力するだけでコンテンツの書き換えができてしまうというものです。
WordPress.orgは即時に脆弱性の修正パッチを公開し、対応を促しましたが攻撃者の行動も早く155万件にも及ぶ被害が出てしまいました。

WordPressの脆弱性が発覚したとき、利用者はどのような対応をすれば良いのでしょうか?

WordPressの対策方法とは?

①最新バージョンにバージョンアップする

頻繁にバージョンアップしているので、定期的にバージョンアップされているかチェックし、常に最新バージョンを保つようにしてください。
WordPressのダッシュボード上でもWordPress自体、プラグインともにバージョンの通知を確認することができます。

2017年10月12日時点バージョン4.8.2では、

SQLインジェクション、クロスサイト・スクリプティング、ディレクトリ・トラバーサルといった攻撃が可能な脆弱性が修正されています。
>>WordPress修正情報

なお、バージョンアップの際は事前にコンテンツデータをバックアップしておいてください。
WordPressにはバックアップの仕組みを提供するプラグインがいくつか提供されています。
「BackuWPup」や「UpdraftPlus」といったものがあります。

少なくとも、エクスポート機能を使って、コンテンツをWordPressの外に置いておくことは必要です。なお、これだけの場合、復元状況によってはリンクの再設定が発生する場合があるため、多くのコンテンツを扱う場合は、バックアップの仕組みを導入するべきでしょう。

②テーマやプラグインはマイナーなものは使用しない

マイナーなテーマやプラグインはバージョンアップの開発自体が止まってしまうことが多いため、もし脆弱性が見つかると対応できなくなります。
実績があり、かつ頻繁に更新が行われている新鮮なものを利用しましょう。

③「Akismet」プラグインを利用して、スパムコメント対策をする

スパムコメントは様々なサイバー攻撃の入り口となるものです。
「Akismet」プラグインはデフォルトでインストールされています。
これも頻繁にバージョンアップしているので、定期的にチェックして最新バージョンになるようにしましょう。

④管理者ユーザID、パスワードをデフォルトから変更する。

デフォルトは「admin」ユーザとなっていますが、このままだと、パスワードのみで総当たり攻撃される可能性があるため、管理者ユーザIDも変更しておきましょう。
さらに、デフォルトだと、ユーザ名とニックネームが同一になっているので、ニックネームは別のものに変更し、さらにブログ上の表示名をニックネームに変更しましょう。そのままだと、ブログ記事にユーザ名が表示されるためです。

⑤SQLインジェクションやクロスサイトスクリプト等に対して、対策しておく

WordPressに限った話ではありませんが、WAFの導入が有効です。
特に、自環境への設定変更といった影響が少なく、かつ専門技術者が不要なクラウド型WAFがおすすめです。

⑥Webサーバの設定において、ファイル一覧が表示されないようにする

こちらはWordPress自体ではなく、WordPressが利用するWebサーバの仕組みの設定になります。
デフォルトの状態だと、公開しているディレクトリ構造がブラウザなどで見えるようになっている場合があります。
こうなっていると、攻撃者へ攻撃のヒントを与えてしまうことになってしまうので、設定を見直し、外側から見えないようにしましょう。

⑥ダッシュボードログインページ(wp-login.php)のアクセスを制限する

Webサーバが参照する「.htaccess」を編集することによりアクセスを制限できる例がいろいろ紹介されています。レンタルサーバによっては、レンタルサーバ運営会社により自動的に制限設定されているところもあるようです。

WordPressに脆弱性が発見されたときは速やかに対策を行いましょう。
動作エラーが出ないか確認をしなければならないなど、即時の対応を行うことは難しいとは思いますが、早ければ早いほど安全は確保できるでしょう。
WordPressを利用するときは脆弱性情報に注意しましょう。

Writer:SecurityTIMES編集部