| Nombre del plugin | BJ Carga Perezosa |
|---|---|
| Tipo de vulnerabilidad | Scripting entre sitios (XSS) |
| Número CVE | CVE-2026-2300 |
| Urgencia | Baja |
| Fecha de publicación de CVE | 2026-05-12 |
| URL de origen | CVE-2026-2300 |
XSS almacenado autenticado (Colaborador) en BJ Lazy Load (<= 1.0.9) — Lo que los propietarios de sitios de WordPress deben hacer ahora
Fecha: 2026-05-11 | Autor: Experto en Seguridad de Hong Kong | Etiquetas: WordPress, Vulnerabilidad, XSS, WAF, Seguridad
Resumen: Una vulnerabilidad de Cross-Site Scripting (XSS) almacenada (CVE-2026-2300) afecta a las versiones de BJ Lazy Load ≤ 1.0.9 y permite a un usuario autenticado con privilegios de Colaborador inyectar JavaScript persistente en un sitio. Aunque el riesgo inmediato se considera bajo a moderado (CVSS 6.5), el XSS almacenado puede ser aprovechado en ataques dirigidos o de cadena de suministro. Esta publicación explica la vulnerabilidad, el impacto en el mundo real, los pasos de detección y acciones concretas de mitigación y remediación utilizando estrategias de endurecimiento práctico y WAF (parcheo virtual) que puedes implementar de inmediato.
TL;DR — Qué sucedió y por qué deberías preocuparte
- Existe una vulnerabilidad de XSS almacenado en BJ Lazy Load (versiones ≤ 1.0.9). Un usuario autenticado con privilegios de Colaborador puede almacenar JavaScript que luego se renderiza y ejecuta en los navegadores.
- Complejidad del ataque: requiere una cuenta de Colaborador autenticada; las cargas útiles son persistentes y pueden ser activadas repetidamente.
- Severidad: CVSS 6.5 (media). El XSS almacenado aún puede permitir la escalada de privilegios, la toma de control de cuentas, la desfiguración persistente del sitio o la entrega de cargas útiles secundarias.
- Acciones inmediatas: restringir las capacidades de Colaborador, auditar contenido y medios recientes, aplicar parches virtuales con un WAF o filtro perimetral, y seguir la lista de verificación de remediación a continuación.
Esta guía está escrita desde la perspectiva de profesionales de seguridad con sede en Hong Kong, centrada en la contención y recuperación rápidas y prácticas para propietarios de sitios, anfitriones y desarrolladores.
Antecedentes: qué es el XSS almacenado y por qué importan las cuentas de Colaborador
Cross-Site Scripting (XSS) ocurre cuando datos no confiables se incluyen en una página sin la validación o escape adecuados, permitiendo que scripts proporcionados por atacantes se ejecuten en el navegador de una víctima.
El XSS almacenado (XSS persistente) ocurre cuando la carga útil maliciosa se guarda del lado del servidor (contenido de publicaciones, metadatos de medios, configuraciones de plugins, comentarios) y se devuelve a los clientes más tarde sin sanitización. Cada visitante — o un administrador específico — puede activar la carga útil al ver una página o interfaz de administración.
El rol de Colaborador en WordPress puede crear y editar publicaciones y, dependiendo de la configuración, puede subir archivos o llenar campos que los plugins renderizan. Si un plugin acepta la entrada de un Colaborador y la emite sin escapar, eso abre la puerta al XSS almacenado.
Lo que sabemos sobre este problema específico (a alto nivel)
- Afecta: plugin BJ Lazy Load (versiones ≤ 1.0.9)
- Tipo de vulnerabilidad: Cross-Site Scripting almacenado (XSS)
- Privilegio requerido: Contribuyente (autenticado)
- CVE: CVE-2026-2300
- Estado del parche en la publicación: No hay parche oficial del plugin disponible — los propietarios de sitios deben aplicar mitigaciones
Riesgo clave: cuentas de Colaborador maliciosas (o atacantes que comprometen cuentas de Colaborador) pueden guardar cargas útiles que se renderizan en el sitio o la interfaz de administración. Esas cargas útiles pueden actuar con contextos de nivel administrativo cuando se activan.
Escenarios de ataque: cómo un atacante podría abusar de esta vulnerabilidad
-
Contenido malicioso en los metadatos de la publicación o atributos de carga perezosa
Un Contribuyente sube una imagen o edita un campo que el plugin procesa. El plugin registra un atributo o pie de foto elaborado que incluye script o controladores de eventos, y luego lo emite sin escapar. Cuando los editores o visitantes cargan la página, el script se ejecuta.
-
Apuntando a usuarios administradores
Si las cargas útiles son visibles en las pantallas de administración (biblioteca de medios, configuraciones del plugin), ver la página como administrador puede ejecutar scripts inyectados utilizando la sesión del administrador para realizar acciones como cambiar opciones o crear usuarios.
-
Amplificación de ingeniería social
Las cargas útiles almacenadas persisten. Los atacantes pueden elaborar mensajes que atraigan a los administradores a páginas específicas (para revisión), aumentando las posibilidades de ejecución.
-
Ataques encadenados
El XSS almacenado puede robar cookies de sesión, crear cuentas de administrador o entregar cargas útiles secundarias como malware o redirecciones. Combinado con otros fallos, el impacto se escala rápidamente.
Por qué esto no es solo un problema cosmético de “baja gravedad”
Incluso cuando se califica como bajo/medio, el XSS almacenado es atractivo para los atacantes porque es persistente, puede dirigirse a administradores y puede usarse como un vector de entrada para campañas de cadena de suministro o masivas. Puede permitir el robo de datos, la criptominería, el robo de credenciales o la distribución de malware. Toma el XSS almacenado en serio y actúa con prontitud.
Pasos inmediatos para los propietarios del sitio: contención (primeros 60–120 minutos)
- Limitar el acceso: Poner el sitio en modo de mantenimiento o restringir el acceso de administrador para reducir la posibilidad de que una carga útil inyectada se ejecute en una sesión privilegiada.
- Restringir cuentas de Colaboradores: Cambiar las contraseñas de los Contribuyentes y revocar temporalmente los privilegios de Contribuyente. Si es posible, deshabilitar la capacidad de ‘upload_files’ para los Contribuyentes.
- Deshabilitar o eliminar el plugin vulnerable: Desactivar BJ Lazy Load desde la pantalla de Plugins. Si no puedes acceder al administrador, renombra la carpeta del plugin a través de SFTP/SSH (por ejemplo, wp-content/plugins/bj-lazy-load → bj-lazy-load.disabled) para forzar la desactivación.
- Aplicar filtrado perimetral / parcheo virtual: Usa tu firewall de aplicación web (WAF) o proxy inverso para bloquear solicitudes que incluyan etiquetas de script o cargas útiles sospechosas en áreas donde el plugin escribe (postmeta, pies de foto, atributos de carga perezosa). Consulta la sección de orientación del WAF para ejemplos de reglas.
- Auditar contenido reciente y cargas de medios: Buscar publicaciones sospechosas, metadatos de adjuntos que contengan “]+>" "t:none"