WordPressは、最も高い人気を誇るサイト作成ツールの1つ。その人気ゆえに、WordPressサイトは悪意あるユーザーの標的になりがちというマイナスな側面も。WordPressがサイバー攻撃に対処できるほど安全なのかどうか、疑問を抱いている方は少なくないはずです。

残念ながら、毎年何十万ものWordPressサイトやECサイトがハッキングされています(ECサイトを保護する方法はこちら)。

「年に何百万」と聞くと不安になりますが、実はハッカーの侵入経路は、最新のWordPressコアの脆弱性ではありません。その多くは、更新を怠っていたり、安全でないパスワードを使っていたりなどの理由から、ハッキングされています。

したがって、「WordPressは安全か」という問いには、単に「YES/NO」で答えることはできません。そこで今回は、以下のような角度からWordPressの安全性について掘り下げていきます。

  • WordPressサイトがハッキングされる理由(統計データからセキュリティの脆弱性をチェック)
  • WordPressのコアチームによるセキュリティ問題への対処方法
  • ベストプラクティスに従って確保できるWordPressの安全性

WordPressサイトがハッキングに遭う原因

毎年多くのWordPressサイトがハッキングされていることは周知の事実。では、具体的にはどのようにハッキングが発生しているのでしょうか。世界的にWordPressに問題があるのでしょうか。それとも、サイト管理者側に原因があるのでしょうか。

データに基づき、WordPressサイトがハッキングされる主な原因をご紹介します。

古いコアファイル

Sucuriの2017年ハッキングサイトレポートでは、意外な相関関係が明らかになっています。ハッキングされたWordPressサイトのうち、39.3%はハッキング時に古いWordPressコアを使用していました。

ハッキングされたウェブサイト(画像出典: Sucuri)
ハッキングされたウェブサイト(画像出典: Sucuri)

このようにハッキングと古いバージョンの使用は密接に関係していることが分かります。ちなみに、2016年の割合は61%に比べれば、大幅に改善しています。

WPScan Vulnerability Databaseによると、既知の脆弱性のおよそ74%はWordPressのコアソフトウェアにあります。中でも最も脆弱性の多いバージョンはWordPress 3.Xです。

WPScanの既知の脆弱性
WPScanの既知の脆弱性

最新バージョンを使用しているWordPressサイトは62%のみで、多くのサイトが脆弱性を抱えている現状です。

WordPressのバージョン別使用率(画像出典: WordPress.org)
WordPressのバージョン別使用率(画像出典: WordPress.org)

数十万のサイトが改ざんされた2017年2月のWordPress REST APIの重要な脆弱性も、これに関連しています。

WordPress 4.7.1には改ざんに利用された複数の脆弱性が含まれていましたが、この事件が発生する数週間前には、これらの脆弱性をすべて修正したWordPress 4.7.2がリリースされていました。

自動セキュリティパッチを無効にしていなかったり、WordPress 4.7.2に速やかに更新したWordPressサイトはこの被害に遭っていません。

要点─WordPressのセキュリティチームは、WordPressコアファイルに介在する問題をすばやく処理しています。すべてのセキュリティアップデートを迅速に適用していれば、本体の脆弱性による攻撃を受ける可能性は極めて低いでしょう。しかし、それを怠ると攻撃を受けた時にリスクに晒されます。

2. 古いプラグインやテーマ

WordPressの魅力は、豊富なプラグインやテーマにあります。本記事執筆時点で、WordPressリポジトリには5万6,000以上のプラグイン、それ以外にも何千もの有料プラグインがリリースされています。

プラグインはサイトの機能を拡張するのに非常に有用ですが、同時に悪意あるユーザーの潜在的な侵入口を提供することを意味します。ほとんどのWordPress開発者は、コード標準に従い、更新があればパッチを適用していますが、以下のような課題は残ります。

  • プラグインやテーマの脆弱性は、WordPressのコアほど監視の目が行き届いていないため、発見されないことがある。
  • 開発者によるサポートが終了したプラグインも使用され続けている。
  • パッチを適用しても、ユーザーが更新を行わない。

Wordfenceがハッキングされたサイトを対象に行った調査では、ハッカーの侵入経路を特定したサイト所有者の60%以上が、プラグインやテーマの脆弱性が原因であったと回答しています。

Wordfenceによるハッキングされたサイトに関する調査(画像出典: Wordfence)
Wordfenceによるハッキングされたサイトに関する調査(画像出典: Wordfence)

同様に、Sucuriの2016年のレポートでは、ハッキングされたサイトの脆弱性のうち15%以上をたった3つのプラグインが占めていました。

