
Modelo de detecção Nuclei para CVE-2026-41473, uma falha de acesso não autenticado de leitura/gravação à API no CyberPanel AI Scanner anterior à versão 2.4.4. Utiliza duas sondas HTTP para confirmar a ausência de autenticação.
Template de detecção do Nuclei para o CVE-2026-41473, que afeta versões do CyberPanel anteriores a 2.4.4.
O recurso AI Scanner do CyberPanel expõe dois endpoints de API sem autenticação:
| Endpoint | Método | Impacto |
|---|
/api/ai-scanner/list-api-keys | GET | Expõe nomes de usuário admin, prefixos de chaves de API, nomes de domínios hospedados e IDs de varredura |
/api/ai-scanner/callback | POST | Aceita gravações arbitrárias no histórico de varredura sem autenticação |
Ambos os endpoints estão sob o prefixo de URL /api/*, que o secMiddleware do CyberPanel isenta incondicionalmente das verificações de autenticação de sessão. Nenhum token, cookie de sessão ou credencial de qualquer tipo é necessário para acessar qualquer um dos endpoints.
O endpoint de leitura permite enumeração de alvos. O endpoint de escrita permite corromper o histórico de varredura e, quando combinado com o XSS persistente no painel do AI Scanner (CVE-2026-41472), alcança execução remota de código não autenticada por meio de manipulação de cron jobs.
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 (Ausência de Autenticação para Função Crítica)
Corrigido em: CyberPanel 2.4.4 (commit 8eb29181cb137baa4adb4bba5dce60f601d55a5f)
O template envia duas requisições:
Requisição 1 — GET /api/ai-scanner/list-api-keys
Confirma que o alvo é uma instância do CyberPanel com o recurso AI Scanner habilitado e o endpoint de leitura desprotegido. Corresponde à estrutura JSON (api_keys, recent_scans, is_payment_configured) com HTTP 200. Extrai nomes de usuário admin, prefixos de chaves de API, nomes de domínio e IDs de varredura como saídas nomeadas.
Requisição 2 — POST /api/ai-scanner/callback com corpo vazio {}
Testa o endpoint de escrita sem realizar nenhuma gravação real. Um corpo vazio significa que nenhum scan_id está presente, portanto o servidor não consegue corresponder ou modificar nenhum registro ScanHistory existente. Em um servidor vulnerável (< 2.4.4), a verificação de autenticação é ignorada e o Django retorna HTTP 400 com scan_id no corpo do erro — o servidor alcançou a validação de entrada sem nunca impor autenticação. Em um servidor corrigido (≥ 2.4.4), a verificação do cabeçalho X-API-Key é acionada primeiro e retorna HTTP 401 antes que scan_id seja sequer lido.
A correspondência exige todos os itens a seguir:
scan_id no corpo da resposta + tipo de conteúdo application/jsonEssa combinação confirma que a lógica do AI Scanner do CyberPanel foi alcançada em ambas as requisições sem autenticação imposta, ao mesmo tempo que descarta bloqueios de WAF, erros de proxy reverso e respostas 400 não 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
| Versão | Status |
|---|---|
| CyberPanel < 2.4.4 com AI Scanner | Vulnerável |
| CyberPanel ≥ 2.4.4 | Corrigido |
| CyberPanel sem o módulo AI Scanner | Não afetado |
Instâncias do CyberPanel sem o recurso AI Scanner (geralmente versões anteriores a 2.3) não corresponderão — o endpoint list-api-keys retornará 404 e o template não será acionado.