WordPressプラグインの脆弱性を確認・解消する|既知の脆弱性を悪用した侵害を防ぐ

当ページは検証・整備中のドラフトです。
内容は実環境での検証や追加調査により変更される予定です。
参照:ページ公開・更新ポリシー

WordPressプラグインの脆弱性

プラグインはWordPress本体とは別の開発者や企業によって提供されており、更新時期やサポート状況もそれぞれ異なる。WordPress本体を最新にしていても、脆弱性のあるプラグインが残っていれば、そこが攻撃経路となり得る。

そのため、本体とは別にプラグインの状態を把握し、脆弱性が見つかった場合には更新や使用停止などの対応が必要となる。

プラグインを更新する目的

プラグインの更新は、脆弱性の修正だけを目的として提供されるものではない。

主な更新内容には次のようなものがある。

  • 脆弱性の修正
  • 不具合の修正
  • 新機能の追加
  • 既存機能の変更や改善
  • WordPress本体やPHPなどへの対応

ここでは、これらのうち脆弱性対策を扱い、新機能の使い方や機能追加を目的としたアップデートについては対象としない。

更新通知の意味するもの

WordPressの管理画面には、インストールしているプラグインに新しいバージョンが提供されると更新通知が表示される。

ただし、この通知が示しているのは基本的に現在より新しいバージョンが提供されていることであり、プラグインの安全性そのものを判定した結果ではない。

更新通知が表示されていなくても、状態はいくつか考えられる。

  • 最新版を使用しており、既知の脆弱性も確認されていない
  • 最新版に未修正の脆弱性が存在する
  • 長期間更新されていない
  • 開発やサポートが停止している
  • 脆弱性が見つかっているものの、修正版がまだ提供されていない

したがって、「更新通知がない=対処する必要がない」とは限らない。更新の有無だけでなく、脆弱性や開発状況も合わせて状態を判断する。

プラグインの状態を判断する情報

プラグインを継続して利用できるか判断するには、複数の情報を組み合わせる。

確認項目確認する内容
現在のバージョンサイトで使用しているバージョン
最新バージョン更新可能なバージョンがあるか
既知の脆弱性現在のバージョンが既知の脆弱性の影響を受けるか
修正版脆弱性を解消したバージョンが提供されているか
WordPressとの互換性使用しているWordPressへの対応状況
最終更新継続的なメンテナンス状況を判断する材料
有効・停止サイトで現在使用しているか

特に区別しておきたいのが、「最新版であること」と「既知の脆弱性がないこと」である。

最新版へ更新済みでも、そのバージョンに未修正の脆弱性が存在することはある。反対に、長期間更新されていないという事実だけで、直ちに脆弱だとも判断できない。

一つの項目だけで安全性を決めず、複数の情報から状態を見る必要がある。

WordPress標準機能での確認

まずはWordPressの管理画面から、インストールしているプラグインの状態を確認する。

「プラグイン」画面では、インストール済みのプラグイン、現在のバージョン、更新の有無、有効・停止の状態、自動更新の設定などを確認できる。

「サイトヘルス」の情報からも、有効なプラグインと停止中のプラグイン、そのバージョンなどをまとめて確認だが、大まかな情報でしかない。
これらは現在のWordPress環境を把握するには便利だが、既知の脆弱性データベースと照合して安全性を総合判定する機能ではない。

WordPress標準機能はインストール状況や更新状態を確認する場所として利用し、脆弱性については別の情報源を組み合わせる。

脆弱性管理サービスでの確認

WordPress本体やプラグイン、テーマのバージョンを既知の脆弱性情報と照合するサービスも存在する。

こうした仕組みを利用すれば、管理画面に更新通知が出ているかどうかだけでなく、現在使用しているバージョンが既知の脆弱性の影響を受けるか確認しやすくなる。

選択肢には、脆弱性管理を中心とするPatchstackや、WPScanの脆弱性情報を利用するJetpack Protectなどがある。また、Wordfenceのような総合セキュリティ製品にも、既知の脆弱性を検出する機能が含まれている。

Patchstack

Patchstackは、WordPressを中心とした脆弱性管理・防御サービスである。

サイトに導入されているWordPress本体、プラグイン、テーマなどを把握し、既知の脆弱性情報と照合できる。現在のバージョンが脆弱性の影響を受けるか、修正版が存在するかなど、対応判断につながる情報をまとめて確認する用途にも使える。

WordPress標準の更新通知だけでは分からない情報を補う手段の一つとなる。

Jetpack Protect / WPScan

WPScanは、WordPress本体、プラグイン、テーマに関する脆弱性情報を扱っている。

Jetpack Protectでは、こうした脆弱性情報を利用してWordPressサイトをスキャンし、使用している構成要素に既知の脆弱性がないか確認できる。

WordPressの管理画面から脆弱性を確認したい場合の選択肢となる。

Wordfenceなどの総合セキュリティ製品

