WordPressの脆弱性とは?最新情報の調べ方と発見時の対処法

WordPressの脆弱性は、本体だけでなく、テーマ、プラグイン、PHPなど周辺のソフトウェアでも見つかります。情報を見かけたら、慌ててファイルを削除するのではなく、対象製品、影響を受けるバージョン、修正版の有無を順に確認することが大切です。

この記事では、信頼できる情報源の見分け方から、自サイトとの照合、更新版がまだない場合の暫定対応までを扱います。すでに改ざんや不審な管理者が見つかっている場合は、通常の更新作業だけで済ませず、証拠を残したうえで復旧を進めてください。

WordPressの脆弱性とは

脆弱性とは、ソフトウェアの設計や実装上の弱点のうち、第三者に悪用される可能性があるものです。WordPressサイトでは、次の層を分けて考える必要があります。

確認する情報
WordPress本体コア機能、REST API、管理画面本体のバージョンと公式リリース
プラグインフォーム、SEO、キャッシュ製品名、バージョン、修正版
テーマ表示機能、独自ウィジェット有効・無効を含む設置状況
サーバー側PHP、Webサーバー、データベースホスティング側の提供バージョン
運用弱い認証、過剰な権限、漏えいした資格情報ユーザー、ログ、設定

不具合がすべて脆弱性になるわけではありません。また、脆弱性が公表されていても、該当機能を使っていない、攻撃に認証が必要など、成立条件によって実際の危険度は変わります。サイト全体の防御を見直すときは「セキュリティ対策まとめ」、運用を社内で継続しにくいときは「保守サービスという選択肢」も参考になります。

脆弱性、設定不備、侵害済みの状態も区別します。たとえば、誰でも会員登録できる設定が意図せず有効なら設定不備、修正前のコードに権限回避の欠陥があれば脆弱性、その弱点を使って不審な管理者が追加されていれば侵害です。それぞれ、設定変更、修正版の適用、侵害調査と復旧という異なる対応が必要になります。

WordPressの脆弱性が狙われやすい理由

WordPressは本体へテーマやプラグインを組み合わせて使います。便利な一方、導入する製品が増えるほど、更新状況や配布元を管理する対象も増えます。公開サイトはインターネットから常時アクセスできるため、攻撃者は特定サイトを目視せず、既知の弱点を持つURLや応答を自動で探せます。

原因を「WordPressだから危険」と一括りにするのは正確ではありません。古いプラグインを放置する、使っていない製品を残す、管理者権限を共有する、復元できるバックアップがない、といった複数の条件が被害を大きくします。反対に、更新、最小権限、監視、復旧準備を重ねることでリスクは下げられます。

脆弱性を悪用する主な攻撃

代表的な攻撃と、起き得る影響は次のとおりです。

  • クロスサイトスクリプティング:投稿や設定画面へ不正なスクリプトを混入し、閲覧者や管理者の操作に影響を与える
  • SQLインジェクション:不正な入力を通じてデータベースの読み取りや変更を狙う
  • 権限昇格:購読者など低い権限の利用者が、本来許可されない操作を行う
  • 認証回避:正しいログイン手続きを経ずに保護された機能へ到達する
  • 任意ファイルアップロードやコード実行:サーバー上へ不正ファイルを置き、処理を実行する
  • パストラバーサルや情報漏えい:公開すべきでないファイル、設定、個人情報を読み取る

ログイン試行を繰り返す総当たり攻撃や、盗まれたパスワードの使い回しは、ソフトウェアの脆弱性とは別の問題です。ただし、侵入口と権限の弱点が組み合わさることはあるため、認証対策も同時に点検します。

攻撃の成立条件は、公開ページへアクセスするだけでよい「未認証」と、購読者・投稿者・管理者などのログインが必要なものに分かれます。認証が必要でも安全とは限りません。会員登録を一般開放しているサイトでは購読者権限を取得しやすく、複数人が投稿するサイトでは低い権限からの攻撃も現実的です。

