マルウェア除去だけでは終わらない——WordPressの脆弱性を根本から修正する方法を解説
「マルウェアを除去してサイトを復旧させたのに、また感染した」「クリーンアップ専門の業者に依頼したのに、数ヶ月後に同じ症状が再発した」——このような再感染のサイクルに悩まされている方の多くが陥っているのが、「除去はしたが、侵入を許した脆弱性は放置されたまま」という状態です。
マルウェアの除去はあくまでも「結果として発生した汚染を取り除く作業」です。それと同時に、攻撃者が侵入に利用した脆弱性そのものを塞がなければ、同じ入口から何度でも侵入され続けます。この作業が脆弱性修正であり、復旧後の安全なサイト運用を維持するために欠かせないステップです。
この記事では、WordPressセキュリティ視点から、再感染を防ぐために行うべき脆弱性修正の全体像を解説します。
アップデート適用と不要プラグイン削除——既知の穴を塞ぐ最初の一手
アップデート適用とは、WordPressのコア本体・インストール済みのプラグイン・使用中のテーマを、それぞれの最新バージョンに更新することです。
なぜアップデートがセキュリティ対策として重要なのかを理解するためには、脆弱性の公開プロセスを知る必要があります。開発者がプラグインやテーマのセキュリティ上の欠陥を修正した場合、その修正内容は更新履歴として公開されます。この公開情報は、正規ユーザーへの通知であると同時に、攻撃者にとっては「旧バージョンにはこういう穴がある」という攻撃マニュアルにもなります。
つまり、アップデートを適用していないサイトは、攻撃者に対して「ここに既知の穴があります」と広告しているに等しい状態です。実際に、WordPressへの攻撃の大部分は、すでにパッチ(修正プログラム)が公開されているにもかかわらず更新されていない脆弱なバージョンを標的にした自動スキャン攻撃です。
ただし、アップデートの適用は必ずしも「最新版にすれば安全」という単純な話ではありません。プラグイン同士の互換性の問題、カスタマイズとの衝突、テーマと本体の非互換など、更新によってサイトが壊れるリスクも伴います。このため、更新前のバックアップ取得と、更新後の動作確認を含めた慎重な手順が必要です。
不要プラグイン削除とは、現在使用していないプラグインをWordPressから完全に取り除くことです。「無効化(非アクティブ化)」では不十分で、削除まで行う必要があります。
無効化されているプラグインであっても、そのファイルはサーバー上に残り続けます。脆弱性を持つプラグインのファイルが存在している限り、攻撃者はそのファイルに直接アクセスして悪用できるケースがあるためです。また、長期間更新されていない放置プラグインは開発者のサポートが切れており、脆弱性が発見されても修正されないまま残り続けます。使っていないプラグインは「念のため残しておく」ではなく「即座に削除する」が正しい判断です。
▶ 専門家に依頼すると:全プラグイン・テーマ・コアの脆弱性バージョン調査、互換性を確認した安全なアップデート適用、不要プラグイン・テーマの完全削除、更新後の全機能動作確認を行います。
テーマ更新とPHP更新——土台レベルの脆弱性を修正する

