WordPressは現在、ウェブサイトを構築するもっとも人気な手段です。一方、その人気故に世界各地からの悪意ある攻撃のターゲットになりやすい、というマイナスな面もあります。それでは、WordPressはそのような攻撃に対処するだけの安全性を備えているのでしょうか?
残念なことに、毎年何十万ものWordPressサイトやECサイトがハッキングされています。(ちなみにECサイトにおける詐欺対策に関する記事も公開しています)
恐ろしい事実です。ただし、よいお知らせもあります。
ハッカーによる侵害は、最新のWordPressコアの脆弱性が原因ではありません。ウェブサイトがハッキングされる理由の大半は、更新の見逃しや安全でないパスワードの使用など、本来予防できるはずのもの。
そのため、「WordPressは安全なのか」という質問に単刀直入に答えることは難しく、以下のような様々な角度から検証しながらご説明します。
- WordPressサイトのハッキング経路に関するデータをご紹介し、セキュリティ上の脆弱性がどこにあるのかを把握する
- WordPressコアの開発者がどのようにセキュリティの問題に取り組んでいるのかについてご説明し、責任範囲と処理方法を理解する
- ベストプラクティスに従えばWordPressが安全であるか検討し、自分のウェブサイトの安全性を判断できるようにする
データで見るWordPressサイトのハッキング手段
毎年多くのWordPressウェブサイトがハッキングされていることは前述のとおりですが、一体どのような経路でハッキングされているのでしょうか。世界共通のWordPressの問題なのでしょうか。それとも、サイト管理者の行動が要因なのでしょうか。
多くのWordPressサイトがハッキングされている理由をデータに基づいてご紹介します。
古いコアファイル
まず、Sucuri公開の2017年にハッキング被害を受けたウェブサイトに関するレポートから、当然と言えば当然の相関関係をご紹介します。Sucuriが調査した、ハッキングに遭ったWordPressサイトのうち39.3%が、ハッキング当時に古いバージョンのWordPressコアを使用していました。

このようにハッキングと古いバージョンの使用は密接に関係していることが分かります。ちなみにですが、2016年の割合は61%でしたので、それと比較すると大幅に改善しています。👏
WPScanの脆弱性データベースによると、記録された既知の脆弱性の約74%がWordPressコアファイルにあります。しかし、最も脆弱性の高いバージョンは、WordPress 3.xxです。ここがミソです。

残念ながら、最新版を使用しているのは、WordPressサイト全体のうちたったの62%です。多くのウェブサイトが攻撃に対して不必要なリスクを抱えていることになります。

2017年2月に発覚したWordPressの重大なREST APIにおける脆弱性による、数十万ものウェブサイトの改ざんも、この相関関係を示すよい例です。
WordPress 4.7.1には複数の脆弱性が見られ、結果的にウェブサイトの改ざんに悪用されてしまいました。しかし、実は攻撃の数週間前には、この脆弱性をすべて修正したWordPress 4.7.2がリリースされていました。
自動セキュリティパッチを有効化していた、またはWordPress 4.7.2にすばやく更新したウェブサイトは攻撃を受けませんでした。一方、更新をしなかったサイトは悲惨な目に遭ってしまいました。
要点:WordPressのセキュリティチームは、WordPressコアファイルに介在する問題をすばやく処理しています。すべてのセキュリティアップデートを迅速に適用していれば、本体の脆弱性による攻撃を受ける可能性は極めて低いでしょう。しかし、それを怠ると攻撃を受けた時にリスクに晒されます。
2. 古いプラグインやテーマ
WordPressが多くの人に愛されている理由の1つは、プラグインとテーマの種類が非常に多いことでしょう。本稿執筆の時点では、WordPressリポジトリには56,000以上のプラグインとテーマが存在し、他にも有料のものがウェブ上に無数に存在します。
テーマやプラグインはサイトの機能を拡張するのに便利ですが、悪意のある攻撃の潜在的なリスクにもなります。大半のWordPressの開発者は、コードの標準に従い、修正が必要とされる点が発覚した場合には、適宜パッチをリリースしていますが、それでも次のようなリスクが考えられます。
- プラグインやテーマには脆弱性があり、WordPressコアファイルほどの注目を集めないため、脆弱性が検出されづらい
- 開発者が開発を終了しているにもかかわらず、一般に使用され続けていることがある
- 開発者がすぐに問題の修正を行っているにもかかわらず、ユーザー側が更新しないことがある
これらの課題はどれほど深刻なのでしょうか。
Wordfence公開のハッキングされたウェブサイトに関する調査によると、“ハッキング経路が発覚している”ウェブサイトの運営者のうち60%以上が、攻撃の要因がプラグインまたはテーマの脆弱性だったと述べています。

