Descripción
Este plugin se integra con la API de WPVulnerability para proporcionar evaluaciones de vulnerabilidad en tiempo real para el núcleo de tu WordPress, plugins, temas, versión de PHP, Apache HTTPD, nginx, MariaDB, MySQL, ImageMagick, curl, memcached, Redis y SQLite
Entrega informes detallados directamente en tu escritorio de WordPress, ayudándote a estar al tanto de posibles riesgos de seguridad. Configura el plugin para enviar avisos periódicos acerca del estado de seguridad de tu sitio, asegurando que te mantengas informado sin sentirte abrumado. Diseñado para ser fácil de usar, es compatible con medidas de seguridad proactivas sin almacenar ni recuperar ningún dato personal de tu sitio.
Fiabilidad de los datos
La información proporcionada por la base de datos de información proviene de diferentes fuentes que han sido revisadas por terceros. No existe ningún tipo de responsabilidad sobre la información. Actúa por tu cuenta y riesgo.
Utilizando el plugin
WP-CLI
Puedes usar los siguientes comandos de WP-CLI para gestionar y comprobar vulnerabilidades.
- Núcleo:
wp wpvulnerability core - Plugins:
wp wpvulnerability plugins - Temas:
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
Para configurar el plugin puedes usar:
- Ocultar componente:
wp wpvulnerability config hide <component> [on|off] - Avisos por correo electrónico:
wp wpvulnerability config email <emails>(separado por comas) - Periodo de avisos:
wp wpvulnerability config period <never|daily|weekly> - Log retention:
wp wpvulnerability config log-retention <0|1|7|14|28>(in days) - Duración de la caché:
wp wpvulnerability config cache <1|6|12|24>(en horas)
Todos los comandos dan soporte a la opción --format para especificar el formato de salida.
--format=table: Muestra los resultados en formato de tabla (por defecto).--format=json: Muestra los resultados en formato JSON.
¿Necesitas ayuda?
wp wpvulnerability --help: Muestra información de ayuda para los comandos de WPVulnerability.wp wpvulnerability [comando] --help: Muestra información de ayuda para un comando WPVulnerability.
REST API
El plugin WPVulnerability proporciona varias rutas finales de la API REST para obtener información sobre vulnerabilidades de diferentes componentes de tu sitio WordPress.
- Core:
/wpvulnerability/v1/core - Plugins:
/wpvulnerability/v1/plugins - Themes:
/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
La API REST de WPVulnerability utiliza contraseñas de aplicación para identificación. Necesitas incluir una contraseña de aplicación válida en la cabecera de autorización de tus peticiones.
Ejemplo de solicitud con identificación
curl -X GET https://example.com/wp-json/wpvulnerability/v1/plugins -u username:application_password
Reemplaza nombre de usuario con tu username de WordPress y application_password con tu Contraseña de Aplicación.
Configuraciones Extra
“From:” de correo (desde: 3.2.2)
Si, por alguna razón, necesitas que los correos electrónicos enviados por el plugin tengan un From diferente al administrador del sitio, puedes cambiarlo desde el wp-config.php agregando una constante:
define( 'WPVULNERABILITY_MAIL', 'sender@example.com' );
Si la constante está activa, será visible en la pantalla de configuración
Forzar ocultación de comprobaciones (desde: 4.1.0)
Si quieres ocultar siempre un componente concreto, puedes definir una constante en wp-config.php. Si se establece en true, la opción se marcará automáticamente en la pantalla de configuración y se omitirá el análisis correspondiente.
Ejemplo:
define( 'WPVULNERABILITY_HIDE_APACHE', true );
Constantes disponibles: 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.
Duración de la caché (desde: 4.1.0)
Por defecto, los datos de la API se almacenan en caché durante 12 horas. Para cambiar esto, define WPVULNERABILITY_CACHE_HOURS en wp-config.php con uno de estos 1, 6, 12 o 24. Este valor anula la pantalla de configuración y el comando WP-CLI.
define( 'WPVULNERABILITY_CACHE_HOURS', 24 );
Log rotation (since: 4.2.0)
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.
Security configuration (since: 4.3.0)
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.
Compatibilidad
- WordPress: 5.6 – 7.1
- PHP: 7.0 – 8.5
- WP-CLI: 2.3.0 – 2.12.0
Seguridad
Este plugin se adhiere a las siguientes medidas de seguridad y protocolos de revisión para cada versión:
- Manual de plugins WordPress
- Seguridad de los plugins de WordPress
- Seguridad de las APIs de WordPress
- Normas de codificación de WordPress
- Plugin Check (PCP)
Privacidad
- Este plugin o la WordPress Vulnerability Database API no recoge ninguna información sobre tu sitio, tu identidad, los plugins, temas o contenidos que tiene el sitio.
Vulnerabilidades
- A security vulnerability was found and fixed in version 4.2.2.1. All previous versions (3.3.0 – 4.2.1) are affected. Please update to version 4.2.2.1 or later.
Found a security vulnerability? Please report it to us privately at ROBOTSTXT.
Colaboradores
You can contribute to this plugin at the WPVulnerability repository.
Capturas de pantalla