影響も、情報閲覧、データ変更、サービス停止、サーバー上のコード実行では重さが違います。公開条件と影響の組み合わせを確認し、「重大」という見出しだけで全サイトを同じ優先度にしないようにします。

最新の脆弱性情報を調べる方法

最初に、WordPress.orgの公式リリース情報、テーマ・プラグインの公式配布ページ、開発元のセキュリティ告知を確認します。公的な脆弱性データベースとしては、JVN iPediaや米国NVDも利用できます。CVE番号が付いている場合は、同じ番号で照合すると同名製品との取り違えを減らせます。

情報を見るときは、記事の見出しだけで判断せず、次の項目を記録します。

  1. 製品名と開発元
  2. 影響を受けるバージョン範囲
  3. 修正版のバージョン
  4. 攻撃に認証や特定設定が必要か
  5. 公開日と最終更新日
  6. 暫定回避策の有無

SNSや警告メールは発見のきっかけにはなりますが、最終確認先にはしません。WordPressのSecurity Teamを名乗り、プラグインのインストールや管理者パスワードを求める詐欺も報告されています。案内されたファイルを入れる前に、公式ドメインと開発元の告知を直接開きましょう。

CVEは脆弱性を識別する番号、CVSSは技術的な深刻度を表す指標です。同じCVEが複数のデータベースに載っていても別件ではありません。CVSSが高くても自サイトでは該当機能を無効にしている場合があり、反対に点数が中程度でも、顧客情報を扱う公開機能なら急ぐべきことがあります。点数だけでなく、攻撃コードの公開、実際の悪用報告、サイトの重要度を加えて優先順位を決めます。

情報が食い違う場合は、開発元が示す影響範囲と修正版を軸にし、更新された告知の日付を確認します。脆弱性データベースは登録後に説明やバージョン範囲が修正されることがあるため、最初に見た内容を固定メモにせず、対応直前にも再確認します。

自分のWordPressに脆弱性があるか確認する方法

まず管理画面の「ダッシュボード」から「更新」を開き、WordPress本体、プラグイン、テーマの各バージョンを確認します。管理画面へ入れない場合は、ホスティングのファイル管理やWP-CLIなど、契約環境で認められた方法で確認します。PHPは「ツール」の「サイトヘルス」にある「情報」の「サーバー」でも確認できます。

次に、脆弱性情報の対象範囲と照合します。製品名が同じでも、無料版と有料版、旧製品と後継製品を混同しないようにしてください。無効化したプラグインや未使用テーマもファイルが残っていれば確認対象です。

確認結果は、少なくとも「該当なし」「該当するが修正版あり」「該当し修正版なし」「状況不明」に分けます。診断プラグインの表示だけで断定せず、開発元の修正履歴と実ファイルのバージョンを突き合わせることが重要です。

複数サイトを管理している場合は、サイトURL、環境、本体、PHP、有効・無効プラグイン、テーマを一覧化します。同じ契約内でも子サイトごとに構成が違うため、「このサーバーは更新済み」という単位では漏れます。管理画面から取得した一覧と、サーバー上に実在するディレクトリも照合してください。

すでに悪用された兆候として、身に覚えのない管理者、意図しないリダイレクト、検索結果だけに出る不審ページ、深夜のファイル変更、未知の予約タスク、メール送信量の急増などがあります。表示が正常でも、アクセスログ、認証ログ、ファイル変更時刻を確認します。ログが短期間で消える契約では、調査前に別の安全な場所へ保全します。

脆弱性が見つかったときの対処手順

修正版が公開済みなら、次の順に進めます。

  1. 対象サイトと影響範囲を特定し、作業時刻を決める
  2. データベースとファイルを別の安全な場所へ退避する
  3. 修正版の対応環境と既知の問題を確認する
  4. 可能ならステージング環境で更新と主要機能を試す
  5. 本番を更新し、表示、ログイン、フォーム、決済などを確認する
  6. キャッシュを消し、エラーログとアクセスログを監視する
  7. 不審なユーザー、改変ファイル、未知のタスクがないか調べる

