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> - Retención de registros:
wp wpvulnerability config log-retention <0|1|7|14|28>(en días) - 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 añadiendo 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 );
Rotación de registros (desde: 4.2.0)
WPVulnerability almacena las respuestas más recientes de la API para que puedas revisar las llamadas recientes desde la nueva pestaña de registros. Define WPVULNERABILITY_LOG_RETENTION_DAYS en wp-config.php para controlar cuántos días de entradas se conservan. Los valores admitidos son 0, 1, 7, 14 o 28; usar 0 desactiva el registro por completo.
define( 'WPVULNERABILITY_LOG_RETENTION_DAYS', 14 );
Cuando la constante está presente, su valor se aplica en la interfaz de configuración y a través de WP-CLI, garantizando una rotación de registros coherente en todos los entornos.
Configuración de seguridad (desde: 4.3.0)
WPVulnerability utiliza un enfoque de detección híbrido para el software del servidor (ImageMagick, Redis, Memcached, SQLite): extensiones PHP primero (más seguro), y comandos de shell como alternativa (más preciso). Puedes controlar este comportamiento mediante constantes de configuración de seguridad en wp-config.php.
Desactivación global de comandos de shell:
define( 'WPVULNERABILITY_DISABLE_SHELL_EXEC', true );
Desactiva por completo el uso de comandos de shell. Recurre únicamente a extensiones PHP. Úsalo para obtener la máxima seguridad cuando la pérdida de precisión sea aceptable.
Modo de seguridad (standard/strict/disabled):
define( 'WPVULNERABILITY_SECURITY_MODE', 'strict' );
standard– Detección híbrida: extensiones PHP primero, comandos de shell como alternativa (por defecto, mayor precisión)strict– Solo extensiones PHP, sin comandos de shell (alta seguridad, menor precisión)disabled– Sin detección de software en absoluto (máxima seguridad)
Lista blanca de componentes:
define( 'WPVULNERABILITY_SHELL_EXEC_WHITELIST', 'imagemagick,redis' );
Permite comandos de shell solo para los componentes especificados. Componentes disponibles: imagemagick, redis, memcached, sqlite. Úsalo para un control granular.
Ejemplos:
Máxima seguridad (sin comandos de shell):
define( 'WPVULNERABILITY_SECURITY_MODE', 'strict' );
Permitir solo la detección de shell de ImageMagick:
define( 'WPVULNERABILITY_SHELL_EXEC_WHITELIST', 'imagemagick' );
Desactivación completa:
define( 'WPVULNERABILITY_DISABLE_SHELL_EXEC', true );
Todos los comandos de shell están predefinidos y validados; no interviene ninguna entrada del usuario. Los comandos se registran para auditoría de seguridad.
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
- Se encontró y corrigió una vulnerabilidad de seguridad en la versión 4.2.2.1. Todas las versiones anteriores (3.3.0 – 4.2.1) están afectadas. Actualiza a la versión 4.2.2.1 o posterior.
¿Has encontrado una vulnerabilidad de seguridad? Por favor, comunícanosla de forma privada a ROBOTSTXT.
Colaboradores
Puedes contribuir a este plugin desde el repositorio de WPVulnerability.
Capturas



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 y desarrolladores
«WPVulnerability» es un software de código abierto. Las siguientes personas han colaborado con este plugin.
Colaboradores«WPVulnerability» está 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.
Registro 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.
Añadido
- 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 (nivel 9, 0 errores)
- PHPUnit: 9.6.34 (25 tests)
[5.1.1] – 2026-07-09
Corregido
- Salud del sitio: las pruebas de vulnerabilidad de memcached, Redis y SQLite siempre devolvían «Tipo de software no válido» porque esos componentes faltaban en la lista de software. Ahora se ejecutan correctamente.
- «Enviar correo de prueba» fallaba cuando no había destinatarios de correo configurados: la ruta de prueba forzada añadía el correo del administrador, pero la comprobación de envío usaba un indicador calculado antes de esa anulación. El correo de prueba ahora se envía correctamente.
- «Ejecutar notificación ahora» informaba de un fallo cuando solo estaban activados los canales de webhook (Slack/Teams/Discord/Telegram) y el correo estaba desactivado. El resultado de la notificación ahora refleja si algún canal se entregó correctamente.
- Los eventos cron de notificación semanal nunca se programaban automáticamente, porque la programación cron
weeklysolo se registraba eninit, mientras que la programación en la carga se ejecuta antes. El registro de la programación semanal/diaria se trasladó al planificador que se carga siempre, para que las notificaciones semanales se programen correctamente. - La desactivación eliminaba la configuración de análisis por componente (
wpvulnerability-analyze), por lo que desactivar y reactivar restablecía qué componentes estaban ocultos. Ahora la configuración de análisis se conserva al desactivar (solo la desinstalación la elimina). - El panel de depuración «Estado de cron» siempre mostraba el evento de notificación como «no programado» porque comprobaba un nombre de hook incorrecto (
wpvulnerability_send_notificationen lugar dewpvulnerability_notification). - La marca de tiempo «última ejecución» de depuración siempre estaba vacía porque leía una opción
wpvulnerability-logsque nunca se escribe; ahora lee la entrada de registro de la API más reciente. - La detección de Redis llamaba a
close()dos veces en la ruta de éxito (una vez en el bloquetryy otra enfinally); se eliminó el cierre redundante. - El recuento de temas vulnerables en sitio individual estaba fijado a
0en lugar de leer la opción almacenada.
Modificado
- La sanitización de destinatarios de correo en sitio individual ahora usa
is_email()para una validación estricta, igualando el comportamiento de multisitio. - Se eliminó un campo de nonce redundante del formulario «Restablecer plugin» de sitio individual (el formulario solo envía la acción de restablecimiento completo).
- Se eliminó código muerto: la función de retorno
wpvulnerability_sanitize_messagessin uso y su registro de ajuste, y una variable$tools_actionsin uso en la administración de multisitio.
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 (nivel 9, 0 errores)
- PHPUnit: 9.6.34 (25 tests)
[5.1.0] – 2026-07-08
Seguridad
wpvulnerability_validate_shell_command()ahora usa una coincidencia exacta conin_array()en lugar de una coincidencia de subcadena constripos()para la lista blanca de comandos de shell (defensa en profundidad).wpvulnerability_detect_php(),wpvulnerability_detect_curl()ywpvulnerability_detect_webserver()ahora pasan porwpvulnerability_safe_shell_exec(), de modo que cada llamada de shell de detección de software se valida y se registra en el registro de auditoría de ejecución de shell. Antes llamaban directamente ashell_exec(), saltándose el envoltorio y el registro de auditoría. Como efecto secundario, esto también corrige la detección de la versión de nginx/angie:escapeshellcmd()escapaba la redirección2>&1, por lo que stderr (donde nginx imprime su versión) nunca se capturaba.
Corregido
- Error fatal en la desinstalación de multisitio:
Uncaught Error: Undefined constant "WPVULNERABILITY_PLUGIN_BASE"cuando estaba activada la opción «Eliminar todos los datos del plugin al desinstalar».uninstall.phpahora define la constante antes de cargarwpvulnerability-run.php. - Las constantes
WPVULNERABILITY_HIDE_*ahora detienen la detección conshell_execpara los componentes ocultos durante los análisis programados y en el panel de administración «Métodos de detección de software». Antes solo ocultaban los resultados en la interfaz, por lo que el registro de auditoría se seguía llenando de entradas «comando no encontrado» para componentes que el administrador había desactivado explícitamente. wpvulnerability_detect_webserver()ya no sondea mediante shell un servidor web oculto a través de la ruta hermana:WPVULNERABILITY_HIDE_NGINXyWPVULNERABILITY_HIDE_APACHEahora aíslan por completo el servidor oculto.- Las peticiones cron de multisitio en subsitios que no son el principal ya no cargan todos los archivos de módulos del plugin. No se programa ningún evento cron de WPVulnerability en los subsitios, por lo que esa carga adicional era trabajo innecesario.
- La detección por shell de LiteSpeed / OpenLiteSpeed / Caddy en el panel de diagnóstico de WP_DEBUG ahora funciona: los comandos ya no usan
2>/dev/null(que el validador de comandos de shell rechazaba), se añadiócaddya la lista blanca, y la salida dewhichse valida como una ruta real para que los mensajes «comando no encontrado» no se confundan con una detección.
Modificado
- Se añadió
Network: truea la cabecera del plugin para declarar un comportamiento compatible con multisitio. - Se eliminó el parámetro
$plugin_statussin uso dewpvulnerability_plugin_info_after(); la suite de PHPCS ahora pasa sin ningún aviso. - Escritorio de red multisitio: el enlace del pie de página «Salud del sitio» apuntaba a
wp-admin/network/site-health.php, que no existe (Salud del sitio es una pantalla por sitio). Ahora enlaza awp-admin/site-health.phpdel sitio principal.
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 (nivel 9, 0 errores)
- PHPUnit: 9.6.34 (18 pruebas)
Versiones anteriores
Si quieres ver el registro de cambios completo, visita el archivo changelog.txt.