テーマ更新とは、使用中のWordPressテーマを最新バージョンに更新し、テーマに起因するセキュリティ上の欠陥を解消することです。
テーマはプラグインと同様に、開発者が脆弱性修正を含む更新をリリースします。特に有名な無料テーマや商用テーマは攻撃者にとっても研究対象であり、古いバージョンの脆弱性を突いた攻撃が広く行われています。
テーマ更新で注意が必要なのは、子テーマ(親テーマをベースにカスタマイズを加えたもの)の扱いです。子テーマを使わずに親テーマのファイルを直接カスタマイズしている場合、テーマを更新するとカスタマイズ内容が上書きされてすべて消えてしまいます。これが更新を敬遠する原因になり、結果として古いバージョンのまま放置されるケースが非常に多いです。
また、公式ディレクトリ外から入手したテーマ(いわゆる「nulled theme」と呼ばれる有料テーマを無許可で配布したもの)を使用している場合、そのテーマ自体にバックドアが仕込まれているケースが報告されています。無料で入手できる有料テーマには、それ相応のリスクが存在します。
PHP更新は、WordPressが動作するプログラミング言語「PHP」そのもののバージョンを最新の安定版に更新することです。PHPはWordPressの実行基盤であり、PHPのバージョンが古い場合、PHP自体に存在するセキュリティ上の欠陥が攻撃に悪用されるリスクがあります。
PHPには各バージョンごとにセキュリティサポートの期限があり、サポートが終了したバージョンは脆弱性が発見されても修正パッチが提供されません。サポート終了バージョンのPHPを使い続けることは、穴の開いたバケツで水を運ぶようなものです。どれだけWordPress側の対策を施しても、実行基盤のPHPに未修正の脆弱性があれば、そこを起点にした攻撃が成立してしまいます。
ただし、PHPのバージョン更新はWordPress本体・プラグイン・テーマとの互換性に大きく影響するため、事前の互換性確認と段階的な検証が必須です。ホスティング環境によっては変更手順が異なるため、慎重な対応が求められます。
▶ 専門家に依頼すると:現行PHPバージョンのサポート状況確認、互換性を考慮した安全なPHPバージョンアップ計画の策定と実施、子テーマを使用したカスタマイズの保護と安全なテーマ更新、nulledテーマの使用有無の確認と正規品への差し替えを行います。
セキュリティ強化——脆弱性を修正した後の”守りの層”を整える
アップデートの適用と不要要素の削除が完了したら、次に行うべきがセキュリティ強化です。セキュリティ強化とは、既知の脆弱性を塞ぐだけでなく、未知の攻撃や設定上の弱点に対して複数の防御層を重ねる一連の施策のことです。
セキュリティ強化の施策は多岐にわたりますが、WordPressサイトにおいて特に重要度が高いものを以下に挙げます。
まず、管理画面へのアクセス制限です。WordPressの管理画面URL(/wp-admin/)は世界中に知られているため、デフォルトのURLを変更するか、特定のIPアドレスからのみアクセスを許可する設定を行います。これにより総当たり攻撃の大部分を無力化できます。
次に、ログイン試行回数の制限です。一定回数ログインに失敗したIPアドレスを一時的にブロックする設定で、自動化された総当たり攻撃に対して非常に有効です。
二段階認証の導入も欠かせません。パスワードに加えてスマートフォンへの認証コード送信を必要とすることで、パスワードが漏えいしても不正ログインを防ぐことができます。
XMLRPCの無効化も重要です。XMLRPCとは、外部アプリケーションからWordPressをリモート操作するための機能ですが、現在多くのサイトでは使用されておらず、総当たり攻撃の踏み台として悪用されやすい機能です。使用していない場合は無効化することでリスクを低減できます。
WAF(Webアプリケーションファイアウォール)の導入も有効です。WAFとは、不正なリクエストをサーバーに到達する前に自動的に検出・遮断するセキュリティ層のことで、SQLインジェクション・クロスサイトスクリプティングなどの代表的な攻撃手法をブロックします。
さらに、ファイル整合性監視の導入も推奨されます。これはサーバー上のファイルの変更をリアルタイムで検知し、不審な変更が発生した際に管理者へ通知する仕組みです。仮に将来的に侵入が発生した場合でも、早期発見と迅速な対応が可能になります。
これらのセキュリティ強化施策は、単独では限界がありますが、複数を組み合わせることで「多層防御」を構成し、攻撃が成功する確率を大幅に下げることができます。どの施策をどの順序で導入するかは、サイトの構成や用途によって最適解が異なります。
▶ 専門家に依頼すると:サイトの構成と用途に合わせたセキュリティ強化施策の優先順位付けと実施、WAF・整合性監視ツールの選定と導入設定、定期的なセキュリティ診断の実施体制の構築提案を行います。
この記事のまとめ
WordPressの再感染を防ぐための脆弱性修正は、以下の3つのステップで構成されます。
- アップデート適用・不要プラグイン削除:既知の脆弱性を速やかに塞ぎ、攻撃対象となる要素を最小化する
- テーマ更新・PHP更新:WordPressの表示層と実行基盤レベルの脆弱性を根本から修正する
- セキュリティ強化:多層防御の仕組みを整え、未知の攻撃や設定上の弱点を補完する
これらの施策に共通して言えることは、「一度やれば終わり」ではないという点です。新しい脆弱性は毎日のように発見・公開され、攻撃手法も進化し続けます。脆弱性修正は復旧後の一時的な作業ではなく、継続的なサイト管理の一部として位置づける必要があります。
しかし現実問題として、日々の業務を抱えながらWordPressのアップデート情報を追い続け、互換性を確認しながら安全に更新を適用し、セキュリティ設定を最適な状態に保ち続けることは、専門知識がなければ非常に困難です。
一度の感染で多くの時間・費用・信頼を失った経験があるならば、復旧後のセキュリティ維持こそ専門家に継続的に任せることが、長期的に見て最もコストパフォーマンスの高い選択です。脆弱性修正の実施と継続的なセキュリティ管理について、WordPressセキュリティの専門家にご相談ください。
脆弱性修正 語彙辞典