更新前の退避と復元確認は「WordPressのバックアップ」で詳しく扱っています。バックアップは感染後の状態も含む可能性があるため、作成日時と保管先を記録し、安易に古いデータで上書きしないでください。

脆弱性の修正と侵害からの復旧は別作業です。不審な管理者、外部への転送、身に覚えのないPHPファイルなどがある場合は、修正版を入れるだけでは潜伏した不正コードが残るおそれがあります。資格情報の変更、クリーンなファイルとの比較、ログの保全を含む調査が必要です。

侵害が疑われる場合は、被害を広げないために公開停止やアクセス制限を検討し、同時にログと不審ファイルを保全します。先にすべてを削除すると侵入口が分からなくなることがあります。安全な端末からホスティング、WordPress、SFTP、データベース、外部APIの認証情報を見直し、同じパスワードを使う別サービスにも対応します。

復旧では、信頼できる公式パッケージから本体・テーマ・プラグインを入れ直し、アップロード領域に実行ファイルがないか、DBへ不正なスクリプトやユーザーが入っていないかを確認します。復旧後も一定期間はファイル変更、管理者ログイン、外部通信を監視します。

更新版がないゼロデイ脆弱性への対応

修正版がまだない場合は、開発元が示す回避策を優先します。対象機能を停止する、プラグインを無効化して削除する、該当URLへのアクセスを制限するなど、攻撃経路を一時的に閉じます。停止による業務影響もあるため、代替フォームや告知ページを準備してから切り替えると混乱を抑えられます。

WordPress本体の古さが関係しているなら「本体を最新版に更新する」手順を確認します。ただし、対象がプラグインなら本体更新だけで解消するとは限りません。WAFの仮想パッチは時間を稼ぐ手段であり、恒久的な修正の代わりではありません。

管理画面や公開ページを止められない場合でも、権限を絞る、外部からの管理画面アクセスを限定する、ログ監視を強めるといった防御を重ねます。回避策の解除条件も決め、修正版が出たら検証後に更新します。

プラグインを無効化できない業務上の理由があるなら、影響する操作だけを停止できるかを開発元へ確認します。ただし、推測でファイル名を変更したり、脆弱な関数だけを直接書き換えたりすると、後の公式更新に失敗することがあります。公式パッチがない独自改変は、変更内容、担当者、戻し方を記録し、修正版適用時に取り除きます。

ゼロデイの対応中は、誰が情報を監視し、どの条件でサイトを止めるかを決めます。「更新版が出たら誰かが気付く」という状態では対応が遅れます。開発元の告知、ホスティングの連絡、脆弱性データベースを確認する時刻と責任者を置きます。

脆弱性診断で分かること・分からないこと

自動診断は、既知の脆弱性があるバージョン、不要な公開情報、弱い設定、改変の兆候などを広く探すのに役立ちます。一方、独自プラグインの未知の欠陥、業務フロー上の権限ミス、すでに盗まれた認証情報まで、ひとつのスキャンで完全に判定することはできません。

外部からの診断は攻撃者に見える入口を調べやすく、内部診断はファイルや設定を詳しく確認できます。コードレビューや手動テストが必要なケースもあります。診断前には対象範囲、実施時間、負荷、取得データ、緊急連絡先を合意し、本番サイトへ無断で侵入テストを行わないことが前提です。

無料診断の結果は、緊急度を決める一次スクリーニングとして使います。検出された名称だけで削除を決めず、誤検知、影響条件、修正後の再診断まで確認してください。

診断結果には、検出方法と証拠が必要です。単に「危険」と表示されるだけでなく、対象URL、製品バージョン、レスポンス、再現条件が記録されているかを見ます。一方、公開レポートへ攻撃手順、個人情報、管理URLを載せると新たな危険になるため、共有範囲を制限します。

