Image
Image

WPVulnerability

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:

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

Image
28 de enero de 2025 1 respuesta
Without a doubt, the most important plugin to install on your WordPress instance.
Image
17 de abril de 2024
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!
Image
8 de abril de 2024 1 respuesta
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.
Image
21 de febrero de 2024
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!
Leer todas las 19 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 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.

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.txt Changelog section now shows only the latest 3 versions; the full history remains in changelog.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 weekly solo se registraba en init, 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_notification en lugar de wpvulnerability_notification).
  • La marca de tiempo «última ejecución» de depuración siempre estaba vacía porque leía una opción wpvulnerability-logs que 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 bloque try y otra en finally); se eliminó el cierre redundante.
  • El recuento de temas vulnerables en sitio individual estaba fijado a 0 en 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_messages sin uso y su registro de ajuste, y una variable $tools_action sin 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 con in_array() en lugar de una coincidencia de subcadena con stripos() para la lista blanca de comandos de shell (defensa en profundidad).
  • wpvulnerability_detect_php(), wpvulnerability_detect_curl() y wpvulnerability_detect_webserver() ahora pasan por wpvulnerability_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 a shell_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ón 2>&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.php ahora define la constante antes de cargar wpvulnerability-run.php.
  • Las constantes WPVULNERABILITY_HIDE_* ahora detienen la detección con shell_exec para 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_NGINX y WPVULNERABILITY_HIDE_APACHE ahora 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ó caddy a la lista blanca, y la salida de which se valida como una ruta real para que los mensajes «comando no encontrado» no se confundan con una detección.

Modificado

  • Se añadió Network: true a la cabecera del plugin para declarar un comportamiento compatible con multisitio.
  • Se eliminó el parámetro $plugin_status sin uso de wpvulnerability_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 a wp-admin/site-health.php del 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.