セキュリティ 2019.10.24 2024.06.28
WordPressの脆弱性とは?リスクや攻撃手法、対策方法をまとめて解説!
WordPressは脆弱性がありセキュリティに弱いと言われていますが、どんな被害があって、脆弱性の被害に合わないようにするにはどうしたら良いのでしょうか。
本記事では、過去にあった被害と攻撃手法、対策方法について初心者の方でもわかるように解説していきます。
弊社では、保守サポートも行なっておりますので参考にしてみてください。
WordPressの保守はこちらから
WordPressの脆弱性とは
脆弱性とは、OSやソフトウェアなどプログラムで作成された対象物の不具合や設計ミスで起こる、セキュリティの欠陥です。
WordPressはOSS(オープンソースソフトウェア)として提供されているもので、どこの誰でもプログラムのソースコードを閲覧することができるため、脆弱性を発見する可能性も高くなります。
悪質なユーザーは、この脆弱性をついて、サイトに対して攻撃や不正アクセスを行うのです。
WordPressの脆弱性があると言われる理由
WordPressでは、この脆弱性が懸念点となり、利用を踏み留まる理由となることも少なくありません。
なぜWordPressの脆弱性が問題視されているのかについて、もう少し理由を深掘りしていきましょう。
①オープンソースなので、誰でもソースコードを確認できる
WordPressは「オープンソース」という、プログラムコードを誰でも閲覧できる仕様になっています。プログラムがわかる人が見れば、欠陥がある部分や弱い部分を見つけられる可能性もあります。
WordPressも歴史が長いため、すぐにわかるような脆弱性は対策されていますが、新機能や大型の仕様変更などがあった際は不具合が見つかることが稀にあります。
そうした不具合などの脆弱性が、開発者より早くハッカーに見つかってしまった場合は、脆弱性に修正が入るより前に攻撃が行われる可能性も0ではありません。
②セキュリティ知識のないユーザーが多い
WordPressを使えば、Webの知識がない初心者でも簡単にサイトを作ることができます。
その分、Webサイトにおける基本的なセキュリティの知識に乏しい人も多いため、悪質なユーザーにとっては絶好の標的となってしまいます。
知識を持ってセキュリティ対策を行えば安全に利用できるのですが、対策せずにWordPressサイト運営を行ってしまう人が多いことで、被害も多くなってしまうのです。
③シェア率世界1位でユーザーが多いから
WordPressは、Webサイトを作成するアプリケーションとしてシェア率が世界1位。利用者がかなり多いということがこれだけでわかります。
実際に、世の中に存在するWebサイトの4割以上がWordPressを使用して作られたものだというデータもあります。(※)
裏を返すと、WordPressの脆弱性をつくことができれば、世界中のサイトの4割を攻撃できるということ。
ユーザーの多さがセキュリティの懸念点になるのは、こういった理由です。
※参照:Usage Statistics and Market Share of WordPress, November 2021
WordPressは危険!?重要なのはセキュリティ対策と正しい運用
ここまでの内容を見るとWordPressは安全性に欠けたサービスのように感じますが、セキュリティ対策と運用方法次第で安全に使用できます。
前述した通り、WordPressはオープンソースであるため誰でもプログラムコードを閲覧することができます。
これは脆弱性に繋がることもありますが、全世界の開発ユーザーが常に目を光らせているわけですから、透明性が高く、おかしなプログラムが紛れ込みづらく、紛れ込んでもすぐに発見できるというメリットがあります。
また、WordPressの開発者は世界中にいるため、脆弱性が見つかったときにすぐに対応できるというのもメリット。他のサービスでは脆弱性の発見自体が遅れてしまうこともめずらしくありません。
このように、WordPressの仕様は、セキュリティの観点でデメリットばかりがあるわけではないのです。
WordPress脆弱性を狙った改ざん被害事例
実際にWordPressの脆弱性を狙い、サイトが被害を受けたこともありました。以下で事例を見てみましょう。
150万サイト以上が被害にあった不正改ざん事例
近年で最も大きなWordPressの脆弱性被害は、2017年にあった150万サイト以上が改ざん被害にあった事案です。
WordPressのバージョン4.7.0およびバージョン4.7.1の「攻撃に対する認証が不要」、「リクエストを送るだけで改ざん可能」といった脆弱性が狙われ、大規模な被害に発展しました。
ログインしたユーザーが権限の範囲を超えた操作を実行できてしまう事例
バージョン4.9.6で起きた特定の権限を持つユーザーがuploadディレクトリ外のファイルを削除できてしまうという脆弱性が発見されました。
影響範囲が非常に大きな事例でしたので、多数のメディアでも取り上げられました。
WordPressの脆弱性を狙った攻撃手法
WordPressの脆弱性を狙った様々な事案がありました。
ここでは、WordPressの脆弱性を狙った攻撃手法をご紹介します。
ブルートフォースアタック
ブルートフォースアタックは「総当たり攻撃」ともいい、その名の通り総当たりして解読するという攻撃です。
例えばですが、ユーザーログイン画面のパスワードなどを総当たりして割り出すのに用いられています。
ブルートフォースアタックが成功してしまうとアカウントが乗っ取られてしまうので、簡単なパスワードや同じパスワード複数のサービスで使い回すといったことは避けましょう。
パスワードの文字数や文字の種類の組み合わせごとの解読されてしまう時間を見てみましょう。
英字の大文字小文字を混ぜたとしても、4文字であれば2分で破られてしまうことがわかると思います。
解読されにくいパスワードとしては、英字の大文字小文字を混ぜ、数字や記号を合わせ8文字以上にしておくことを意識しましょう。
今では、難しい文字列のパスワードを生成してくれるWebサービスや、パスワードマネージャーなど便利なサービスがあります。
これらを利用すれば、難しいパスワードを自分で考えたり、複雑にしすぎて忘れてしまうこともありません。
今後、コンピュータの処理スピードなどのパフォーマンスが 上がってくると時間はさらに短縮される可能性はあります。
可能な限り、パスワードは厳重にして対策しましょう。
SQLインジェクション
SQLインジェクションは、データベースから情報を抜き取られたり、改ざん・消去されてしまう攻撃です。
フォーム等に文字列を入力した場合に単なる文字列ではなく、SQL文として実行してしまうことでデータベースを不正に操作することが出来てしまいます。
エスケープ処理などを行い、対策する必要があります。
特に、ECサイトなど、第3者の個人情報等を管理している場合には、個人情報漏洩に繋がる可能性もあり、巨額の損害賠償が発生するリスクもあります。
コンテンツインジェクション
コンテンツインジェクションは、その名の通り、コンテンツを改ざんされてしまう攻撃です。
ここで指すコンテンツとは
- 記事の内容
- 画像
- リンク
のこと。
記事の内容を書き換えられたり、ページ内のリンクが有害なサイトへのリンクに書き換えられたりすることは、ユーザーへの不利益・サイトや企業の信頼低下、SEOにおける表示順位の降下に繋がるというリスクがあります。
ディレクトリトラバーサル
ディレクトリトラバーサルは、サーバーにある非公開のファイルに勝手にアクセスされてしまう攻撃です。
一般に利用を許可していないファイルを勝手に呼び出して閲覧・利用する不正行為で、個人情報などの重要な情報が漏えいしてしまうリスクがあります。
クロスサイトスクリプティング(XSS)
クロスサイトスクリプティングは、サイトにコードを埋め込むことで他のサイトへの誘導を行ったり、個人情報の不正取得などを狙ったものです。
攻撃者がそのサイトに埋め込んだコードが、Webサイトを訪問したユーザーのブラウザ内で実行されるといったものです。
Webサイトを閲覧するだけで、ユーザーの個人情報などが不正取得されたり、使用しているコンピュータ上のファイルが破壊されたり、バックドアを仕掛けられるといったリスクがあります。
多くの訪問者のいるサイトであれば、それだけ被害規模も大きくなってしまうため注意が必要です。
クロスサイトリクエストフォージェリ(CSRF)
クロスサイトリクエストフォージェリは、ユーザーが意図していないリクエストを送信してしまうことです。
例えば、
攻撃者が、不正なリクエストを送信できる攻撃用Webページを作成し、それを他者のサイト内のリンクに設置します。
設置したリンクをユーザーがクリックすることで、意図していない処理が行われ、情報がもれてしまったり、不正書き込みが行われたりといった攻撃を行うことができます。
クロスサイトリクエストフォージェリで、WEBサイトに登録していた情報が勝手に変更されたり、非公開情報が公開されてしまうといった被害が起きるリスクがあります。また、2012年には攻撃者による不正な投稿により、5名の誤認逮捕が発生しています。
WordPressの脆弱性を放置した際に起こること
サイトの不正改ざん・削除
代表的な被害のひとつが、投稿した記事の内容が改ざん・削除されるケースです。
記事の内容が変更されるだけでなく、危険なサイトにリンクされたり、アクセスするだけでリダイレクトされる等の被害が考えられます。
2017年にWordPressの脆弱性を狙った事案でも不正改ざんが起きています。
WordPressの管理画面にログインできなくなる
ユーザーIDやパスワードに間違いがなく、サーバー等にも問題がないのに、管理画面にログインができないという場合、不正ログイン等のハッキングを受け、ユーザー情報が書き換えられている可能性があります。
二段階認証やIP制限による不正ログイン対策を行いましょう。
組織の機密情報・ユーザーの個人情報の漏洩
何らかの脆弱性を足がかりに、機密情報やユーザーの個人情報が漏洩した場合、深刻な被害が発生する恐れがあります。
数多く会員を抱えていたり、クレジットカードや銀行口座などの金融情報、病歴などの医療情報を抱えていたりする場合は、利用者、企業共に大きな被害につながります。
WordPressは常にバージョンアップ等のメンテナンス・セキュリティ対策を欠かさないように運用することが大切です。
会社・ブランドの信頼・信用の失墜
サイトに被害が及んだ場合、ユーザーからの信頼と信用を失ってしまうことは言うまでもありません。
単純にサイトや記事単位の信頼低下に止まらず、会社・ブランドのイメージが下がることで商品やサービスの売上の減少や顧客離れにも繋がる可能性があります。。
情報の漏洩などセキュリティに関する信頼は一度失うと取り戻すのには長い時間と努力が必要になります。
損害賠償・裁判等のリスク
WordPressサイトに限らず、サイバー攻撃によって、機密情報や個人情報の漏洩、ユーザーへの損害があった場合には、損害賠償を払ったり、裁判になったりと金銭的なリスクが発生している事例は多々あります。
サイトの規模が大きく、被害を受けた人数が多ければ多いほど莫大な金額になることが考えられるため、サイト内で個人情報を扱っていたり、個人情報を収集するフォームがある場合は要注意です。通販・ECサイトや旅行サイトなど、BtoCで決済機能を有するWebサイトの場合は、特に厳重なセキュリティが求められます。
WordPress脆弱性へのセキュリティ対策
WordPressの脆弱性対策ですが、初心者でも簡単に行えるものを紹介しています。
小さいことかもしれませんが、一つ一つ行なっていくことが脆弱性対策にとって重要なことです。
WordPressを最新にする
まず、WordPressのバージョンを最新にしておくことです。
WordPressは機能追加や脆弱性対策などを目的に、月1回程度のペースでアップデートされています。
メジャーアップデートとマイナーアップデートと両方ありますが、マイナーアップデートは積極的に行なった方がよいでしょう。
マイナーアップデート(1.9.◯の◯部分の数字変更です。例:「1.1.8」から「1.1.9」など)は、軽微な修正や脆弱性対策が主な目的です。大きくレイアウトが崩れたりテーマやプラグインが使えなくなるといった可能性は低いので、可能な限り早めにアップデートするようにしましょう。
メジャーアップデート(◯.◯.9の◯の部分です。例:「1.5.9」から「1.6」、「1.9.2」から「2.0」など)は、大きな変更や機能追加を伴う修正ですので、場合によってはテーマやプラグインに影響が出る場合があります。こちらも早めのアップデートが推奨ですが、サイトやプラグインへの影響範囲を確認してから行った方が良いでしょう。
アップデート前には必ずバックアップをとっておくことをおすすめします。
また、可能ならテストサイトなど、検証環境でサイトに影響が出ないかを確認しておいた方がいいでしょう。
アップデート内容はwordpress.orgのブログ等で告知されます。特に脆弱性に関する内容が含まれるアップデートは早急に対応してください。
WordPressのバージョンアップ方法については以下の記事を参考にしてみてください。
テーマ・プラグインを最新に保つ
WordPress本体同様に、テーマやプラグインも最新の状態に保つことが重要です。
ただし、長期に渡ってアップデートされていないテーマやプラグインがあります。アップデートを怠っている場合と同様、長期間、アップデートをしていないテーマやプラグインにも脆弱性がある可能性があります。
テーマやプラグインにもよりますが、目安として1年以上アップデートがされていないテーマやプラグインは使用を停止し、新しく使用開始することもやめておいた方がいいでしょう。
こちらで、プラグインの選び方について解説していますので、新しくプラグインを入れようと考えている方はぜひ参考にしてみてください。
また、使用していないテーマやプラグインもハッキングの対象となる場合がありますので、適宜、管理画面から削除することをおすすめします。
アップデート状況は、最終更新日や開発ログから確認することができるので、参考にしてみてください。
不正ログイン対策
WordPressの不正ログインは以下のようなポイントに注意して不正ログインを防ぎましょう。
- ユーザー名とパスワードを複雑にする
- ログインページのアドレスを変更する
- ログインページにIP制限をかける
- 秘密の質問を設置する
- 画像認証を設置する
- 2段階認証を設置する
ユーザー名とパスワードを複雑にする
WordPressデフォルトの設定では、ユーザー名が投稿者名として投稿ページに公開されています。
ユーザー名はログインに使われるものですので、これが漏れてしまうとブルートフォースアタックでの不正ログインを容易にしてしまうので、表示しないようにしましょう。
では画像を使ってユーザー名とパスワードの変更方法を6つの手順で説明します。
また、WordPressインストール時に変更していない場合、ログインユーザー名は自動で「admin」となります。
このデフォルトユーザー名を使い続けるのは、ユーザー名を公開している場合と同様、不正ログインに対して弱くなることにも繋がるので、変更する必要があります。
ログインページのアドレスを変更する
理由はサイトのアドレス変更していないと、初期の状態である『http://自分のドメイン名/wp-login.php』というURLになり、誰でもログイン画面に到達できる状態になってしまいます。
ログインページのURLを変更することで、不正ログインのハードルを上げることが出来ます。
ハッカーを泥棒に例えると、どんな鍵でも開けられる泥棒でも、玄関がどこにあるかわからなければ家に入ることができないというイメージですね。
ログインURLの変更は、Login rebuilderというプラグインを使うのが簡単です。
他にも、「functions.php」や「.htaccess」といったファイルを編集することでも変更可能ですので、知識がある方はそうした方法で実装しても良いでしょう。
ログインページ・管理画面にIP制限をかける
また、ログインページや管理画面にアクセス出来る人を限定することも有効です。
代表的なのが、ログインページへのアクセスにIP制限をかけるというもの。
IPアドレスを調べることで、インターネットユーザーがどこからアクセスしてきたか判断できます。
自宅や会社以外のIPアドレスを制限することで、悪意のある攻撃者によるログインページへのアクセスを防ぐことができます。
IP制限は、『SiteGuard WP Plugin』などのプラグインで実装できる他、「.htaccess」ファイルにコードを追加することでも実装できます。
『SiteGuard WP Plugin』は、上記のログインURLの変更や何度もログインに失敗した場合にログイン画面をロックする設定もできる高機能なセキュリティプラグインです。
ただし、以下のような場合はIP制限をかけることは難しいので注意してください。
- 固定IPアドレスがない場合
- 何らかの理由でIPアドレスを限定することができない
IP制限をかけることが難しい場合は、他の方法で不正ログイン対策を行いましょう。
秘密の質問を設置する
WordPressのログイン画面に秘密の質問を設定することで、よりセキュリティを強化することができます。
以下のセキュリティ対策用のプラグインを導入します。
WP Security Questionのダウンロードはこちら
WP Security QuestionはWordPressのプラグイン画面からもダウンロード可能です。
以降は画像を使って各種設定を5つの手順で説明します。
秘密の質問やその回答は、第三者が調べればわかるもの、予想しやすいものは避けましょう。
また、PC上や実際のメモ等に残していると、盗み見られるリスクもあるので、何も見なくても回答できるような内容にしておくと良いでしょう。
画像認証を設置する
画像認証は、最近では様々なサービスやサイトで導入されているので、見たことがある人も多いでしょう。
WordPressのログイン画面に画像認証を設置することで、画像を認識することが難しい機械的な攻撃を防ぎやすくなります。
文字列を使った認証を行うためのプラグインを導入します。
『SiteGuard WP Plugin』のダウンロードはこちら
『SiteGuard WP Plugin』はWordPressのプラグイン画面からもダウンロード可能です。
IP制限の項目でも紹介していますが、『SiteGuard WP Plugin』は、他にもログインアドレス変更やIP制限、ログインロックなども設定することができます。
以降は画像認証を設定する3つの手順を画像で説明します。
2段階認証を設置する
WordPressへのログイン時に2段階認証を設定することで、不正ログインを防ぐことが可能です。
一定時間のみ有効なワンタイムパスワードを発行することで、「ユーザー名」と「通常のパスワード」「ワンタイムパスワード」の3点で認証を行います。
まずは、ワンタイムパスワードを発行するために、Googleが提供しているGoogle AuthenticatorをiPhoneかAndoidでダウンロードします。
Apple StoreでGoogle Authenticatorをダウンロードする
Play StoreでGoogle Authenticatorをダウンロードする
次にWordPressにGoogle Authenticator用のプラグインを導入します。
Google Authenticatorのダウンロードはこちら
以降は、同名プラグインを使ってWordPressの管理画面上で2段階認証を設定するまでの手順を、画像を使って説明します。
SSL対応
「このサイトへの接続は保護されていません。」といったような表示が出てきたことが誰しも一度はあるのではないでしょうか。
URLがhttpという表記になっており、このサイトは安全ではありませんという警告を表しています。
SSL化の方法は、契約しているサーバーごとにSSL化に関する設定方法が異なりますので、各サーバー会社のよくある質問などで確認してください。
SSL化した後にWordPressの一般設定から変更を行う必要があります。
SSL化が完了したら、実際にサイトを開いてみましょう。
保護されていない通信が、この接続は保護されていますに変わっているのがわかると思います。
httpとhttpsの違い
httpとhttpsの違いは、通信内容が保護されているかどうかという点です。
保護されていない通信だと、第三者が通信内容を傍受したり、通信内容に変更を加えることが出来てしまいます。
Googleも検索順位のランキングを決める際の要素とするなど、SSL化は世界的に標準となっています。
安全なWebサイトであることを示し、ユーザーに信頼してもらうためにもSSL化は必須です。
WordPressのSSL化については以下の記事も参考にしてみてください。
セキュリティ機能があるプラグインを導入
上記で既にいくつか紹介していますが、セキュリティ機能のあるプラグインの導入もオススメです。
代表的なセキュリティプラグインは『Wordfence Security』や『SiteGuard WP Plugin』などが挙げられます。
各プラグインごとに設定出来る項目が異なる他、日本語対応をしていないものもありますので、以下の記事を参考にそれぞれのプラグインの特徴を理解した上で導入してください。
セキュリティプラグインは数を入れればいいというものではないので、自分のサイトに必要なものや使いやすいものを選んで導入しましょう。
定期的にバックアップ
定期的なバックアップを行うことで、万が一脆弱性を狙われたとしても復元できるようにしましょう。
また、テーマやプラグインのアップデート時やWordPressのメジャーアップデート時にもバックアップしておくことで、レイアウト崩れやバグなど発見した時に復元することができます。
WAFの導入
WAFとは「Web Application Firewall」の略。ユーザーとWordPressで交わされる通信を一つひとつチェックし、攻撃性があるものは遮断してくれるというセキュリティです。
WordPressのようなWebアプリケーションの保護に特化しているため、従来のセキュリティ製品では守れない攻撃も探知・遮断してくれます。
もちろんWAFだけに頼らずさまざまなセキュリティ対策を行うべきですが、WAFはその中でも有効なツールと言えるでしょう。
WordPress脆弱性情報チェックに役立つサイトのご紹介
上記のような影響範囲の大きな脆弱性が発見されることは稀です。
ただし、WordPressの脆弱性は日々発見されるとともに、アップデートによって改善されています。
こうした脆弱性に関する情報を、なるべく早くキャッチすることが大切なサイトを守ることに繋がります。
以下から、脆弱性が確認された場合に情報を提供しているサイトをご紹介します。
JVN iPedia 脆弱性対策情報データベース
『JVN iPedia 脆弱性対策情報データベース』は、国内外問わず脆弱性の情報が日々公開されているサイトです。
トップページの検索からWordPressと検索することで、WordPressに関する脆弱性情報を閲覧することができます。
より詳細に情報を得たい場合は、詳細検索からベンダ名や製品名、深刻度など指定して検索することも可能ですので、ぜひ活用してみてください。
もちろん、WordPressだけでなく他の脆弱性情報も取得することができます。
IPA 独立行政法人情報処理推進機構
『IPA 独立行政法人情報処理推進機構』では、セキュリティについての情報発信がされています。
2017年のWordPressバージョン4.7.0およびバージョン4.7.1に関する脆弱性の情報も、本サイトにて注意喚起が行われており、影響範囲や対策、参考情報など詳しく掲載されています。
JPCERT コーディネーションセンター
『JPCERT コーディネーションセンター』では、注意喚起や脆弱性情報、Weekly Reportなどセキュリティ関連の情報が配信されています。
『JPCERT コーディネーションセンター』に報告されたインシデント件数も記載してあるので、参考にしてみてください。
セキュリティが不安な場合はWordPressのプロに任せる
WordPressの脆弱性で起きた事案を含め、セキュリティ対策を紹介してきました。
セキュリティ対策は厳重にしようと思えばどこまでも厳重に出来ますが、それに比例して対策にかかる時間や費用の負担も大きくなります。
重要なのは、リスクと負担のバランスをとること。
セキュリティ対策の基礎知識を学び、自分のWordPressサイトにどこまでのセキュリティ対策が必要なのかを見極めて運用していきましょう。
もし、セキュリティ面で不安を感じていたり、日々のメンテナンスにお悩みなら、WordPressの専門家にご相談ください。
WordPress保守・運用のパートナーなら「wp.support」にお任せ!
WordPressサイトを運用していて、以下のようなお悩みはありませんか?
- 管理画面を使いやすくしたいけれど、カスタマイズする時間や技術がない…
- サイトのUI/UXを改善したいけれど、自社内では難しい…
- WordPressサイトを高速化したいけれど、ノウハウがない…
- セキュリティ対策をしたいけれど、知識のある人材がいない…
- 日々の業務に追われて、バージョンアップなどの保守業務が放置気味…
- ちょっとしたトラブルを気軽に相談できる相手が欲しい…
「wp.support」は、WordPressのプロフェッショナル集団によるWordPress保守サービスです。
「セキュリティ対策」「バージョンアップ対応」「定期バックアップ」はもちろん、「電話サポートが無制限」なのでカスタマイズの方法やトラブル発生時にも気軽にプロに相談できます。
既に導入済みのお客様からも、
「些細なことでも気軽に相談できるパートナー的な存在」
「困ったら相談していいんだ、と気持ちが楽になった」
と大変ご好評をいただいています。
WordPress保守・運用のパートナーをお探しなら、ぜひお気軽にお問合せください。
バージョンアップが面倒だと思ったら WordPress保守・セキュリティ対策は『wp.support』にお任せ!
WordPressのバージョンアップやセキュリティ対策にお悩みではないですか?
面倒な保守・運用作業は全て任せて、コア事業に集中してください。
大手・上場企業100社以上のWebサイトの安全を守る、WordPressのプロフェッショナル集団が、あなたのWordPressサイトを守ります!
【対応範囲】
・WordPress、プラグインのバージョンアップ ・セキュリティ対策 ・継続的なバックアップ ・緊急時の復旧対応 ・技術サポート・電話/メールサポート無制限 etc...
WordPressに関することなら何でもご相談ください!