
Un exploit de prueba de concepto (PoC) para CVE-2025-70886, una vulnerabilidad persistente de denegación de servicio en Halo CMS (v2.22.4 y versiones anteriores) que permite a atacantes remotos bloquear la interfaz de comentarios del panel de administración mediante el envío de cargas malformadas.
Un exploit de Prueba de Concepto (PoC) para CVE-2025-70886, una vulnerabilidad de denegación de servicio persistente en Halo CMS (v2.22.4 y anteriores) que permite a atacantes remotos bloquear la interfaz de comentarios del administrador mediante el envío de payloads malformados.
Un problema en Halo v2.22.4 y anteriores permite a un atacante remoto causar una denegación de servicio mediante un payload manipulado enviado al endpoint público de envío de comentarios.
Un atacante puede enviar un payload de comentario manipulado/malformado (con campos faltantes como subjectRef.version) a través del endpoint público de envío de comentarios. El comentario malformado se almacena y posteriormente desencadena una excepción no controlada cuando la página de comentarios del administrador lo lee/representa, lo que resulta en una denegación de servicio persistente para la página de gestión de comentarios hasta que el registro problemático se elimine o se corrija la validación/manejo en el lado del servidor.
Al final de la ejecución, el trabajo Summary publica una tabla que muestra cada versión de Halo y su estado:
likely_vulnerable — la API devolvió HTTP 500 durante la comprobación.not_confirmed — la API no devolvió HTTP 500.⚠️ Advertencia: Solo para entornos de pruebas autorizados
Clonar el repositorio del PoC
git clone https://github.com/HowieHz/CVE-2025-70886
cd CVE-2025-70886
Desplegar una instancia de prueba de Halo CMS
Inicializar el sistema
Ejecutar el script del PoC (Asegurarse de que el entorno Node.js esté configurado.)
node src/poc.js --base-url http://localhost:8090 --payload fixtures/payload.sample.json
Opciones disponibles:
--base-url: URL base del sitio Halo (p. ej., http://localhost:8090)--payload: Ruta a un archivo JSON con un payload de comentario válido capturado--dry-run: Solo imprime el payload modificado, no lo envía--header: Cabecera adicional en formato 'Key: Value' (repetible)--help: Mostrar ayudaVerificar la vulnerabilidad