説明
このプラグインは WPVulnerability API と連携して、WordPress コア、プラグイン、テーマ、PHP バージョン、Apache HTTPD、nginx、MariaDB、MySQL、ImageMagick、curl、memcached、Redis、SQLite のリアルタイム脆弱性評価を提供します。
WordPress ダッシュボードに詳細なレポートを直接表示し、潜在的なセキュリティリスクを常に把握できます。サイトのセキュリティ状況に関する定期通知を設定して、情報過多にならずに常に情報を得られます。使いやすさを重視した設計で、サイトの個人データを保存・取得することなく、プロアクティブなセキュリティ対策をサポートします。
データの信頼性
データベースが提供する情報は、サードパーティによってレビューされたさまざまな情報から取得したものです。情報については、いかなる種類の責任も負いません。自己責任で行動してください。
プラグインの使い方
WP-CLI
次の WP-CLI コマンドで脆弱性を管理・チェックできます:
- コア:
wp wpvulnerability core - プラグイン:
wp wpvulnerability plugins - テーマ:
wp wpvulnerability themes - PHP:
wp wpvulnerability php - Apache HTTPD:
wp wpvulnerability apache - nginx:
wp wpvulnerability nginx - MariaDB:
wp wpvulnerability mariadb - MySQL:
wp wpvulnerability mysql - ImageMagick:
wp wpvulnerability imagemagick - curl:
wp wpvulnerability curl - memcached:
wp wpvulnerability memcached - Redis:
wp wpvulnerability redis - SQLite:
wp wpvulnerability sqlite
プラグインの設定には次のコマンドを使用できます:
- コンポーネントを非表示:
wp wpvulnerability config hide <component> [on|off] - 通知メール:
wp wpvulnerability config email <emails>(カンマ区切り) - 通知頻度:
wp wpvulnerability config period <never|daily|weekly> - ログ保持期間:
wp wpvulnerability config log-retention <0|1|7|14|28>(日数単位) - キャッシュ期間:
wp wpvulnerability config cache <1|6|12|24>(時間単位)
すべてのコマンドは --format オプションで出力形式を指定できます:
--format=table: 結果をテーブル形式で表示します (デフォルト)。--format=json: 結果を JSON 形式で表示します。
ヘルプが必要ですか ?
wp wpvulnerability --help: WPVulnerability コマンドのヘルプ情報を表示します。wp wpvulnerability [command] --help: 指定した WPVulnerability コマンドのヘルプ情報を表示します。
REST API
WPVulnerability プラグインは、WordPress サイトのさまざまなコンポーネントの脆弱性情報を取得するための複数のREST API エンドポイントを提供します。
- コア:
/wpvulnerability/v1/core - プラグイン:
/wpvulnerability/v1/plugins - テーマ:
/wpvulnerability/v1/themes - PHP:
/wpvulnerability/v1/php - Apache HTTPD:
/wpvulnerability/v1/apache - nginx:
/wpvulnerability/v1/nginx - MariaDB:
/wpvulnerability/v1/mariadb - MySQL:
/wpvulnerability/v1/mysql - ImageMagick:
/wpvulnerability/v1/imagemagick - curl:
/wpvulnerability/v1/curl - memcached:
/wpvulnerability/v1/memcached - Redis:
/wpvulnerability/v1/redis - SQLite:
/wpvulnerability/v1/sqlite
WPVulnerability REST API は認証にアプリケーションパスワードを使用します。リクエストの Authorization ヘッダーに有効なアプリケーションパスワードを含める必要があります。
認証付きリクエストの例
curl -X GET https://example.com/wp-json/wpvulnerability/v1/plugins -u username:application_password
username を WordPress のユーザー名、application_password をアプリケーションパスワードに置き換えてください。
追加設定
“From:” メール (バージョン3.2.2以降)
何らかの理由でプラグインから送信されるメールの From をサイト管理者とは異なるものにする必要がある場合は、wp-config.php に定数を追加して変更できます:
define( 'WPVULNERABILITY_MAIL', 'sender@example.com' );
定数が有効な場合、設定画面に表示されます。
チェックの強制非表示 (バージョン4.1.0以降)
特定のコンポーネントを常に非表示にしたい場合は、wp-config.php に定数を定義できます。true に設定すると、設定画面で自動的にチェックされ、関連する解析がスキップされます。
例:
define( 'WPVULNERABILITY_HIDE_APACHE', true );
利用可能な定数: WPVULNERABILITY_HIDE_CORE、WPVULNERABILITY_HIDE_PLUGINS、WPVULNERABILITY_HIDE_THEMES、WPVULNERABILITY_HIDE_PHP、WPVULNERABILITY_HIDE_APACHE、WPVULNERABILITY_HIDE_NGINX、WPVULNERABILITY_HIDE_MARIADB、WPVULNERABILITY_HIDE_MYSQL、WPVULNERABILITY_HIDE_IMAGEMAGICK、WPVULNERABILITY_HIDE_CURL、WPVULNERABILITY_HIDE_MEMCACHED、WPVULNERABILITY_HIDE_REDIS、WPVULNERABILITY_HIDE_SQLITE。
キャッシュ期間 (バージョン4.1.0以降)
デフォルトでは、API からのデータは12時間キャッシュされます。変更するには、wp-config.php に WPVULNERABILITY_CACHE_HOURS を 1、6、12、24 のいずれかで定義してください。この値は設定画面と WP-CLI コマンドを上書きします。
define( 'WPVULNERABILITY_CACHE_HOURS', 24 );
ログローテーション (バージョン4.2.0以降)
WPVulnerability は最新の API レスポンスを保存するので、新しいログタブから最近の呼び出しを確認できます。wp-config.php に WPVULNERABILITY_LOG_RETENTION_DAYS を定義して、保持するエントリーの日数を制御できます。対応する値は 0、1、7、14、28 で、0 を使用するとログを完全に無効化します。
define( 'WPVULNERABILITY_LOG_RETENTION_DAYS', 14 );
定数が存在する場合、その値が設定 UI と WP-CLI の両方に強制適用され、環境全体で一貫したログローテーションが保証されます。
セキュリティ設定 (バージョン4.3.0以降)
WPVulnerability はサーバーソフトウェア (ImageMagick、Redis、Memcached、SQLite) の検出にハイブリッドアプローチを使用します。PHP 拡張を優先 (最も安全) し、次にシェルコマンドをフォールバックとして使用 (最も正確) します。この動作は wp-config.php のセキュリティ設定定数で制御できます。
シェルコマンドのグローバル無効化:
define( 'WPVULNERABILITY_DISABLE_SHELL_EXEC', true );
シェルコマンドの使用を完全に無効化します。PHP 拡張のみにフォールバックします。精度の低下が許容できる場合に最大セキュリティとして使用してください。
セキュリティモード (standard/strict/disabled):
define( 'WPVULNERABILITY_SECURITY_MODE', 'strict' );
standard– ハイブリッド検出: PHP 拡張を優先し、シェルコマンドをフォールバックとして使用 (デフォルト、最高精度)strict– PHP 拡張のみ、シェルコマンドなし (高セキュリティ、精度低め)disabled– ソフトウェア検出なし (最大セキュリティ)
コンポーネントホワイトリスト:
define( 'WPVULNERABILITY_SHELL_EXEC_WHITELIST', 'imagemagick,redis' );
指定したコンポーネントのみシェルコマンドを許可します。対応コンポーネント: imagemagick、redis、memcached、sqlite。細かい制御に使用してください。
例:
最大セキュリティ (シェルコマンドなし):
define( 'WPVULNERABILITY_SECURITY_MODE', 'strict' );
ImageMagick のシェル検出のみ許可:
define( 'WPVULNERABILITY_SHELL_EXEC_WHITELIST', 'imagemagick' );
完全無効化:
define( 'WPVULNERABILITY_DISABLE_SHELL_EXEC', true );
すべてのシェルコマンドはハードコードされ検証済みです。ユーザー入力は一切関与しません。コマンドはセキュリティ監査のためにログに記録されます。
互換性
- WordPress: 5.6 – 7.1
- PHP: 7.0 – 8.5
- WP-CLI: 2.3.0 – 2.12.0
セキュリティ
このプラグインは各バージョンで以下のセキュリティ対策とレビュープロトコルに準拠しています:
- WordPress プラグインハンドブック
- WordPress プラグインセキュリティ
- WordPress API セキュリティ
- WordPress コーディング規約
- Plugin Check (PCP)
プライバシー
- このプラグインおよび WordPress Vulnerability Database API は、サイト、ユーザー、プラグイン、テーマ、コンテンツに関する情報を収集しません。
脆弱性
- バージョン4.2.2.1でセキュリティの脆弱性が発見・修正されました。以前のすべてのバージョン (3.3.0〜4.2.1) が影響を受けます。バージョン4.2.2.1以降にアップデートしてください。
Found a security vulnerability? Please report it to us privately at ROBOTSTXT.
貢献者
You can contribute to this plugin at the WPVulnerability repository.
インストール
自動ダウンロード
WordPress のプラグインセクションにアクセスし、[wpvulnerability] を検索して、プラグインをダウンロードしインストールしてください。
手動ダウンロード
ZIP を解凍し、/wp-content/plugins/wpvulnerability/ ディレクトリにアップロードします。 アップロードするとプラグインリストに表示されます。
FAQ
-
脆弱性情報はどこから取得していますか ?
-
WPVulnerability.com API を元にしています。この API に表示される脆弱性は、CVEs などのさまざまなソースから取得しています。
-
サイトのデータはどこかに送信されますか ?
-
いいえ、送信されません。ユーザーのプライバシーは私たちにとって非常に重要です。私たちはユーザーのデータを商品化しません。
-
どのような脆弱性を見つけますか ?
-
WordPress コア、プラグイン、テーマ、PHP、Apache HTTPD、nginx、MariaDB、MySQL、ImageMagick、curl、memcached、Redis、SQLite の脆弱性が記録されます。
-
サイトに脆弱性がある場合、どうすればいいのでしょうか ?
-
まずは安心してください。脆弱性の内容を調べ、特に影響を受けた要素の最新バージョンが適用されているか確認してください。WordPress とすべてのプラグインを常に最新の状態に保つことを強くお勧めします。ウェブサーバー、データベース、その他のソフトウェアなど WordPress 以外の脆弱性については、ホスティングプロバイダーに修正を依頼してください。
評価
貢献者と開発者
WPVulnerability はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。
貢献者変更履歴
[5.1.2] – 2026-08-07
Fixed
- Missing
load_plugin_textdomain()call caused a “Translation loading for thewpvulnerabilitydomain was triggered too early”_doing_it_wrong()notice on WordPress 6.7+. The textdomain is now explicitly loaded on theinithook.
Added
- WordPress Playground blueprint (
blueprint.json) with pre-installed vulnerable plugins and a theme for quick testing.
Changed
- Security vulnerability reporting link updated to ROBOTSTXT.
- Contributor repository link updated to git.robotstxt.es/ROBOTSTXT/wpvulnerability.
- The
readme.txtChangelog section now shows only the latest 3 versions; the full history remains inchangelog.txt.
互換性
- WordPress: 5.6 – 7.1
- PHP: 7.0 – 8.5
- WP-CLI: 2.3.0 – 2.12.0
Tests
- PHP Coding Standards: 3.13.5
- WordPress Coding Standards: 3.3.0
- PHPStan: 2.1.55 (level 9, 0 errors)
- PHPUnit: 9.6.34 (25 tests)
[5.1.1] – 2026-07-09
Fixed
- Site Health: the memcached, Redis, and SQLite vulnerability tests always returned “Invalid software type” because those components were missing from the software list. They now run correctly.
- “Send test email” failed when no email recipients were configured: the forced-test path added the admin email but the send gate used a flag computed before the override. The test email now sends.
- “Run notification now” reported failure when only webhook channels (Slack/Teams/Discord/Telegram) were enabled and email was disabled. The notification result now reflects whether any channel delivered successfully.
- Weekly notification cron events were never auto-scheduled, because the
weeklycron schedule was registered only atinitwhile the on-load scheduling runs earlier. The weekly/daily schedule registration moved to the always-loaded scheduler so weekly notifications schedule correctly. - Deactivation deleted the per-component analysis settings (
wpvulnerability-analyze), so deactivating and reactivating reset which components were hidden. Analysis settings are now preserved on deactivation (only uninstall removes them). - The debug “Cron Status” panel always showed the notification event as “not scheduled” because it checked the wrong hook name (
wpvulnerability_send_notificationinstead ofwpvulnerability_notification). - The debug “last run” timestamp was always empty because it read a
wpvulnerability-logsoption that is never written; it now reads the most recent API log entry. - Redis detection called
close()twice on the success path (once in thetryblock, once infinally); the redundant close was removed. - The single-site vulnerable-themes count was hardcoded to
0instead of reading the stored option.
Changed
- Single-site email recipient sanitization now uses
is_email()for strict validation, matching the multisite behaviour. - Removed a redundant nonce field from the single-site “Reset Plugin” form (the form only submits the full-reset action).
- Removed dead code: the unused
wpvulnerability_sanitize_messagescallback and its setting registration, and an unused$tools_actionvariable in the multisite admin.
互換性
- WordPress: 5.6 – 7.1
- PHP: 7.0 – 8.5
- WP-CLI: 2.3.0 – 2.12.0
Tests
- PHP Coding Standards: 3.13.5
- WordPress Coding Standards: 3.3.0
- PHPStan: 2.1.55 (level 9, 0 errors)
- PHPUnit: 9.6.34 (25 tests)
[5.1.0] – 2026-07-08
セキュリティ
wpvulnerability_validate_shell_command()now uses exactin_array()match instead ofstripos()substring matching for the shell-command allowlist (defense-in-depth).wpvulnerability_detect_php(),wpvulnerability_detect_curl(), andwpvulnerability_detect_webserver()now route throughwpvulnerability_safe_shell_exec(), so every software-detection shell call is validated and recorded in the Shell Execution Audit Log. Previously these calledshell_exec()directly, bypassing the wrapper and the audit log. As a side effect this also fixes nginx/angie version detection:escapeshellcmd()was escaping the2>&1redirect, so stderr (where nginx prints its version) was never captured.
Fixed
- Multisite uninstall fatal error:
Uncaught Error: Undefined constant "WPVULNERABILITY_PLUGIN_BASE"when “Delete all plugin data on uninstall” was enabled.uninstall.phpnow defines the constant before loadingwpvulnerability-run.php. WPVULNERABILITY_HIDE_*constants now stopshell_execdetection for hidden components during scheduled scans and in the admin “Software Detection Methods” panel. Previously they only hid the results from the UI, so the audit log kept filling with “command not found” entries for components the administrator had explicitly deactivated.wpvulnerability_detect_webserver()no longer shell-probes a hidden web server via the sibling path:WPVULNERABILITY_HIDE_NGINXandWPVULNERABILITY_HIDE_APACHEnow fully isolate the hidden server.- Multisite cron requests on non-main subsites no longer load all plugin module files. No WPVulnerability cron events are scheduled on subsites, so the extra loading was wasted work.
- LiteSpeed / OpenLiteSpeed / Caddy shell detection in the WP_DEBUG diagnostic panel now works: the commands no longer use
2>/dev/null(which the shell-command validator rejected),caddywas added to the allowlist, andwhichoutput is validated as a real path so “command not found” messages are not mistaken for a detection.
Changed
Network: trueadded to the plugin header to declare network-aware multisite behaviour.- Removed the unused
$plugin_statusparameter fromwpvulnerability_plugin_info_after(); the PHPCS suite now passes with zero warnings. - Multisite network dashboard: the “Site Health” footer link pointed to
wp-admin/network/site-health.php, which does not exist (Site Health is a per-site screen). It now links to the main site’swp-admin/site-health.php.
互換性
- WordPress: 5.6 – 7.1
- PHP: 7.0 – 8.5
- WP-CLI: 2.3.0 – 2.12.0
Tests
- PHP Coding Standards: 3.13.5
- WordPress Coding Standards: 3.3.0
- PHPStan: 2.1.55 (level 9, 0 errors)
- PHPUnit: 9.6.34 (18 tests)
Previous versions
If you want to see the full changelog, visit the changelog.txt file.



