
Plantilla de detección de Nuclei para CVE-2026-41473, una vulnerabilidad de acceso no autenticado de lectura/escritura a la API en CyberPanel AI Scanner anterior a 2.4.4. Utiliza dos sondas HTTP para confirmar la falta de autenticación.
Plantilla de detección de Nuclei para CVE-2026-41473 que afecta a versiones de CyberPanel anteriores a 2.4.4.
La función AI Scanner de CyberPanel expone dos endpoints de API sin autenticación:
| Endpoint | Método | Impacto |
|---|---|---|
/api/ai-scanner/list-api-keys | GET | Expone nombres de usuario de administrador, prefijos de claves de API, nombres de dominio alojados e IDs de escaneo |
/api/ai-scanner/callback | POST | Acepta escrituras arbitrarias en el historial de escaneo sin autenticación |
Ambos endpoints se encuentran bajo el prefijo de URL /api/*, que el secMiddleware de CyberPanel exime incondicionalmente de las comprobaciones de autenticación de sesión. No se requiere ningún token, cookie de sesión ni credenciales de ningún tipo para acceder a cualquiera de los dos endpoints.
El endpoint de lectura permite la enumeración de objetivos. El endpoint de escritura permite corromper el historial de escaneo y, cuando se combina con el XSS almacenado en el panel de AI Scanner (CVE-2026-41472), logra ejecución remota de código no autenticada mediante la manipulación de trabajos cron.
CVSS 3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — 9.8 Crítico
CWE: CWE-306 (Falta de autenticación para función crítica)
Corregido en: CyberPanel 2.4.4 (commit 8eb29181cb137baa4adb4bba5dce60f601d55a5f)
La plantilla envía dos solicitudes:
Solicitud 1 — GET /api/ai-scanner/list-api-keys
Confirma que el objetivo es una instancia de CyberPanel con la función AI Scanner habilitada y el endpoint de lectura desprotegido. Coincide con la estructura JSON (api_keys, recent_scans, is_payment_configured) con HTTP 200. Extrae nombres de usuario de administrador, prefijos de claves de API, nombres de dominio e IDs de escaneo como salidas con nombre.
Solicitud 2 — POST /api/ai-scanner/callback con cuerpo vacío {}
Sondea el endpoint de escritura sin realizar ninguna escritura real. Un cuerpo vacío significa que no hay scan_id, por lo que el servidor no puede coincidir ni modificar ningún registro ScanHistory existente. En un servidor vulnerable (< 2.4.4), la comprobación de autenticación se omite y Django devuelve HTTP 400 con scan_id en el cuerpo del error — el servidor alcanzó la validación de entrada sin haber aplicado nunca la autenticación. En un servidor parcheado (≥ 2.4.4), la comprobación de la cabecera X-API-Key se ejecuta primero y devuelve HTTP 401 antes de que se lea scan_id.
La coincidencia requiere todo lo siguiente:
scan_id en el cuerpo de la respuesta + tipo de contenido application/jsonEsta combinación confirma que se alcanzó la lógica de AI Scanner de CyberPanel en ambas solicitudes sin que se aplicara autenticación, al tiempo que descarta bloqueos de WAF, errores de proxy inverso y respuestas 400 no relacionadas.
nuclei -t cyberpanel-aisscanner-unauth-rw-cve-2026-41473.yaml -u https://target:8090
# Against a list of targets
nuclei -t cyberpanel-aisscanner-unauth-rw-cve-2026-41473.yaml -l targets.txt
| Versión | Estado |
|---|---|
| CyberPanel < 2.4.4 con AI Scanner | Vulnerable |
| CyberPanel ≥ 2.4.4 | Parcheado |
| CyberPanel sin el módulo AI Scanner | No afectado |
Las instancias de CyberPanel sin la función AI Scanner (generalmente versiones anteriores a 2.3) no coincidirán: el endpoint list-api-keys devolverá 404 y la plantilla no se activará.