
Ferramentas de detecção, mitigação e engenharia reversa para CVE-2026-41940 (SessionScribe): a vulnerabilidade de falsificação de sessão não autenticada do cPanel/WHM divulgada em 28/04/2026. Shim de mitigação ativa em profundidade, pacote de regras ModSec, sonda remota, scanner de IOC no host e coletor de snapshots de RE por camada. GPL v2.
RCE crítica não autenticada no cPanel & WHM. Quatro requisições HTTP forjam uma sessão root via injeção CRLF no campo de senha de uma sessão de pré-autenticação. Sem autenticação, sem pré-condições, todos os tiers suportados afetados. Divulgado em 2026-04-28 por Sina Kheirkhah / watchTowr Labs.
Início rápido · ioc-scan · mitigate · remote-probe · Versões afetadas · Ordem de prioridade
[!IMPORTANT] Os tiers 112, 114, 116, 120, 122, 128 não possuem patch do fornecedor. Toda build nesses tiers é vulnerável; atualizar ou migrar é a única correção durável. Até lá: bloqueie TCP/2082, 2083, 2086, 2087, 2095, 2096 para CIDRs de gerenciamento (
mitigate.sh --applyfaz isso) e proteja a superfície restante com o pacote de regras ModSec.
Três one-liners, em ordem de prioridade do operador:```bash
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-mitigate.sh | bash -s -- --apply
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-remote-probe.sh | bash -s -- --target HOST
Os códigos de saída são projetados para automação de frota: `ioc-scan` sai com `4` em COMPROMETIDO, `1` em VULNERÁVEL; `mitigate` sai com `0` limpo / `1` aplicado / `2` manual / `3` erro de ferramenta; `remote-probe` sai com `2` se algum alvo estiver VULN.
---
## Ferramentas
Em ordem de prioridade operacional. Cada artefato emite saída estruturada (`--json` / `--jsonl` / `--csv`) indexada por `host`, `os`, `cpanel_version`, `ts` para agregação de frota.
| Ferramenta | Função | Onde é executado |
|---|---|---|
| **[`sessionscribe-ioc-scan.sh`](#sessionscribe-ioc-scansh---ioc-ladder--kill-chain)** | Triagem de primeira classe. Escada de IOC, vereditos de estado de código + estado do host, reconstrução da cadeia de eliminação, pacote de IR. | no host cPanel |
| **[`sessionscribe-mitigate.sh`](#sessionscribe-mitigatesh---mitigation-orchestrator)** | Fechar a janela. Mitigação em fases: verificação de patches, firewall, proxysub, ModSec. | no host cPanel |
| **[`sessionscribe-remote-probe.sh`](#sessionscribe-remote-probesh---non-destructive-fleet-probe)** | Colateral de suporte. Sonda não destrutiva de 4 estágios → VULN/SAFE por host. | em qualquer lugar com `curl` |
| [`modsec-sessionscribe.conf`](#supporting-collateral) | Pacote de regras ModSec implantado por `mitigate`. | front-end Apache |
| [`sessionscribe-revsnap.sh`](#supporting-collateral) | Coletor de snapshots RE por camada para diffing binário. | no host cPanel, por volta de `upcp` |
GPL v2. Todos os artefatos prontos para `curl` via URLs brutas acima.
---
## `sessionscribe-ioc-scan.sh` - Escada de IOC + cadeia de eliminação
**Execute isto primeiro.** Apenas detecção por padrão (rápido, amigável para frotas); adicione `--full` para executar as fases forenses inline (linha do tempo de defesa, ingestão de ofensiva, reconciliar, renderizador de cadeia de eliminação, pacote de IR).```bash
# fast triage (detection only)
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash
# full kill-chain reconstruction inline
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --full
# full + ship IR bundle to intake
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --full --upload
# JSONL for SIEM ingest
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --jsonl --quiet > host.jsonl
# host IOCs only - periodic post-patch sweep, last 7 days
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --ioc-only --since 7
# replay forensic phases against a saved envelope (no re-scan)
curl -fsSL https://raw.githubusercontent.com/rfxn/cpanel-sessionscribe/main/sessionscribe-ioc-scan.sh | bash -s -- --replay /var/cpanel/sessionscribe-ioc/<run_id>.json
Dois eixos reportam-se independentemente. code_verdict (PATCHED /
VULNERABLE / INCONCLUSIVE) provém da versão, padrões de código-fonte Perl
e da impressão digital do binário cpsrvd. host_verdict (CLEAN /
SUSPICIOUS / COMPROMISED) provém da escada de IOCs de ficheiros de sessão,
da análise dos logs de acesso e das sondas de destruição dos Padrões A–G. Um
host com patch pode ainda sair com 4 se uma exploração anterior deixou IOCs
em disco.
| Saída | Estado-código | Estado-host | Ação de triagem |
|---|---|---|---|
| 0 | CLEAN/PATCHED | CLEAN | nenhuma |
| 1 | VULNERABLE | (qualquer) | aplicar patch no cpsrvd |
| 2 | INCONCLUSIVE | (qualquer) | revisão manual do estado do código (também: erro da ferramenta) |
| 3 | (qualquer) | SUSPICIOUS | revisar logs de sessão/acesso |
| 4 | (qualquer) | COMPROMISED | IR completo; agrupar + enviar |
Sessões marcadas com nxesec_canary_<nonce> (deixadas pela sonda remota)
são classificadas como PROBE_ARTIFACT e não escalam para COMPROMISED.
--full agrupa todos os IOCs contra ativações de defesa e classifica
cada um como PRÉ-DEFESA, PÓS-DEFESA, PÓS-PARCIAL ou
SEM DEFESA, e depois resume com veredito + título de atraso de defesa.
PRÉ-DEFESA = o host estava aberto à exploração quando o indicador aterrou;
PÓS-DEFESA = ruído colateral ou pré-mitigação.```
+-- CVE-2026-41940 / IC-5790 --------------------------------------------
| host cpanel.example.com ()
| cpanel unknown os unknown
| verdict COMPROMISED score 315 ioc-scan v2.5.0
| defenses patch x absent modsec + up csf + clean mitigate + ran
+------------------------------------------------------------------------