Instalación
Descarga automática
Visita la sección de plugins en tu WordPress, busca [wpvulnerability]; descarga e instala el plugin.
Descarga manual
Extrae el contenido del ZIP y sube el contenido al directorio /wp-content/plugins/wpvulnerability/. Una vez subido, aparecerá en tu lista de plugins.
FAQ
-
¿De dónde procede la información sobre la vulnerabilidad?
-
El origen está en la API de WPVulnerability.com. Las vulnerabilidades que aparecen en esta API provienen de diferentes fuentes, como los CVE.
-
¿Se envían los datos de mi sitio a alguna parte?
-
No. Nunca. Tu privacidad es muy importante para nosotros. No comercializamos con tus datos.
-
¿Qué vulnerabilidades voy a encontrar?
-
Se documentan vulnerabilidades en el núcleo de WordPress, plugins, temas, PHP, Apache HTTPD, nginx, MariaDB, MySQL, ImageMagick, curl, memcached, Redis y SQLite
-
¿Qué hago si mi sitio tiene una vulnerabilidad?
-
Primero que nada, tranquilidad. Investiga cuál es la vulnerabilidad y, sobre todo, comprueba que tienes la última versión del elemento comprometido. Te recomendamos activamente que mantengas todo tu WordPress y sus plugins actualizados. Contacta a tu proveedor de alojamiento para parchear vulnerabilidades que no son de WordPress (como el servidor web, bases de datos y otro software).
Reseñas
Colaboradores & Desarrolladores
“WPVulnerability” es software de código abierto. Las siguientes personas han contribuido a este plugin.
Colaboradores“WPVulnerability” ha sido traducido en 14 idiomas. Gracias a los traductores por sus contribuciones.
Traduce “WPVulnerability” a tu idioma.
¿Interesado en el desarrollo?
Revisa el código, echa un vistazo al repositorio SVN, o suscríbete al registro de desarrollo por RSS .
Historial de cambios
[5.1.2] – 2026-08-07
Corregido
- 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.
Agregado
- WordPress Playground blueprint (
blueprint.json) with pre-installed vulnerable plugins and a theme for quick testing.
Modificado
- 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.
Compatibilidad
- WordPress: 5.6 – 7.1
- PHP: 7.0 – 8.5
- WP-CLI: 2.3.0 – 2.12.0
Pruebas
- 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
Corregido
- 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.
Modificado
- 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.
Compatibilidad
- WordPress: 5.6 – 7.1
- PHP: 7.0 – 8.5
- WP-CLI: 2.3.0 – 2.12.0
Pruebas
- 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
Seguridad
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.
Corregido
- 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.
Modificado
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.
Compatibilidad
- WordPress: 5.6 – 7.1
- PHP: 7.0 – 8.5
- WP-CLI: 2.3.0 – 2.12.0
Pruebas
- 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
Si quieres ver el registro de cambios completo, visita el archivo changelog.txt.