診断で問題が出なかった場合も、診断時点と対象範囲に限った結果です。更新後、新しい脆弱性が公表された後、構成を変更した後には再評価します。常時監視と定期診断は役割が異なり、どちらか一方で置き換えられません。

WordPressの脆弱性を減らす日常運用

日常運用では、発見後の速さと復旧できる状態の両方を整えます。

  • WordPress本体、テーマ、プラグインの更新通知を定期的に確認する
  • 使わないプラグインとテーマは無効化だけでなく削除する
  • 管理者を必要最小限にし、共有アカウントを避ける
  • 強固で固有のパスワードと多要素認証を使う
  • 公式配布元または信頼できる開発元からのみ入手する
  • ファイル変更、ログイン、エラー、稼働状況を監視する
  • 自動バックアップと定期的な復元テストを行う
  • 更新担当者、判断期限、障害時の連絡先を決める

自動更新は修正版の適用を早めますが、互換性問題に備えた監視とバックアップが必要です。重要サイトでは、プラグインごとに自動更新の可否を決め、更新後の簡易テストを運用へ組み込みます。

月次点検だけでは、緊急の脆弱性へ間に合わないことがあります。通常更新は定例日、重大なセキュリティ更新は臨時対応という二つの経路を決めます。受付、影響確認、検証、適用、完了報告の時刻を残すと、次回の目標時間を改善できます。

対応台帳には、情報源、対象製品、影響バージョン、自サイトの版、判定、暫定措置、修正版、適用日時、確認者を記録します。複数サイトで同じプラグインを使う場合でも、サイトごとに有効機能やデータの重要度が違うため、適用結果を別々に残します。

更新通知の受信先が退職者のメールになっていないか、ホスティングからの緊急連絡を誰が見るかも定期的に確認します。休日や担当者不在時の代理、公開停止を判断できる責任者、外部保守先への連絡条件まで決めておくと、重大な告知が出たときに迷いません。

バックアップは本番サーバーと同じ障害で失われない場所にも保管し、ファイルとDBの対応時刻をそろえます。復元テストでは、単にアーカイブを開けるかではなく、別環境でログイン、画像表示、フォームなどが動くかまで確認します。

よくある質問

Q
無効化したプラグインにも脆弱性の影響はありますか?
A

あります。無効化すると通常の処理へ読み込まれなくても、脆弱なファイルへ直接アクセスできる設計なら影響する可能性があります。使わないプラグインはバックアップと依存関係を確認して削除し、再導入時は公式の最新版を使います。

Q
脆弱性があると必ず攻撃されますか?
A

必ずではありません。認証、設定、公開状態などの成立条件があります。しかし、自動探索される公開サイトでは「知られていないから安全」とは考えられません。影響条件を確認し、修正版または公式の回避策を適用します。

Q
無料の脆弱性診断だけで十分ですか?
A

既知の問題を見つける入口にはなりますが、それだけで安全を保証できません。独自コード、権限設計、ログ、バックアップの復元性などは別の確認が必要です。重要情報を扱うサイトは、対象を定めた専門診断も検討します。

まとめ

WordPressの脆弱性情報を見つけたら、製品名、対象バージョン、成立条件、修正版を公式情報で確認し、自サイトの構成と照合します。修正版があればバックアップと検証を経て更新し、まだなければ対象機能の停止やアクセス制限で攻撃経路を狭めます。

更新だけで終えず、侵害の兆候、ログ、権限、復元手段も確認してください。不要な製品の削除、最小権限、監視、復元テストを続けることが、次の脆弱性が公表されたときの被害と対応時間を抑えます。

この記事を書いた人

Hara Daizo

Hara Daizo

Web制作会社、Web担当者を経て独立。17年以上の実務経験で培った制作スキルとSEOノウハウを活かし、現在はSTARRY代表としてWordPressサイト制作・集客サポートを提供。大手クラウドソーシングのWebデザイナーランキング上位受賞多数。