ハッキングされたWordPressプラグイン
ハッキングされたWordPressプラグイン

ところが、蓋を開けてみれば、これらのプラグインの脆弱性にはかなり前からパッチが適用されており、単にサイト所有者がプラグインの更新を行なっていないことに原因でした。

要点WordPressのテーマとプラグインはワイルドカードを導入し、ハッカーにサイトへの侵入経路を提供する可能性があります。しかし、これについてはベストプラクティスに従うことで軽減可能です。プラグインやテーマは信頼できるかどうかを確認した上でインストールし、常に更新を行いましょう。

また、数ドルでWordPressプラグインやテーマを購入できるGPL(フリーソフトウェアライセンス)に関して。WordPressもGPLの提唱する「フリー(無料+自由)」ライセンスの対象であり、それ自体は素晴らしいことですが、購入する際は注意が必要です。このプラグインは、言うなれば、一種の「非正規プラグイン」です。

GPLからプラグインを購入するということは、プラグインを購入すると、その更新を第三者に一任することになります。したがって、開発元からプラグインを入手するのが最も安全な方法です(プラグイン開発者をサポートするためにも)。

3. WordPress、FTP、ホスティングのログイン認証情報の漏洩

WordPress側の問題に限らず、WordPressのログイン認証情報、またはホスティングアカウントやFTPアカウントのログイン認証情報が盗用されることもあります。

同じWordfenceの調査では、ブルートフォース攻撃(総当たり攻撃)がハッキングの原因の16%ほどを占め、パスワードの盗難、Workstation、フィッシング、FTPアカウントが原因のケースも、少ないながら無視できません。

WordPressウェブサイトがいくら安全でも、悪意のある人物が「侵入する鍵」を入手してしまうと為す術がありません。

WordPressでは安全なパスワードを自動生成することでこのリスクを軽減していますが、パスワードを安全に保管し、レンタルサーバーやFTPにも強力なパスワードを使用するかどうかはユーザー次第です。

要点─アカウント情報を守ることにより、悪意のある攻撃を予防できます。ブルートフォース攻撃を防止するためには、すべてのWordPressアカウントで強力なパスワードを使用し、不正ログインを制限しましょう。KinstaのWordPress専用マネージドホスティングではこれがデフォルトで実装されています。

ホスティングアカウントでは、サポートされていれば必ず二要素認証を使用し、FTPパスワードをプレーンテキストで保存しないようにしましょう(FTPプログラムの一部ではそうしているものも)。

FTPとSFTP(SSHファイル転送プロトコル)のどちらかを選択できる場合には、必ずSFTPを選択してください(FTPとSFTPの違いはこちら)。FTPしか利用できない場合は、SFTPのサポートを依頼するか、SFTP対応のホスティングに乗り換えることをお勧めします。これにより、平文のパスワードやファイルデータは一切転送されません。Kinstaでは、SFTPのファイル転送のみをサポートしています。

4. サプライチェーン攻撃

最近ではハッカーがサプライチェーン攻撃という厄介な手法を使用してウェブサイトにアクセスする事案が増えてきました。これは悪意のある人物が次の手順でハッキングを行うことを意味します。

  • WordPress.orgに掲載されている高品質のプラグインを入手
  • そのプラグインのコードにバックドアを追加
  • 利用者がプラグインを更新するのを待ち、バックドアを仕込む

興味のある方は、Wordfenceの記事もご確認ください。このような攻撃はまだそこまで普及していませんが、ユーザーが行わなければならないこと(=プラグインの更新)を利用しているため、防止しにくいという難点があります。

一方、WordPress.orgの担当者は通常、上記のような問題をすばやく見つけ出し、ディレクトリから該当のプラグインを削除しています。

要点最新のバージョンに更新することはむしろ推奨される行為であるため、この攻撃は防止しにくいと言えます。そこで、WordfenceなどのセキュリティプラグインをインストールしてWordPress.orgからプラグインが削除された際に警告が表示されるようにし、すばやく対応しましょう。さらに、バックアップを準備しておくことで、サイトを復元し取り返しのつかないダメージを防ぐことができます。

5. 劣悪なホスティング環境と時代遅れの技術

WordPressサイト自体の問題の他にも、ホスティング環境とご利用のテクノロジーも大きな影響をもたらします。例えば、PHP 7はPHP 5と比べてはるかにセキュリティが強化されているにもかかわらず、PHP 7以上を使用しているのはWordPressサイト全体のたった33%です。