同様に、Sucuriの2016年のレポートによると、同社が調査したハッキングされたウェブサイトのうち、15%以上で3つの特定のプラグインが原因となっています。

ただし、ここからが重要です。
上記のプラグインの脆弱性はすでに対処されていたにもかかわらず、サイト所有者がプラグインの更新を行っていなかったのです。
要点:WordPressのテーマとプラグインはリスクになる可能性があり、サイトを悪意のある攻撃に晒すことがあります。一方、ベストプラクティスに従うことでリスクを大幅に軽減できます。テーマとプラグインを常に最新のものに更新し、信頼できるソース以外からはインストールしないようにしましょう。
また、GPL Clubについても触れておきたいと思います。GPL Clubでは有料のWordPressプラグインやテーマをほんの数ドルで入手することができます。WordPressもGPLの提唱する「フリー(無料+自由)」ライセンスの対象であり、それ自体は素晴らしいことですが、購入する際は注意が必要です。このプラグインは、言うなれば、一種の「非正規プラグイン」です。
GPL Clubでプラグインを購入すると、その更新を第三者に一任することになります。また、サポートが完全でないことも日常茶飯事です。本当の開発者から直接プラグインのアップデートを取得するのが最も安全な方法です。また、開発者の努力に報い支援してあげたいと思うのは自然なことでしょう。
3. WordPress、FTP、レンタルサーバーのログイン情報を対象にした攻撃
こちらはWordPress側の欠陥ではありません。しかし、ハッキングされるケースのうち相当数が、WordPressやレンタルサーバー、FTPアカウントのログイン情報を悪意ある人物に盗まれることによって起こります。
先ほどのWordfenceによる調査では、ブルートフォース攻撃が、サイトにおけるハッキングの原因の約16%を占めています。パスワードの盗難、Workstation、フィッシング、FTPアカウントが原因のケースも、割合は少ないものの無視できません。
WordPressウェブサイトがいくら安全でも、悪意のある人物が「侵入する鍵」を入手してしまうと為す術がありません。
WordPressでは安全なパスワードを自動生成することでこのリスクを軽減しています。しかし、パスワードを安全に保管し、レンタルサーバーやFTPにも強力なパスワードを使用するかどうかはユーザー次第です。
要点:アカウント情報を守ることにより、悪意のある攻撃を予防できます。ブルートフォース攻撃を防止するためには、すべてのWordPressアカウントで強力なパスワードを使用し、不正ログインを制限しましょう。(Kinstaのホスティングプランではこれがデフォルトで実装されています👍)。
レンタルサーバーのアカウントでは、可能であれば必ず二要素認証を使用し、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%です。

PHP 5.6のセキュリティサポートは、2018年末に正式に終了しています。また、それ以前のPHP 5のバージョンに至っては、何年もの間セキュリティサポートが提供されていません。
つまり、5.6未満のPHPバージョンを使用したホスティング環境を使用すると、問題の修正がされていないPHPの脆弱性というリスクに晒されてしまいます。
その事実にもかかわらず、WordPressサイトの28%が未だに5.6未満のPHPバージョンを使用しています。近年、記録的な数のPHPの脆弱性が発覚していることを考えると、これは大きな課題です。
安全なWordPressサーバーを使用すると、最新のテクノロジーを利用できるだけでなく、次のような機能によりセキュリティ上のリスクを大幅に軽減できます。
- CloudflareやSucuriなどのWebアプリケーションファイアウォール
- セキュリティリリースの自動更新
- 二要素認証
- 自動バックアップ
要点:安全なホスティング環境、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 Clubと非正規プラグイン、テーマには要注意。
- FTPとSFTPのどちらかを選べる場合は、必ずSFTPを使用する。
- WordPressアカウント、レンタルサーバーのアカウント、SFTPアカウントのすべてに強力なパスワードを使用する。(可能な場合は二要素認証も使用)
- ユーザー名に「admin」を使用しない。
- サイトにファイウォールを設置する。Kinstaの全てのサイトはGoogle Cloud Platformのファイアウォールで保護されています。CloudflareやSucuriなどのWAFも合わせて利用するとサイトの安全性をより高めることができます。
- コンピュータからウイルスを排除する。
- WordPressのログインURLを変更し、ブルートフォース攻撃を防ぐ。
- WordPressウェブサイトとの通信(管理画面へのログインなど)がすべて暗号化されるように、TLS証明書(HTTPS)を使用。Kinstaでは無料のHTTPS証明書を提供しています。
- SSHキーを利用。これにより、サーバーへより安全にログインでき、パスワードが不要になります。
- • 安全な環境のレンタルサーバーを選択し、PHP 7以上など、最新テクノロジーを使用。
Kinstaのお客様はご安心ください。ウェブサイトが万が一当社サーバーでのホスト中にハッキングされても、無料でエンジニアがサイトの復旧をいたします。
コメントを残す