WPVulnerability

説明

このプラグインは 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_COREWPVULNERABILITY_HIDE_PLUGINSWPVULNERABILITY_HIDE_THEMESWPVULNERABILITY_HIDE_PHPWPVULNERABILITY_HIDE_APACHEWPVULNERABILITY_HIDE_NGINXWPVULNERABILITY_HIDE_MARIADBWPVULNERABILITY_HIDE_MYSQLWPVULNERABILITY_HIDE_IMAGEMAGICKWPVULNERABILITY_HIDE_CURLWPVULNERABILITY_HIDE_MEMCACHEDWPVULNERABILITY_HIDE_REDISWPVULNERABILITY_HIDE_SQLITE

キャッシュ期間 (バージョン4.1.0以降)

デフォルトでは、API からのデータは12時間キャッシュされます。変更するには、wp-config.phpWPVULNERABILITY_CACHE_HOURS161224 のいずれかで定義してください。この値は設定画面と WP-CLI コマンドを上書きします。

define( 'WPVULNERABILITY_CACHE_HOURS', 24 );

ログローテーション (バージョン4.2.0以降)

WPVulnerability は最新の API レスポンスを保存するので、新しいログタブから最近の呼び出しを確認できます。wp-config.phpWPVULNERABILITY_LOG_RETENTION_DAYS を定義して、保持するエントリーの日数を制御できます。対応する値は 0171428 で、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' );

指定したコンポーネントのみシェルコマンドを許可します。対応コンポーネント: imagemagickredismemcachedsqlite。細かい制御に使用してください。

例:

最大セキュリティ (シェルコマンドなし):

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 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 以外の脆弱性については、ホスティングプロバイダーに修正を依頼してください。

評価

2025年1月28日 1 reply
Without a doubt, the most important plugin to install on your WordPress instance.
2024年4月17日
Vulnerabilities are listed into your plugins list.You should also being able to receive an automatic email too. It doesn’t work on my system, but email test yes.So awesome plugin anyway!
2024年4月8日 1 reply
Exactly what I was looking for ! On the roadmap, it would be nice if : we can chose if we want to receive an email OR not (I may use it as a vuln reminder on the dashboard, as I have other plugins already keeping me informed) we can chose what will be in the email – php or not for exemple (it seems that it is planned, thanks) only receive an email if one the vuln is considered high risk etc.
2024年2月21日
This plugin alerts you about known vulnerabilities in your WordPress core, plugins, themes, and even PHP, so you can take action in a timely manner. If you don’t have this plugin on your site already, you absolutely need it!
19件のレビューをすべて表示

貢献者と開発者

WPVulnerability はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。

貢献者

“WPVulnerability” は14ロケールに翻訳されています。 翻訳者のみなさん、翻訳へのご協力ありがとうございます。

“WPVulnerability” をあなたの言語に翻訳しましょう。

開発に興味がありますか ?

コードを閲覧するか、SVN リポジトリをチェックするか、開発ログRSS で購読してみてください。

変更履歴

[5.1.2] – 2026-08-07

Fixed

  • Missing load_plugin_textdomain() call caused a “Translation loading for the wpvulnerability domain was triggered too early” _doing_it_wrong() notice on WordPress 6.7+. The textdomain is now explicitly loaded on the init hook.

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.txt Changelog section now shows only the latest 3 versions; the full history remains in changelog.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 weekly cron schedule was registered only at init while 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_notification instead of wpvulnerability_notification).
  • The debug “last run” timestamp was always empty because it read a wpvulnerability-logs option that is never written; it now reads the most recent API log entry.
  • Redis detection called close() twice on the success path (once in the try block, once in finally); the redundant close was removed.
  • The single-site vulnerable-themes count was hardcoded to 0 instead 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_messages callback and its setting registration, and an unused $tools_action variable 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 exact in_array() match instead of stripos() substring matching for the shell-command allowlist (defense-in-depth).
  • wpvulnerability_detect_php(), wpvulnerability_detect_curl(), and wpvulnerability_detect_webserver() now route through wpvulnerability_safe_shell_exec(), so every software-detection shell call is validated and recorded in the Shell Execution Audit Log. Previously these called shell_exec() directly, bypassing the wrapper and the audit log. As a side effect this also fixes nginx/angie version detection: escapeshellcmd() was escaping the 2>&1 redirect, 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.php now defines the constant before loading wpvulnerability-run.php.
  • WPVULNERABILITY_HIDE_* constants now stop shell_exec detection 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_NGINX and WPVULNERABILITY_HIDE_APACHE now 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), caddy was added to the allowlist, and which output is validated as a real path so “command not found” messages are not mistaken for a detection.

Changed

  • Network: true added to the plugin header to declare network-aware multisite behaviour.
  • Removed the unused $plugin_status parameter from wpvulnerability_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’s wp-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.