Wordfenceは、ファイアウォールやマルウェアスキャンなどを含むWordPress向けの総合セキュリティ製品である。

その機能の一部として、プラグインなどに存在する既知の脆弱性を把握する用途にも利用できる。

脆弱性管理を主目的とするサービスとは機能構成が異なるため、単純な同種サービスとして考えるのではなく、総合セキュリティ機能の中に脆弱性確認も含まれる選択肢として位置付ける。

脆弱性が見つかった場合の対応

プラグインに既知の脆弱性が見つかったら、まず現在使用しているバージョンが影響を受けるか確認する。

その上で、脆弱性を修正したバージョンが提供されているかによって対応を分ける。

既知の脆弱性を確認
        ↓
現在のバージョンが影響を受けるか
        ↓
       はい
        ↓
修正版が提供されているか
     ↓             ↓
    あり           なし
     ↓             ↓
    更新       使用継続を再検討
                  ↓
             停止・代替など

修正版がある場合

脆弱性を修正したバージョンが提供されているなら、更新による解消を優先する。

サイトの表示や主要機能に深く関係するプラグインでは、更新による影響も無視できない。変更内容を確認し、必要に応じてバックアップの状態も確かめてから適用する。

更新後は、そのプラグインが担っている機能を実際に操作し、異常がないかまで確認しておく。

修正版がない場合

脆弱性が公表されても、修正版がすぐに提供されるとは限らない。
修正版がない場合は更新を待つだけでなく、そのプラグインを使い続ける必要があるか検討する。

利用を停止できるなら一時的に無効化し、必要な機能であれば代替プラグインへの移行も考える。脆弱性の内容や悪用条件によってリスクは異なるため、その影響を確認した上で対応を選びたい。

停止状態のプラグインでもそこに存在するというだけで脆弱性を含んだコードが存在することになる。近々使用を再開する予定がなければ削除しておく。

参照:WordPressの不要テーマ・プラグインを削除する

プラグインの自動更新

WordPressでは、プラグインごとに自動更新を設定できる。

自動更新を有効にすると、新しいバージョンが提供された際の適用を自動化でき、修正版の適用忘れを減らしやすい。

一方で、更新によってサイトの表示や機能に影響が出ることもある。そのため、すべてのプラグインを同じ設定にする必要はない。

サイトへの影響が小さいものは自動更新、ECや問い合わせなど主要機能を担うものは内容を確認して手動更新するなど、役割によって運用を分けるのが現実的である。

ただし、最新版に未修正の脆弱性が存在する場合や、開発が停止して修正版が提供されない場合は、自動更新を有効にしていても解決しない。

プラグインの更新手順

日常的な更新では、更新通知だけを見るのではなく、プラグインの状態と更新内容を確認してから適用する。

更新対象を確認する

WordPress管理画面から、更新可能なプラグインと現在のバージョンを確認する。

脆弱性管理サービスを利用している場合は、既知の脆弱性についても合わせて確認しておく。

更新内容と修正版を確認する

更新内容を確認し、脆弱性修正が含まれている場合は適用を優先する。

既知の脆弱性を理由に更新する場合は、現在使用しているバージョンが影響を受けるのか、どのバージョンから修正されているのかも確認対象となる。

影響が大きければバックアップを再確認する

サイトの主要機能を担うプラグインや変更範囲の大きな更新では、直近のバックアップが正常に取得されているか確認する。

必要に応じて検証環境で先に更新し、問題がないことを確かめてから本番環境へ適用する。

プラグインを更新する

準備ができたら対象のプラグインを更新する。

複数のプラグインをまとめて更新すると、問題が発生した際に原因を特定しにくくなる。影響が大きいものは個別に更新し、その都度確認する方法が分かりやすい。

更新後の動作を確認する

更新後は、新しいバージョンになったことに加えて、そのプラグインが担っている機能を確認する。

フォームなら実際に送信し、EC機能なら商品表示やカートなど、普段使用する主要な処理を試す。

更新によって異常が発生していないことまで確認し、一連の更新作業を完了とする。

まとめ

WordPressプラグインの管理では、更新通知だけを見ていれば十分とは限らない。

現在のバージョン、更新の有無、既知の脆弱性、修正版、WordPressとの互換性、開発状況などを組み合わせて状態を判断する。

脆弱性が見つかり修正版が提供されていれば更新し、修正版がなければ停止や代替も選択肢に含める。不要になったものは削除し、管理対象から外しておきたい。

日常的な確認は、次の流れに整理できる。

プラグインの状態を確認
        ↓
更新・脆弱性情報を確認
        ↓
現在のバージョンへの影響を確認
        ↓
修正版あり → 更新
修正版なし → 停止・代替などを検討
        ↓
更新後の動作を確認

WordPress標準の更新管理に脆弱性情報を組み合わせ、「最新版か」だけでなく「現在のバージョンに既知の脆弱性がないか」まで確認することが、プラグイン管理の基本となる。