Releases: soyunomas/Secure-Image-Sequence-CAPTCHA
Release list
v1.6.0: Lanzamiento de Seguridad y Fortalecimiento
1.6.0
La versión 1.6.0 parte de la 1.5.0 y reúne el nuevo protocolo seguro del desafío, el endurecimiento posterior, la renovación del conjunto visual y la internacionalización. La primera revisión de seguridad de 1.6.0 conservaba las 34 imágenes y mostraba 7 candidatas; el paquete final, manteniendo la versión 1.6.0, incorpora 40 imágenes y una cuadrícula de 9 candidatas.
Correcciones críticas de seguridad
- Eliminada la resolución trivial del CAPTCHA mediante correlación del texto de la pregunta con los atributos
alt, nombres de archivo y rutas visibles en el HTML. - Las imágenes se sirven mediante un endpoint opaco vinculado al desafío; el navegador no recibe nombres de objetos, categorías ni rutas originales.
- Cada desafío queda ligado a una sesión anónima HttpOnly, al contexto del formulario y, cuando corresponde, al ID de la entrada.
- El desafío se consume atómicamente en el primer intento, sea correcto o incorrecto, impidiendo reintentos, replay y ataques por enumeración.
- Sustituido el uso de
wp_hashpor HMAC-SHA-256 con secreto del servidor y comparación en tiempo constante, apropiado para el pequeño espacio de soluciones. - La solución correcta deja de almacenarse en texto plano dentro del transitorio.
- Añadidos límites independientes para generación, validación y descarga de imágenes del CAPTCHA.
- Añadido un techo global por IP que no se puede eludir rotando la cookie de sesión anónima.
- El límite de fallos de comentarios bloquea efectivamente nuevas solicitudes y responde con HTTP 429.
- Corregida la confianza en cabeceras de proxy: solo se aceptan cuando
REMOTE_ADDRpertenece a un CIDR de proxy configurado explícitamente. - La cadena
X-Forwarded-Forse resuelve de derecha a izquierda, evitando direcciones falsas antepuestas por el cliente. - Rechazados CIDR globales inseguros como
0.0.0.0/0y::/0. - Rechazadas las cadenas múltiples en cabeceras de proxy configuradas para contener una sola dirección.
- Separados los fallos de CAPTCHA en comentarios de los contadores de bloqueo del inicio de sesión.
- Bloqueados por defecto los comentarios anónimos por REST y XML-RPC cuando la protección de comentarios está activa, evitando el bypass del formulario web.
- Corregido el callback de error XML-RPC para que sea públicamente invocable por WordPress.
- Restringida a administradores con
manage_optionsla gestión y asignación de categorías CAPTCHA personalizadas. - Añadida validación del MIME real, firma, tamaño, dimensiones y total de píxeles antes de decodificar imágenes personalizadas.
- Excluido SVG como fuente del CAPTCHA; las imágenes personalizadas quedan limitadas a formatos ráster permitidos.
Imágenes y experiencia de uso
- Sustituido el conjunto anterior de 34 imágenes por 40 ilustraciones semirrealistas coherentes, 10 en cada categoría de animales, frutas, objetos y vehículos.
- Las 40 ilustraciones se generaron individualmente con un modelo generativo, tomando el estilo anterior como referencia.
- Normalizadas todas las imágenes a PNG opaco de 256 × 256 píxeles, sin texto, logotipos ni marcas de agua.
- Ampliado el desafío de 7 a 9 candidatas distintas en una cuadrícula 3 × 3.
- Conservada la secuencia ordenada de respuesta de 4 imágenes sin duplicados.
- La décima imagen de cada grupo introduce variación entre desafíos.
- Añadidas transformaciones por desafío cuando PHP GD está disponible.
- Añadida una mutación segura del flujo codificado como alternativa cuando PHP GD no está disponible.
- Añadido manejo mediante teclado, foco visible, indicador del orden seleccionado, botón de reinicio y mensajes accesibles mediante
aria-live. - Añadido límite de selección en el frontend para impedir más de cuatro elecciones.
Idiomas
- Adoptado el inglés como idioma fuente y de reserva del plugin.
- Añadidos catálogos completos para español, alemán y francés.
- Traducidos los 40 nombres de las imágenes predefinidas.
- Traducidas la pregunta, las instrucciones, la accesibilidad, los estados dinámicos de JavaScript, los errores y la página de ajustes.
- Añadida reserva por familia de idioma para variantes regionales sin catálogo exacto, como
es_MX,de_ATofr_CA. - Las categorías personalizadas conservan como etiquetas los títulos definidos por el propietario en la biblioteca de medios.
Mantenimiento y compatibilidad
- Conservadas las opciones existentes de la versión 1.5.0.
- Restablecidas al modo seguro las configuraciones antiguas de cabeceras IP hasta que el administrador configure los CIDR de sus proxies reales.
- Invalidados los desafíos pendientes de versiones anteriores durante la actualización.
- Añadida limpieza horaria de marcadores antirrepetición.
- Conservada la limpieza completa de opciones, transitorios y taxonomía al desinstalar.
- Conservados archivos
index.phpdefensivos en los directorios del plugin. - Añadidas pruebas unitarias y de integración para HMAC, replay, consumo atómico, límites, rotación de cookies, proxy spoofing, CIDR, imágenes, internacionalización, sintaxis PHP/JavaScript y arranque del plugin.
- Protegidos los scripts PHP de prueba para que solo se ejecuten mediante CLI/phpdbg y respondan con 403 por HTTP.
- Mantenida la compatibilidad mínima con WordPress 5.8 y PHP 7.4.
v1.5.0: Lanzamiento de Seguridad y Fortalecimiento
Changelog v1.5.0
-
CORRECCIÓN DE SEGURIDAD: Corregida una vulnerabilidad de fuga de información (Information Disclosure) que exponía públicamente los nombres de las categorías del CAPTCHA a través de la API REST. El endpoint ha sido deshabilitado por defecto para prevenir la enumeración.
-
FORTALECIMIENTO DE SEGURIDAD (IP Spoofing): La lógica de detección de IP ha sido completamente reescrita para prevenir que un atacante pueda eludir un bloqueo falsificando cabeceras HTTP. La protección ahora es robusta incluso detrás de proxies inversos y CDNs como Cloudflare.
-
FORTALECIMIENTO DE SEGURIDAD (Hashed Solutions): Las soluciones correctas del CAPTCHA ahora se almacenan como hashes criptográficos (
wp_hash) en la base de datos. Esto elimina el almacenamiento de respuestas en texto plano, protegiendo las soluciones incluso si la base de datos se viera comprometida. -
MEJORA DE EXPERIENCIA (UX): Se ha añadido una herramienta de diagnóstico de IP en la página de ajustes. Esta herramienta ayuda a los administradores a seleccionar la fuente de IP correcta para su entorno de servidor, garantizando que el bloqueo de IP funcione correctamente.
-
MEJORA GENERAL: Añadida una rutina de limpieza completa en la desinstalación para eliminar los términos de la taxonomía y no dejar datos huérfanos en la base de datos.
-
MEJORA GENERAL (Hardening): Se han añadido archivos
index.phpvacíos en todos los directorios del plugin para prevenir el listado de directorios en servidores con una configuración de seguridad deficiente.
Versión 1.4.1: Actualización de Seguridad y Fiabilidad
Corrección de Seguridad: Se ha fortalecido la lógica de validación del formulario de inicio de sesión para prevenir la enumeración de usuarios. En versiones anteriores, un atacante podía verificar la existencia de nombres de usuario sin necesidad de resolver el CAPTCHA. Esta actualización asegura que la validación del CAPTCHA sea el primer paso, neutralizando este vector de ataque y mejorando significativamente la protección contra intentos de acceso automatizados.
Mejora de Resiliencia (Hardening): El mecanismo "Fail-Safe" ha sido rediseñado. Ahora, si el CAPTCHA no puede generarse usando "Imágenes Personalizadas", el plugin hará un fallback automático y seguro para usar los "Conjuntos de Imágenes Predefinidos" si están disponibles. Esto mantiene la protección del formulario activa en todo momento y previene una posible Denegación de Servicio (DoS) lógica.
Version 1.4.0: Stability Fix & UX Improvements.
- Corrección de Estabilidad: Solucionado un fallo que podía bloquear a los administradores fuera de su propio sitio si una categoría de imágenes personalizada no tenía el número mínimo de imágenes requerido.
- Implementado Mecanismo "Fail-Safe": Si el CAPTCHA no se puede generar por un error de configuración (ej., no hay ninguna categoría válida), el plugin ahora permitirá que los formularios (inicio de sesión, registro) se envíen, previniendo el bloqueo del sitio y priorizando el acceso del administrador.
- Mejora de UX (Avisos Inteligentes): El plugin ahora muestra avisos contextuales en la página de Ajustes: un error (rojo) si el CAPTCHA está inactivo por falta de imágenes, y una advertencia (amarillo) si algunas categorías están mal configuradas y están siendo ignoradas.
- Mejora de UX (Guía Contextual): Añadido un aviso informativo en la página "Medios -> Categorías CAPTCHA" para recordar al administrador el requisito mínimo de 6 imágenes.
- Refactorización de la Lógica de Generación: La selección de imágenes personalizadas ahora filtra proactivamente las categorías inválidas, asegurando que el CAPTCHA siempre use un conjunto de imágenes válido si existe alguno, mejorando la robustez general.
Versión 1.3.2 - Igualar imágenes 75x75
Esta es la versión estable 1.3.2 de Secure Image Sequence CAPTCHA.
Cambios Principales:
Corrección: Se han escalado todas las imagenes contenidas a 75x75. Se ha añadido que se aconsejan imágenes de menos de 100x100.
Para detalles completos sobre la instalación, configuración y uso, consulta el archivo README.md.
Compatibilidad:
Requiere WordPress 5.8+
Probado hasta WordPress 6.5
Requiere PHP 7.4+
Versión 1.3.1 - Corrección Contador Taxonomía
Esta es la versión estable 1.3.1 de Secure Image Sequence CAPTCHA.
Cambios Principales:
- Corrección: Mostrar correctamente el número de imágenes asociadas en la columna "Image Count" en la pantalla de administración de
Medios > Categorías CAPTCHA. - Ajuste: Refinamientos menores de código.
Para detalles completos sobre la instalación, configuración y uso, consulta el archivo README.md.
Compatibilidad:
- Requiere WordPress 5.8+
- Probado hasta WordPress 6.5
- Requiere PHP 7.4+