10,000+
August 23, 2026
May 6, 2022
This plugin integrates with the WPVulnerability API to provide real-time vulnerability assessments for your WordPress core, plugins, themes, PHP version, Apache HTTPD, nginx, MariaDB, MySQL, ImageMagick, curl, memcached, Redis, and SQLite.
It delivers detailed reports directly within your WordPress dashboard, helping you stay aware of potential security risks. Configure the plugin to send periodic notifications about your site’s security status, ensuring you remain informed without being overwhelmed. Designed for ease of use, it supports proactive security measures without storing or retrieving any personal data from your site.
The information provided by the information database comes from different sources that have been reviewed by third parties. There is no liability of any kind for the information. Act at your own risk.
You can use the following WP-CLI commands to manage and check vulnerabilities:
wp wpvulnerability corewp wpvulnerability pluginswp wpvulnerability themeswp wpvulnerability phpwp wpvulnerability apachewp wpvulnerability nginxwp wpvulnerability mariadbwp wpvulnerability mysqlwp wpvulnerability imagemagickwp wpvulnerability curlwp wpvulnerability memcachedwp wpvulnerability rediswp wpvulnerability sqliteTo configure the plugin you can use:
wp wpvulnerability config hide <component> [on|off]wp wpvulnerability config email <emails> (comma separatted)wp wpvulnerability config period <never|daily|weekly>wp wpvulnerability config log-retention <0|1|7|14|28> (in days)wp wpvulnerability config cache <1|6|12|24> (in hours)All commands support the --format option to specify the output format:
--format=table: Displays the results in a table format (default).--format=json: Displays the results in JSON format.Need help?
wp wpvulnerability --help: Displays help information for WPVulnerability commands.wp wpvulnerability [command] --help: Displays help information for a WPVulnerability command.The WPVulnerability plugin provides several REST API endpoints to fetch vulnerability information for different components of your WordPress site.
/wpvulnerability/v1/core/wpvulnerability/v1/plugins/wpvulnerability/v1/themes/wpvulnerability/v1/php/wpvulnerability/v1/apache/wpvulnerability/v1/nginx/wpvulnerability/v1/mariadb/wpvulnerability/v1/mysql/wpvulnerability/v1/imagemagick/wpvulnerability/v1/curl/wpvulnerability/v1/memcached/wpvulnerability/v1/redis/wpvulnerability/v1/sqliteThe WPVulnerability REST API uses Application Passwords for authentication. You need to include a valid Application Password in the Authorization header of your requests.
Example Request with Authentication
curl -X GET https://example.com/wp-json/wpvulnerability/v1/plugins -u username:application_password
Replace username with your WordPress username and application_password with your Application Password.
If, for some reason, you need the emails sent by the plugin to have a From different from the site administrator, you can change it from the wp-config.php by adding a constant:
define( 'WPVULNERABILITY_MAIL', 'sender@example.com' );
If the constant is active, it will be visible in the configuration screen.
If you want to always hide a specific component, you can define a constant in wp-config.php. When set to true, the option will be checked automatically in the settings screen and the related analysis will be skipped.
Example:
define( 'WPVULNERABILITY_HIDE_APACHE', true );
Available constants: 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.
By default, data from the API is cached for 12 hours. To change this, define WPVULNERABILITY_CACHE_HOURS in wp-config.php with one of 1, 6, 12 or 24. This value overrides the setting screen and WP-CLI command.
define( 'WPVULNERABILITY_CACHE_HOURS', 24 );
WPVulnerability stores the most recent API responses so you can review recent calls from the new log tab. Define WPVULNERABILITY_LOG_RETENTION_DAYS in wp-config.php to control how many days of entries are preserved. Supported values are 0, 1, 7, 14 or 28; using 0 disables logging entirely.
define( 'WPVULNERABILITY_LOG_RETENTION_DAYS', 14 );
When the constant is present its value is enforced in the settings UI and through WP-CLI, ensuring consistent log rotation across environments.
WPVulnerability uses a hybrid detection approach for server software (ImageMagick, Redis, Memcached, SQLite): PHP extensions first (most secure), then shell commands as fallback (most accurate). You can control this behavior using security configuration constants in wp-config.php.
Global disable of shell commands:
define( 'WPVULNERABILITY_DISABLE_SHELL_EXEC', true );
Completely disables shell command usage. Falls back to PHP extensions only. Use for maximum security when accuracy loss is acceptable.
Security mode (standard/strict/disabled):
define( 'WPVULNERABILITY_SECURITY_MODE', 'strict' );
standard – Hybrid detection: PHP extensions first, shell commands fallback (default, best accuracy)strict – PHP extensions only, no shell commands (high security, lower accuracy)disabled – No software detection at all (maximum security)Component whitelist:
define( 'WPVULNERABILITY_SHELL_EXEC_WHITELIST', 'imagemagick,redis' );
Allows shell commands only for specified components. Available components: imagemagick, redis, memcached, sqlite. Use for granular control.
Examples:
Maximum security (no shell commands):
define( 'WPVULNERABILITY_SECURITY_MODE', 'strict' );
Only allow ImageMagick shell detection:
define( 'WPVULNERABILITY_SHELL_EXEC_WHITELIST', 'imagemagick' );
Complete disable:
define( 'WPVULNERABILITY_DISABLE_SHELL_EXEC', true );
All shell commands are hardcoded and validated – no user input is involved. Commands are logged for security auditing.
This plugin adheres to the following security measures and review protocols for each version:
Found a security vulnerability? Please report it to us privately at ROBOTSTXT.
You can contribute to this plugin at the WPVulnerability repository.
Visit the plugin section in your WordPress, search for [wpvulnerability]; download and install the plugin.
Extract the contents of the ZIP and upload the contents to the /wp-content/plugins/wpvulnerability/ directory. Once uploaded, it will appear in your plugin list.
The origin is in the WPVulnerability.com API. The vulnerabilities that appear in this API come from different sources, such as CVEs.
No. Never. Your privacy is very important to us. We do not commercialize with your data.
Vulnerabilities in WordPress Core, Plugins, Themes, PHP, Apache HTTPD, nginx, MariaDB, MySQL, ImageMagick, curl, memcached, Redis, and SQLite are documented.
First of all, peace of mind. Investigate what the vulnerability is and, above all, check that you have the latest version of the compromised element. We actively recommend that you keep all your WordPress and its plugins up to date. Contact your hosting provider to patch non-WordPress vulnerabilities (like web server, databases, and other software).
Fixed
add_settings_error() was called before the WordPress admin API was loaded).Changed
languages/wpvulnerability.pot regenerated with the new strings.Compatibility
Tests
Changed
languages/wpvulnerability.pot so its source references match the current code. The string set is unchanged (450 strings); all shipped translations were verified against it and remain fully up to date.Compatibility
Tests
Highlights
Fixed
class_exists( 'WP_Site_Health' ), but core loads that class lazily, after init, where the plugin loads its modules — so the guard always evaluated to false and none of the 13 vulnerability tests ever appeared in Site Health. The filter is now registered unconditionally; below WordPress 5.2 it simply never fires.wpvulnerability-plugins-cache-data timestamp option, so the plugins dataset is fully refreshed afterwards.sanitize_email() on all code paths.json_decode() call when reading the vulnerable-themes count.wp_date() compatibility polyfill no longer fatals on WordPress 4.7–5.3: core calls wp_maybe_decline_date() unconditionally, but that function only exists since 5.4; the call is now availability-guarded.'[]' instead of an empty string when encoding fails, matching the plugins and themes getters.Security
register_uninstall_hook() registration: uninstall.php supersedes it and the registration added a stray autoloaded option row.show_in_rest => false, matching the multisite configuration.Changed
wpvulnerability_can_shell_exec()) result is cached per request instead of spawning a process on every call.Compatibility
Tests
If you want to see the full changelog, visit the changelog.txt file.
| Version | Download | Type |
|---|---|---|
| 5.1.6 | Download | Stable |
| 5.1.2 | Download | Stable |
| 5.1.1 | Download | Stable |
| 5.0.1 | Download | Stable |
| 5.0.0 | Download | Stable |
| 4.3.2 | Download | Stable |
| 4.3.1 | Download | Stable |
| 4.3.0 | Download | Stable |
| 4.2.1.1 | Download | Stable |
| 4.2.1 | Download | Stable |
| 4.2.0 | Download | Stable |
| 4.1.1 | Download | Stable |
| 4.1.0 | Download | Stable |
| 4.0.4 | Download | Stable |
| 4.0.3 | Download | Stable |
| 4.0.2 | Download | Stable |
| 4.0.1 | Download | Stable |
| 4.0.0 | Download | Stable |
| 3.4.1 | Download | Stable |
| 3.4.0 | Download | Stable |
| 3.3.5 | Download | Stable |
| 3.3.4 | Download | Stable |
| 3.3.3 | Download | Stable |
| 3.3.2 | Download | Stable |
| 3.3.1 | Download | Stable |
| 3.3.0 | Download | Stable |
| 3.2.2 | Download | Stable |
| 3.2.0 | Download | Stable |
| 3.1.2 | Download | Stable |
| 3.1.1 | Download | Stable |
| 3.1.0 | Download | Stable |
| 3.0.2 | Download | Stable |
| 3.0.1 | Download | Stable |
| 3.0.0 | Download | Stable |
| 2.2.1 | Download | Stable |
| 2.2.0 | Download | Stable |
| 2.1.0 | Download | Stable |
| 2.0.4 | Download | Stable |
| 2.0.3 | Download | Stable |
| 2.0.2 | Download | Stable |
| 2.0.1 | Download | Stable |
| 2.0.0 | Download | Stable |
| 1.3.3 | Download | Stable |
| 1.3.2 | Download | Stable |
| 1.3.1 | Download | Stable |
| 1.3.0 | Download | Stable |
| 1.2.4 | Download | Stable |
| 1.2.3 | Download | Stable |
| 1.2.2 | Download | Stable |
| 1.2.1 | Download | Stable |
| 1.2.0 | Download | Stable |
| 1.1 | Download | Stable |
| 1.0.1 | Download | Stable |
| 1.0 | Download | Stable |
| 0.2 | Download | Stable |
| 0.1 | Download | Stable |
| Development | Download | Trunk |