WordPressサイトのPHPバージョン別使用率(画像出典: WordPress.org)
WordPressサイトのPHPバージョン別使用率(画像出典: WordPress.org

PHP 5.6のセキュリティサポートは、2018年末に正式に終了しています。また、それ以前のPHP 5のバージョンに至っては、何年もの間セキュリティサポートが提供されていません。

つまり、5.6未満のPHPバージョンを使用したホスティング環境を使用すると、問題の修正がされていないPHPの脆弱性というリスクに晒されてしまいます。

その事実にもかかわらず、WordPressサイトの28%が未だに5.6未満のPHPバージョンを使用しています。近年、記録的な数のPHPの脆弱性が発覚していることを考えると、これは大きな課題です。

安全なWordPressサーバーを使用すると、最新のテクノロジーを利用できるだけでなく、次のような機能によりセキュリティ上のリスクを大幅に軽減できます。

要点─安全なホスティング環境、PHPといった、重要なテクノロジーについて最新バージョンを使用することにより、WordPressウェブサイトの安全性を高めることができます。

WordPressのセキュリティの責任分担

ここまでご紹介した問題に対処する責任は誰が負うのでしょうか。

公式には、WordPressのセキュリティチームです(一方で、世界中の個人の貢献者や開発者もWordPressの安全性に貢献している)。

WordPressのセキュリティチームは、「リード開発者やセキュリティ研究者を含む50人の専門家」で構成されおり、これら専門家の約半数はAutomatticの社員。残りはウェブセキュリティの分野で働いています。加えて、セキュリティ分野の学者やホスティング会社に助言が求められることもあります。

WordPressセキュリティチームの仕事についてご興味がある方は、WordCamp Europe 2017でのAaron Campbell氏による48分の講演をご覧ください。要点のみご紹介すると、WordPressのセキュリティチームは次のことを行っています。

  • HackerOneのバグバウンティなどのツールを使用し、バグや潜在的な課題を抽出、修正
  • すべてのWordPressコアリリースに際してのコンサルティング

WordPressセキュリティチームは、バグを修正しセキュリティの改善版をリリースすると、その内容を公表するという方針を定めています(2017年に数多くのウェブサイトが攻撃を受けた理由の一部にはこの方針もあり、該当のウェブサイトはセキュリティチームがバグを公表した後も更新を行わなかったため標的に)。

一方で、WordPressのセキュリティチームの所掌外となるのは、WordPress.orgのテーマやプラグインのチェックです。WordPress.orgのテーマ、プラグインは、ボランティアによって監視が行われていますが、セキュリティの脆弱性を確実に発見、排除できる保証はありません

ベストプラクティスに従えばWordPressは安全なのか

これまでご紹介したデータと事実を総合的に見ると、次の傾向がわかります。

100%安全なコンテンツ管理システムは存在しませんが、WordPressコアは高いセキュリティを誇ります。ハッキングの大半は、サイト管理者が基本的なセキュリティ上のベストプラクティスに従わなかったことが原因で発生しています。

以下のベストプラクティスに従えば、高確率でハッキングを回避し、安全にWordPressを利用することができます。

  • WordPressコア、プラグイン、テーマを常に更新する。
  • 信頼性の高い拡張機能のみをインストールする。GPLと非正規プラグイン、テーマには要注意。
  • FTPとSFTPを選べる場合は、必ずSFTPを使用する。
  • WordPressだけでなく、ホスティングやSFTPのアカウントにも強力なパスワードを利用する(可能であれば二要素認証も)。
  • ユーザー名に「admin」を使用しない。
  • サイトにファイアウォールを実装する。Kinstaでは、すべてのサイトを無料のCloudflare統合によって保護。これにはDDoS対策やエンタープライズレベルのファイアウォールも付帯。Kinsta以外を利用している場合は、CloudflareまたはSucuriのWAFを追加することで、サイトを保護できる。
  • コンピュータをウイルスから守る。
  • WordPressのログインURLを変更し、ブルートフォース攻撃を回避する。
  • TLS/SSL証明書(HTTPS)を使用して、WordPressサイトとのすべての通信(管理画面へのログインなど)を暗号化する。KinstaではすべてのプランでSSL証明書を無料提供しています。
  • SSHキーを利用する。これによってサーバーへより安全にログインでき、パスワードが不要に。
  • 安全なホスティングサービスを利用して、PHP 8+のような最新の技術を使用する。

Kinstaのお客様はご安心を。WordPressサイトが万が一ハッキングされても、専任のエンジニアが無料でサイトの復旧を行います。

Brian Jackson

Brianの最大の情熱の一つは10年以上使用してきたWordPressです。複数のプレミアムプラグインさえ開発しています。Brianの趣味はブログや映画やハイキングなどです。TwitterでBrianとつながりましょう。