2026年5月20日
2026年5月20日
WordPressプラグインのセキュリティ脆弱性を確認する方法
はじめに
WordPressプラグインの脆弱性は攻撃者に悪用されるリスクがあります。WPScan・Wordfence・CVEデータベースを活用してインストール済みプラグインの既知の脆弱性を定期的にチェックする方法を解説します。
症状・原因
- インストールしているプラグインに既知の脆弱性があるか不安
- プラグインの更新を怠っていたためセキュリティリスクが心配
- どのプラグインがどの脆弱性を持つか体系的に確認したい
- 脆弱性が発見されたプラグインへの対処法を知りたい
解決手順
ステップ1:プラグインバージョンを一覧化する
# インストール済みプラグインとバージョンを一覧表示
wp plugin list --fields=name,version,status,update --format=table
# JSON形式でエクスポート(脆弱性DBと照合用)
wp plugin list --fields=name,version,status --format=json > plugins.json
# 更新が利用可能なプラグイン
wp plugin list --update=available --format=table
ステップ2:WPScanで脆弱性をスキャンする
# WPScanのインストール(Ruby必要)
gem install wpscan
# APIトークンを取得: wpscan.com で無料登録(25回/日)
# プラグインの脆弱性スキャン
wpscan --url https://example.com \
--api-token YOUR_API_TOKEN \
--enumerate p \
--plugins-detection aggressive
# 特定プラグインの脆弱性のみ確認
wpscan --url https://example.com \
--api-token YOUR_API_TOKEN \
--enumerate p \
--plugins-list contact-form-7,elementor,woocommerce
ステップ3:WP-CLIのセキュリティコマンドを使う
# WordFenceのスキャン(WordFenceインストール必要)
wp wordfence scan
# プラグインのチェックサムを検証(公式版との差分確認)
wp plugin verify-checksums --all
# 改ざんされたファイルを特定
wp plugin verify-checksums contact-form-7
# 出力例: Warning: File "includes/api.php" is added.
# Warning: File "contact-form-7.php" doesn't match.
# コアファイルのチェックサム検証
wp core verify-checksums
ステップ4:CVEデータベースで脆弱性を調査する
調査先サイト:
→ WPScan Vulnerability Database: wpscan.com/plugins
→ Wordfence Intelligence: www.wordfence.com/threat-intel/
→ NVD(NIST): nvd.nist.gov("wordpress plugin名"で検索)
→ Patchstack: patchstack.com/database/
確認すべき情報:
→ CVE番号(例: CVE-2024-12345)
→ CVSS スコア(0〜10: 7以上は高リスク)
→ 影響バージョン(自分のバージョンが含まれるか)
→ 修正済みバージョン(アップデートで解消されるか)
→ 攻撃ベクター(認証なし/要認証)
ステップ5:脆弱性への対処フロー
# 対処法1: 即時アップデート(修正版がある場合)
wp plugin update contact-form-7
# 対処法2: 一時無効化(修正版がない場合)
wp plugin deactivate vulnerable-plugin
# 対処法3: 代替プラグインに移行
wp plugin deactivate vulnerable-plugin
wp plugin install safe-alternative --activate
# 対処法4: .htaccessでプラグインの脆弱なエンドポイントをブロック
# 例: xmlrpc.php へのアクセスをブロック
# .htaccess — 脆弱なエンドポイントへのアクセスをブロック
<Files "xmlrpc.php">
Order Deny,Allow
Deny from all
</Files>
# REST APIを特定IPのみ許可
<Files "wp-json">
Order Deny,Allow
Deny from all
Allow from 203.0.113.0/24
</Files>
ステップ6:定期スキャンを自動化する
# WPScanをcronで定期実行(毎週月曜日)
# crontab -e
0 9 * * 1 wpscan --url https://example.com \
--api-token YOUR_TOKEN \
--enumerate p \
--format json \
--output /var/log/wpscan-$(date +\%Y\%m\%d).json
# WP-CLIのプラグイン更新を自動化
wp plugin update --all --dry-run # ドライラン確認
wp plugin update --all # 本番適用
注意事項
wp plugin verify-checksumsはWordPress.org公式版との比較です。プレミアムプラグインには使用できません- CVSS 7.0以上の脆弱性は72時間以内に対処することを推奨します
- 脆弱なプラグインを無効化しても、コードがサーバー上に残る場合はファイルごと削除してください
まとめ
プラグインのセキュリティ確認は wp plugin verify-checksums --all でファイル改ざんを検出し、WPScanで既知の脆弱性をスキャンします。CVSS 7以上の脆弱性は即時アップデートまたは無効化で対処してください。