Detección y remediación en un solo paso para servidores cPanel/WHM comprometidos mediante CVE-2026-41940, incluyendo comprobaciones de IOC, limpieza de malware, bloqueo de C2 y parcheo.
Detección y remediación en un solo paso para servidores cPanel/WHM comprometidos mediante CVE-2026-41940 y la campaña del botnet
nuclear.x86.
El 28 de abril de 2026, cPanel reveló una vulnerabilidad de omisión de autenticación pre-autenticación (CVE-2026-41940, CVSS 9.8) que afecta a todas las versiones compatibles de cPanel y WHM posteriores a la 11.40. Una única petición HTTP al puerto 2087 permite a un atacante no autenticado inyectar una sesión user=root y acceder directamente a WHM.
Se ha observado explotación activa en el mundo real , seis semanas antes de que se publicara el parche. La campaña que hemos limpiado en múltiples servidores instala un botnet Linux llamado junto con un minero de criptomonedas basado en XMRig.
nuclear.x86Este repositorio contiene un único script Bash que:
/scripts/upcp --forceEstá diseñado para proveedores de hosting, administradores de sistemas y revendedores de cPanel que necesitan hacer un triaje rápido de un parque de servidores.
Si wget o curl devuelven Killed al intentar descargar archivos, el malware sigue en ejecución — nuclear.x86 mata activamente las herramientas de descarga para impedir la limpieza. Ejecuta primero el paso de eliminación (el script lo hace por ti en el modo --fix).
Si no puedes descargar este script por ese motivo, cópialo y pégalo por SSH desde tu portátil, o usa scp.
# Como root, en el servidor cPanel:
cd /root
wget https://raw.githubusercontent.com/shahidmallaofficial/cpanel-cve-2026-41940-fix/main/fix-cpanel-cve-2026-41940.sh
chmod +x fix-cpanel-cve-2026-41940.sh
O con curl:
cd /root
curl -fsSLO https://raw.githubusercontent.com/shahidmallaofficial/cpanel-cve-2026-41940-fix/main/fix-cpanel-cve-2026-41940.sh
chmod +x fix-cpanel-cve-2026-41940.sh
Una sola línea (revisa el script primero y luego ejecútalo):
cd /root && \
curl -fsSLO https://raw.githubusercontent.com/shahidmallaofficial/cpanel-cve-2026-41940-fix/main/fix-cpanel-cve-2026-41940.sh && \
chmod +x fix-cpanel-cve-2026-41940.sh && \
less fix-cpanel-cve-2026-41940.sh
# Después de revisarlo, ejecútalo:
./fix-cpanel-cve-2026-41940.sh
Verifica antes de ejecutar. Este script se ejecuta como root y modifica el estado del sistema. Ábrelo y léelo primero. No canalices scripts aleatorios de internet directamente a
bash.
# 1. Solo escaneo (por defecto, sin cambios — siempre seguro de ejecutar)
./fix-cpanel-cve-2026-41940.sh
# 2. Escaneo + remediación, con una solicitud de confirmación para cada acción destructiva
./fix-cpanel-cve-2026-41940.sh --fix
# 3. Automático completo: arreglo + actualización de cPanel + limpieza de caché + endurecimiento ligero
./fix-cpanel-cve-2026-41940.sh --auto
# 4. Sin supervisión (sin solicitudes — para cron, jump-boxes, scripts de flota)
./fix-cpanel-cve-2026-41940.sh --auto -y
# 5. Ayuda
./fix-cpanel-cve-2026-41940.sh --help
| Código | Significado |
|---|---|
0 | Limpio — no se detectaron IOCs |
2 | Indicadores de compromiso detectados (revisa el informe) |
1 / otros | Fallo previo al vuelo (no es root, no es un servidor cPanel, etc.) |
/var/log/cpanel-cve-fix/scan-<TIMESTAMP>.log/var/log/cpanel-cve-fix/report-<TIMESTAMP>.txt/root/cve-cleanup-backup-<TIMESTAMP>/| # | Comprobación | Qué detecta |
|---|---|---|
| 1 | Versión de cPanel vs. versiones parcheadas | Hosts vulnerables (lista las 6 versiones parcheadas) |
| 2 | Procesos en ejecución | nuclear.x86, xmrig, cpuminer, minerd, xmr-stak, 4thepool_miner |
| 3 | Conexiones de red activas | Las tres IPs de C2 conocidas + puertos de mining-pool |
| 4 | Archivos de historial de shell | Comandos IOC en bash_history / zsh_history |
| 5 | Integridad del firewall | El paso de sabotaje iptables -F |
| 6 | Directorio raw de sesiones de cPanel | Archivos de sesión falsificados user=root |
| 7 | /tmp, /var/tmp, /dev/shm | Ejecutables recientemente colocados |
| 8 | Entradas de cron | Persistencia (sistema + por usuario) |
| 9 | Archivos authorized_keys | Nuevas claves SSH — auditoría de solo lectura |
| 10 | Registros de acceso de cPanel | Firmas de explotación Go-http-client / python-requests |
| 11 | Binarios críticos | wget / curl / ls / ps manipulados (mtime + verificación RPM) |
/var/cpanel/sessions/raw/* (con copia de seguridad tar.gz primero)cpsrvd, cpdavd, cphulkd, queueprocd, dnsadmin/scripts/upcp --force (solo en --auto)rndc flush), los registros antiguos de journalLF_INTEGRITY de CSF si está disponibleEstas acciones causarían más daño que beneficio si se ejecutan sin supervisión por SSH, así que van al informe de acciones manuales en su lugar:
/home/*/public_htmlPara barrer muchos servidores desde una jump-box:
mkdir -p reports
while read -r host; do
echo "=== $host ==="
scp fix-cpanel-cve-2026-41940.sh "root@${host}:/root/" >/dev/null
ssh "root@${host}" '/root/fix-cpanel-cve-2026-41940.sh --auto -y'
scp "root@${host}:/var/log/cpanel-cve-fix/report-*.txt" "reports/${host}.txt" 2>/dev/null
done < servers.txt
Luego filtra los informes:
grep -l "COMPROMISE INDICATORS PRESENT" reports/*
El script listará estas acciones en su informe. Ninguna de ellas puede automatizarse de forma segura.
/etc/shadow)wp-config.php, .env, config.php, etc./home/*/public_html en busca de web-shells (archivos .php modificados recientemente)Debes estar en una de estas versiones o superior:
| Canal | Versión parcheada |
|---|---|
| 110.0.x | 11.110.0.97 |
| 118.0.x | 11.118.0.63 |
| 126.0.x | 11.126.0.54 |
| 132.0.x | 11.132.0.29 |
| 134.0.x | 11.134.0.20 |
| 136.0.x | 11.136.0.5 |
| WP² | 11.136.1.7 |
Comprueba la tuya con /usr/local/cpanel/cpanel -V.
| Tipo | Indicador |
|---|---|
| IP | 87.121.84.78 (drop de nuclear.x86) |
| IP | 45.148.120.23 (drop alternativo de nuclear.x86) |
| IP | 31.57.109.131 (script del minero) |
| Archivo | nuclear.x86 (ELF derivado de Mirai) |
| Proceso | nuclear.x86 xd |
| Script | 4thepool_miner.sh |
| User-Agent | Go-http-client/1.1 golpeando el puerto 2087 |
| User-Agent | python-requests/* golpeando el puerto 2087 |
| Patrón | Nuevo archivo en /var/cpanel/sessions/raw/ que contiene user=root sin un inicio de sesión exitoso correspondiente en login_log |
| Patrón | Conjunto de reglas iptables vacío / vaciado |
¿Es seguro ejecutarlo en un servidor sano? Sí. El modo por defecto es solo escaneo y no realiza cambios. Los modos de arreglo y automático son idempotentes.
¿Causará tiempo de inactividad?
--fix causa una breve interrupción de WHM/cPanel cuando reinicia cpsrvd (~10 segundos). --auto ejecuta /scripts/upcp --force, que puede tardar entre 10 y 30 minutos — los sitios web permanecen activos durante este proceso, pero WHM no está disponible brevemente al final.
Mi versión de cPanel no está en la lista de parcheadas — ¿estoy a salvo? Si estás en un canal anterior a 110.0.x, estás en una versión fuera de soporte. cPanel no publicará un parche. Trata el host como comprometido hasta que se demuestre lo contrario y actualiza con urgencia.
El script dice Killed cuando intenta hacer cualquier cosa.
Eso es nuclear.x86 matando activamente tus herramientas. Ejecuta el paso de eliminación manualmente primero:
pkill -9 -f nuclear.x86
Luego vuelve a ejecutar el script.
¿Funciona en AlmaLinux / Rocky / CloudLinux / CentOS? Sí — todas las plataformas estándar de cPanel. Probado en AlmaLinux 8, Rocky 9, CloudLinux 7+.
¿Tocará los sitios web de mis clientes?
No. El script no modifica nada en /home/*/public_html. Solo toca la configuración a nivel de sistema operativo, las sesiones de cPanel, las reglas de firewall y los procesos conocidos como maliciosos.
Se aceptan PRs — especialmente para:
Por favor, no añadas nada que rote credenciales automáticamente o elimine datos de usuario — mantener reducida la superficie destructiva es intencional.
MIT. Úsalo, hazle fork, intégralo en tus propias herramientas. Se agradece la atribución, pero no es obligatoria.
Construido por WHMCSPilot.com — SM.
Crédito de la investigación de la vulnerabilidad: equipo de seguridad de cPanel, watchTowr Labs, Rapid7, KnownHost y la comunidad de hosting en general que compartió IOCs a medida que se desarrollaba la campaña.
Este script se proporciona tal cual, sin garantía. Es una herramienta de triaje de primera respuesta — no un sustituto de un compromiso completo de respuesta a incidentes. Si manejas PII, datos de pago u otros datos regulados, consulta a tu DPO y a una firma de IR cualificada antes de declarar limpio un equipo comprometido.
Si un servidor ha sido comprometido activamente, la vía más segura es siempre reconstruir desde una copia de seguridad conocida-buena, no limpiar en el lugar.