--- name: Incidente CVE-2026-41940 + invasao 2026-04-30 description: Exploracao auth bypass cPanel CVSS 9.8, atacante 2 meses persistente, IOCs/cleanup completo, lockdown type: project originSessionId: ba21bdb2-7c07-4448-8c84-eae158aee51f --- # Incidente Seguranca 2026-04-30 — CVE-2026-41940 ## Origem - **CVE-2026-41940** (CVSS 9.8): auth bypass em cPanel via CRLF injection em login + sessao - **Zero-day explorado desde 23/Fev/2026** (publicamente conhecido em 28/Abr/2026) - **Patch oficial**: cPanel 11.126.0.54 (versao instalada apos `upcp --force` em 2026-04-30) - **2 meses** de comprometimento ativo neste servidor ## Indicadores comprovados (IOCs encontrados) - **119 sessoes WHM injetadas** via CRLF — `cp_security_token` + `token_denied` + `method=badpass` + pass com newlines em `/var/cpanel/sessions/raw/` - **66 IPs atacantes unicos** (DigitalOcean, OVH, Vultr, Linode — VPSs ofensivos) - Lista salva em `/root/cve-2026-41940-attackers-20260430.txt` - Janela de exploracao visivel: 2026-02 → 2026-04 ## Persistencia plantada pelo atacante - **`/usr/bin/.system_cache`** — ELF 64-bit SUID root, **1.15 MB, oculto**, criado 2026-04-30 14:06:31, **acessado 18:47** mesmo apos troca de senha. Quarentenado em `/root/quarantine/system_cache.SUID-BACKDOOR.20260430` (sem SUID, 600). SHA256: `9e2622fe253a0483669c7d21b5b3f32f6a11fbafe032a6fd4ccc32f33cca102e` - **Conta cPanel falsa `systembackadmin`** com dominio `system.local` (TLD invalida) na **porta 8080**, contato `admin@localhost.com`. Criada **2026-04-30 14:06:28** (mesmo minuto da .system_cache). Removida via `/scripts/removeacct --force`. Backup: `/root/quarantine/systembackadmin-attacker-account-20260430.tar.gz` - **2 chaves SSH** plantadas em `/root/.ssh/authorized_keys` (uma sem comentario, outra com `root@DESKTOP-QUAJHHI` falso), removidas. Backup: `/root/.ssh/authorized_keys.PLANTED-CVE2026-41940.bak` - **Cron fantasma** `/var/spool/cron/uniformeseampcom` rodando hex-named PHP files (deletado, backup em `/root/quarantena_uniformeseampcom_cron_*.txt`) - **Usuario `agent360`** criado 15:36 — VERIFICADO: pacote PyPI legitimo do Plesk/WebPros (`agent360.py` v1.3.1), provavel cover ou colateral. Mantido. - **Senha root trocada 16:05** sem autorizacao - **chattr binario removido** (`/usr/bin/chattr`) — atacante apagou para impedir uso de `+i`. Reinstalado via `dnf reinstall e2fsprogs` ## Acoes de remediacao (executadas 2026-04-30) ### Containment 1. SSH porta 22 → **1907** + ACCEPT iptables permanente p/ `179.191.225.100` 2. Senha root rotacionada: `QVxdH6beewndm7Vj8nTvKTokr6eFJNvFy` 3. **66 IPs atacantes** adicionados em `/etc/csf/csf.deny` + `csf -ra` 4. Backdoor SUID quarentenado 5. Chaves SSH plantadas removidas 6. **119 sessoes WHM comprometidas** apagadas (`/var/cpanel/sessions/raw/`) 7. CSF `AUTO_UPDATES` ja desabilitado (default vazio); CSF v16.12 = ultima versao oficial (empresa fechada 2025-08-31) ### Cleanup colateral - 36 cpmove tarballs antigos (Ago/2024) — 25 GB - `home-hospedagem-backup.tar.gz` Dez/2023 — 35 GB - 4 daily backups cPanel antigos (mantido apenas 2026-02-26) — 164 GB - /tmp >7 dias — 1.4 GB - Total liberado: **~225 GB** - 20 phantom crons em `/var/spool/cron/` (accounts removidas) deletados - 2 contas suspensas removidas: `ebrastre`, `sistemamenina` ### Patch - `upcp --force` → cPanel **11.126.0.54** (corrige CVE-2026-41940) - `check_cpanel_pkgs --fix` → reinstalou `cpanel-perl-536`, `io-socket-ssl`, `lwp-protocol-https`, `net-acme2` - `chmod +x /usr/local/cpanel/cpsrvd.so` (estava 660 apos update parcial) ## Pendencias criticas (acao do usuario) 1. **Resetar TODAS as senhas WHM/cPanel** (`/scripts/realchpass user newpass`) — atacante teve admin 2 meses 2. **Resetar senhas MySQL** de todas as contas (atacante via WHM tinha root MySQL) 3. **Rotacionar tokens API** do `.env` da intranet: - Bling, Mercado Pago, Sicoob, Baileys, Magnus - Tokens de cron (verificar paths `?token=xxx`) 4. **Notificar clientes hospedados** do incidente (LGPD: 24-72h) 5. **Webshell scan em /home/*/public_html** ainda rodando (find + grep eval/base64) 6. **License cPanel** continua corrompida — ainda em status "license corrupted". WHM nao acessivel via UI ate licenca legitimada. 7. **CSF empresa fechada (Ago/2025)** — considerar migrar para alternativa (firewalld + fail2ban, ou Imunify360 firewall ja instalado) ## Hipoteses confirmadas - **License "compartilhada/nulled"** existia ANTES do CVE: crons em `/etc/cron.d/RCcpanelv3, rcsitepad, rcsoftaculous` rodando `RcLicenseCP/Sitepad/Softaculous` contra `mirror.resellercenter.ir` (pirata) - Atacante usou CVE-2026-41940 (problema oficial cPanel) — nao relacionado direto ao nulled - Mas o servidor ja era target de scanners por estar em listas de cPanel nulled ## Decisao em aberto - **Migrar para HestiaCP** em servidor novo (Caminho A) ou in-place (Caminho B) - Servidor atual carrega historico de comprometimento — recomendado servidor limpo ## Hardening aplicado (2026-04-30 sessao posterior) > [!success] Camadas adicionais ativadas > Hardening completo apos limpeza forense, sem afetar funcionamento dos sites/clientes. ### Firewall + acesso administrativo - **SSH porta 22 → 1907** (TCP_IN no CSF nao expoe 1907 publicamente) - **WHM porta 2087 fechada para internet** — apenas IP `179.191.225.100` acessa - **SSH 1907 igual** — apenas IP `179.191.225.100` acessa - Portas publicas mantidas: `80, 443, 25, 465, 587, 993, 995, 2083 (cPanel clientes), 53, 21` - **66 IPs do CVE bloqueados** em `/etc/csf/csf.deny` (DENY_IP_LIMIT 200, todos preservados) - CSF `AUTO_UPDATES = "0"` (empresa ConfigServer fechou Ago/2025) ### Email - `MAX_EMAIL_PER_HOUR=100` aplicado em 30 contas + `maxemailsperhour=100` server-wide (limita spam relay se conta cair) - DKIM + SPF + DMARC ativos em **todos os 30 dominios** (DMARC `p=quarantine; pct=100; rua=mailto:postmaster@`) ### PHP - `disable_functions = exec,shell_exec,system,passthru,proc_open,popen,proc_close,pcntl_exec,pcntl_fork,dl` em `/home//php.ini` para 29 contas - **Excecao gotechbr**: sem restricao (intranet usa exec para `LogViewer`, `MagnusBilling`, `CronTokenRotation`, `SocialDemandaService`/ffmpeg) ### Forense em tempo real - **AIDE** instalado (`/var/lib/aide/aide.db.gz`) — file integrity monitoring; teria detectado `/usr/bin/.system_cache` na hora se ja estivesse ativo - **Auditd** + 18 regras forenses em `/etc/audit/rules.d/cve-hardening.rules` monitorando `/etc/passwd`, `/etc/shadow`, `/root/.ssh/`, `/etc/cron.d/`, `/var/spool/cron/`, `/etc/systemd/system/`, `cpsrvd.so`, `/home` - **Log shipping rsyslog → Baileys (208.110.85.226:514 TCP)**: auth, authpriv, kern (warn+), mail (warn+), cron — atacante nao pode apagar logs do servidor remoto. Logs em `/var/log/cpanel-server-remote.log` no Baileys (chown syslog:adm) ### Backup offsite - Script `/usr/local/sbin/cpanel_backup_to_baileys.sh` rsync incremental com hardlinks (7 dias retention) - Cron: `/etc/cron.d/cpanel-offsite-backup` rodando 02:00 diario - Backup chave SSH: `/root/.ssh/id_ed25519_backup` autorizada em `customer@208.110.85.226:/home/customer/.ssh/authorized_keys` - Cobre: MySQL dumps, /etc, /var/cpanel, /var/named, /home (com excludes de cache/tmp/virtfs) ### 2FA SSH (postergado) - **Google Authenticator instalado** em `/usr/bin/google-authenticator` - Secret root gerado: salvo em `/root/.google_authenticator` (chave `U5ZGCEG326CIXIWGRDXLT6KFCQ`, 5 emergency codes) - **NAO ativado** — `pam_google_authenticator.so` removido do `/etc/pam.d/sshd` porque trava `plink` em batch mode (interativo nao automatizavel) - Para reativar: usar `Match Address *,!179.191.225.100` no sshd_config (sessao futura) ## Comandos de manutencao ```bash # Status backup tail -30 /var/log/cpanel_backup_to_baileys.log # AIDE check manual (apos initial scan completo) aide --check 2>&1 | tee /var/log/aide-$(date +%Y%m%d).log # Auditd query "quem mudou /etc/passwd ultimas 24h" ausearch -k passwd_changes -ts today # Logs forense remotos ssh -p 22 customer@208.110.85.226 'sudo tail -100 /var/log/cpanel-server-remote.log' ``` ## Pendentes (futuras sessoes) - [ ] **2FA com Match Address** — exigir GA para todo IP exceto `179.191.225.100` - [ ] **Cloudflare proxy** (laranja) para esconder IP origem + DDoS edge - [ ] **VPN WireGuard** para admin (substituir restricao por IP fixo) - [ ] **Migracao HestiaCP** (servidor limpo) - [ ] **Rotacao tokens API** no `.env` da intranet (Bling, MP, Sicoob, Baileys, Magnus) - [ ] **Reset senhas WHM/cPanel/email/MySQL** dos clientes (atacante teve admin 2 meses) - [ ] **Notificacao LGPD** aos clientes