本辞典は、マルウェアの除去を終えた方が、再感染を永久に防ぐために「攻撃の侵入口となったシステムの弱点や欠陥を完全に塞ぐ」(脆弱性修正)ための必須キーワード集です。
■ 1. バージョンアップ(Version Update)
WordPress本体、プラグイン、テーマを最新の状態に更新すること。脆弱性修正の基本であり、攻撃者に狙われる「既知の弱点」の大半をこれだけで塞ぐことができます。
■ 2. サポート終了(EOL / End of Life)
開発元によるアップデートやセキュリティ修正パッチの提供が完全に終了した状態。この状態のプラグインやテーマを使い続けることは、侵入口を放置することと同義です。
■ 3. CVE(Common Vulnerabilities and Expositions)
世界中で発見されたプログラムの脆弱性に割り当てられる「共通脆弱性識別子(識別番号)」。自分が使っているプラグインにどのような弱点があったのかを調べる基準になります。
■ 4. セキュリティパッチ(Security Patch)
脆弱性(プログラムのバグや欠陥)を修正するために、開発元から緊急で配布される部分的な修正プログラム。アップデートが全体の更新なら、パッチはピンポイントの治療薬です。
■ 5. ゼロデイ脆弱性(Zero-day Vulnerability)
修正プログラム(パッチ)が提供される前に、攻撃者に発見されて悪用されてしまう深刻な脆弱性のこと。対策が追いつかないため、発見時はプラグインの停止などの即時対応が求められます。
■ 6. 推奨PHPバージョン(Recommended PHP Version)
WordPressが安全かつ安定して動作するために指定されている、サーバー側のPHP(プログラム言語)のバージョン。古すぎるPHP(例: 5.xや7.xの一部)はセキュリティサポートが切れており危険です。
■ 7. WAF(Web Application Firewall / ワフ)
Webアプリケーションの通信を監視し、脆弱性を突いた攻撃(SQLインジェクションやXSSなど)を水際で検知・遮断するシステム。レンタルサーバーの基本機能として標準提供されていることが多いです。
■ 8. サプライチェーン攻撃(Supply Chain Attack)
信頼していた正規のプラグイン開発者がハッキングされたり、開発権が他者に渡ったりすることで、公式の「アップデート」を通じてマルウェアが配信されてしまう特殊な手口。
■ 9. 不要プラグインの完全削除(Purging Unused Extensions)
現在「無効化」しているだけの使っていないプラグインやテーマを、サーバー上からフォルダごと完全に消去すること。無効化状態であっても、ファイルが存在するだけで脆弱性を突かれるリスクがあります。