Detecção e remediação em uma única execução para servidores cPanel/WHM comprometidos via CVE-2026-41940, incluindo verificações de IOC, limpeza de malware, bloqueio de C2 e aplicação de patches.
Detecção e remediação em uma única execução para servidores cPanel/WHM comprometidos via CVE-2026-41940 e a campanha do botnet
nuclear.x86.
Em 28 de abril de 2026, a cPanel divulgou uma vulnerabilidade de bypass de autenticação pré-autenticação (CVE-2026-41940, CVSS 9.8) que afeta todas as versões suportadas de cPanel & WHM após a 11.40. Uma única requisição HTTP para a porta 2087 permite que um atacante não autenticado injete uma sessão user=root e entre diretamente no WHM.
A exploração tem sido observada na natureza — seis semanas antes do patch ser lançado. A campanha que limpamos em vários servidores instala um botnet Linux chamado juntamente com um minerador de criptomoedas baseado em XMRig.
nuclear.x86Este repositório contém um único script Bash que:
/scripts/upcp --forceFoi projetado para provedores de hospedagem, administradores de sistemas e revendedores cPanel que precisam fazer triagem de uma frota rapidamente.
Se wget ou curl retornarem Killed ao tentar baixar arquivos, o malware ainda está em execução — o nuclear.x86 mata ativamente ferramentas de download para impedir a limpeza. Execute a etapa de kill primeiro (o script faz isso por você no modo --fix).
Se você não conseguir baixar este script por causa disso, copie e cole via SSH a partir do seu laptop, ou use scp.
# Como root, no 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
Ou com 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
Comando único (revise o script primeiro, depois execute):
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
# Após revisar, execute:
./fix-cpanel-cve-2026-41940.sh
Verifique antes de executar. Este script roda como root e modifica o estado do sistema. Abra-o e leia-o primeiro. Não envie scripts aleatórios da internet diretamente para o
bash.
# 1. Somente verificação (padrão, sem alterações — sempre seguro de executar)
./fix-cpanel-cve-2026-41940.sh
# 2. Verificação + remediação, com prompt de confirmação para cada ação destrutiva
./fix-cpanel-cve-2026-41940.sh --fix
# 3. Automático completo: correção + atualização do cPanel + limpeza de cache + endurecimento leve
./fix-cpanel-cve-2026-41940.sh --auto
# 4. Sem supervisão (sem prompts — para cron, jump-boxes, scripts de frota)
./fix-cpanel-cve-2026-41940.sh --auto -y
# 5. Ajuda
./fix-cpanel-cve-2026-41940.sh --help
| Código | Significado |
|---|---|
0 | Limpo — nenhum IOC detectado |
2 | Indicadores de comprometimento detectados (revise o relatório) |
1 / outro | Falha de pré-execução (não é root, não é um servidor cPanel, etc.) |
/var/log/cpanel-cve-fix/scan-<TIMESTAMP>.log/var/log/cpanel-cve-fix/report-<TIMESTAMP>.txt/root/cve-cleanup-backup-<TIMESTAMP>/| # | Verificação | O que detecta |
|---|---|---|
| 1 | Build do cPanel vs. versões corrigidas | Hosts vulneráveis (lista todas as 6 builds corrigidas) |
| 2 | Processos em execução | nuclear.x86, xmrig, cpuminer, minerd, xmr-stak, 4thepool_miner |
| 3 | Conexões de rede ativas | Os três IPs de C2 conhecidos + portas de mining-pool |
| 4 | Arquivos de histórico do shell | Comandos IOC em bash_history / zsh_history |
| 5 | Sanidade do firewall | A etapa de sabotagem iptables -F |
| 6 | Diretório raw de sessões do cPanel | Arquivos de sessão forjados user=root |
| 7 | /tmp, /var/tmp, /dev/shm | Executáveis recentemente depositados |
| 8 | Entradas de cron | Persistência (sistema + por usuário) |
| 9 | Arquivos authorized_keys | Novas chaves SSH — auditoria somente leitura |
| 10 | Logs de acesso do cPanel | Assinaturas de exploração Go-http-client / python-requests |
| 11 | Binários críticos | wget / curl / ls / ps adulterados (mtime + verificação RPM) |
/var/cpanel/sessions/raw/* (com backup tar.gz primeiro)cpsrvd, cpdavd, cphulkd, queueprocd, dnsadmin/scripts/upcp --force (somente em --auto)rndc flush), logs antigos do journalLF_INTEGRITY se disponívelEstas ações causariam mais dano do que benefício quando executadas sem supervisão via SSH, então elas vão para o relatório de ações manuais:
/home/*/public_htmlPara varrer muitos servidores a partir de uma 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
Depois, filtre os relatórios:
grep -l "COMPROMISE INDICATORS PRESENT" reports/*
O script listará estas ações no relatório. Nenhuma delas pode ser automatizada com segurança.
/etc/shadow)wp-config.php, .env, config.php, etc./home/*/public_html em busca de web-shells (arquivos .php modificados recentemente)Você precisa estar em ou acima de uma destas builds:
| Track | Build corrigida |
|---|---|
| 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 |
Verifique a sua com /usr/local/cpanel/cpanel -V.
| Tipo | Indicador |
|---|---|
| IP | 87.121.84.78 (drop do nuclear.x86) |
| IP | 45.148.120.23 (drop alternativo do nuclear.x86) |
| IP | 31.57.109.131 (script do minerador) |
| Arquivo | nuclear.x86 (ELF derivado do Mirai) |
| Processo | nuclear.x86 xd |
| Script | 4thepool_miner.sh |
| User-Agent | Go-http-client/1.1 atingindo a porta 2087 |
| User-Agent | python-requests/* atingindo a porta 2087 |
| Padrão | Novo arquivo em /var/cpanel/sessions/raw/ contendo user=root sem login bem-sucedido correspondente em login_log |
| Padrão | Conjunto de regras iptables vazio / limpo |
É seguro executar em um servidor saudável? Sim. O modo padrão é somente verificação e não faz alterações. Os modos de correção e automático são idempotentes.
Isso causará tempo de inatividade?
--fix causa uma breve interrupção do WHM/cPanel quando reinicia o cpsrvd (~10 segundos). --auto executa /scripts/upcp --force que pode levar de 10 a 30 minutos — os sites permanecem no ar durante isso, mas o WHM fica brevemente indisponível no final.
Minha versão do cPanel não está na lista de corrigidas — estou seguro? Se você está em um track mais antigo que 110.0.x, você está em uma versão de fim de vida. A cPanel não lançará um patch. Trate o host como comprometido até prova em contrário e atualize com urgência.
O script diz Killed quando tenta fazer qualquer coisa.
Isso é o nuclear.x86 matando ativamente suas ferramentas. Execute a etapa de kill manualmente primeiro:
pkill -9 -f nuclear.x86
Depois, execute o script novamente.
Isso funciona em AlmaLinux / Rocky / CloudLinux / CentOS? Sim — todas as plataformas cPanel padrão. Testado em AlmaLinux 8, Rocky 9, CloudLinux 7+.
Isso vai tocar nos sites dos meus clientes?
Não. O script não modifica nada em /home/*/public_html. Ele apenas toca em configuração de nível de SO, sessões do cPanel, regras de firewall e processos conhecidos como maliciosos.
PRs são bem-vindos — particularmente para:
Por favor, não adicione nada que rotacione credenciais automaticamente ou exclua dados de usuário — manter a superfície destrutiva estreita é intencional.
MIT. Use, faça fork, integre em suas próprias ferramentas. Atribuição é apreciada, mas não obrigatória.
Construído por WHMCSPilot.com — SM.
Crédito pela pesquisa da vulnerabilidade: equipe de segurança da cPanel, watchTowr Labs, Rapid7, KnownHost e a comunidade de hospedagem em geral que compartilhou IOCs conforme a campanha se desenrolava.
Este script é fornecido como está, sem garantia. É uma ferramenta de triagem de primeira resposta — não um substituto para um engajamento completo de resposta a incidentes. Se você lida com PII, dados de pagamento ou outros dados regulamentados, consulte seu DPO e uma empresa qualificada de resposta a incidentes antes de declarar um servidor comprometido como limpo.
Se um servidor foi ativamente comprometido, o caminho mais seguro é sempre reconstruir a partir de um backup conhecido como bom, não limpar no local.