EM ANDAMENTO
Resumo técnico
Plugin do NEXUS (categoria DevOps & Infra) que orquestra DAST pós-deploy para Kagin e Evolya: o Coolify/CI chama dast_deploy_hook (ou a UI/slash /dast dispara), o NEXUS sobe Nuclei (projectdiscovery/nuclei:latest) e/ou OWASP ZAP baseline (ghcr.io/zaproxy/zaproxy:stable) via Docker com --network host, importa os relatórios no Nexus Security Scanner com compliance (source: nexus-dast-deploy), persiste o run em dast_runs e cria uma tarefa [DAST] opcional no NEXUS — fechando o ciclo do SDLC em que o workflow/CI dispara e o plugin é a fonte da verdade.
Escopo executado
- Backend
backend.php(972 linhas):dast_default_config()emDB::getConfig('plugin.dast-deploy')com targetskagin(https://kagin.com.br) eevolya(https://evolya.com.br) por ambiente production/staging,scannersdefault['nuclei','zap'],nuclei_severitycritical,high,medium, imagens Docker configuráveis,webhook_secret,create_run_task,timeout_sec(clamp 60–3600),allow_manualenotify_inngest. - Tabela
dast_runscriada pordast_install()(InnoDB, utf8mb4, índices emapp/status/created_at) com contagens por severidadenuclei_critical/high/medium/lowezap_high/medium/low,task_id,summary_json,duration_mse timestamps. dast_deploy_hook: webhook pós-deploy que validasecretcomhash_equals(exigido se configurado), aceitaapp/application/service,env(aliasesprod/stage), URL override escanners, com opçãoasync.dast_run: validaallow_manual, resolve o target (dast_resolve_target— app+env ou URL override), checa Docker (dast_docker_okvianx_secure_exec_status), cria a tarefa[DAST] {app}/{env} — scan pós-deploy(project NEXUS, prioridade 2,in_progress), insere o runrunninge emite o evento Inngestnexus/dast.deploy(se plugin Inngest ativo).- Nuclei (
dast_run_nuclei):docker run --rm --network host -v <reports>:/out -u <url> -severity <sev> -je <report> -silent -nc -timeout 10; conta por severidade (exit não-zero com findings ainda é OK) e normaliza NDJSON. - ZAP (
dast_run_zap):zap-baseline.py -t <url> -J <report> -I; conta alerts porriskdesc/riskcode(High/Medium/Low/Informational). - Import com compliance (
dast_import_report):security_import_with_compliancecomnuclei→security_process_nuclei_scanezap→security_process_zap_scan,repo: deploy/{app},project: NEXUS,source: nexus-dast-deploy; carrega o backend do Security Scanner sob demanda se ausente. - Status final
ok/partial/errorconforme sucesso dos scanners; comentárioDAST finalizado (...)na tarefa etask_updateparadone(sem findings) oupendingcom prioridade 4 (se critical/high). dast_normalize_url: sóhttp/https; bloqueialocalhost,127.0.0.1,0.0.0.0,::1,169.254.*e*.local.- API: 9 actions via
PluginManager::registerApiAction—dast_dashboard,dast_settings_get,dast_settings_save,dast_deploy_hook,dast_run,dast_runs_list,dast_run_get,dast_fastr,dast_fastr_suggest(autenticadas por sessão/Bearer com CSRF). - UI Alpine.js (
tab.php219 linhas): badge Docker OK (ponto verde pulsante), stats cards (Runs · OK · Partial/Err · Crit/High), aba Disparar (app/env/scanners/URL override + box do webhook Coolify/CI), aba Histórico (runs com status colorido e countsN c/h · Z h · duração) e aba Config (4 URLs de target + webhook secret mascaradoabcd•••wxyz, timeout e booleans). - Comando fastr
/dast(dast_fastr+dast_fastr_suggest): resumo,kagin,evolya/staging(dispara run Nuclei) oudast_<id>; enricherdast_intel_enrich(priority 56) reconhecedast://kagin,dast://evolya/staginge URLs dos hosts configurados. Semcronjob.json(plugin disparado por eventos).
Stack e ferramentas
- PHP 8 (sem framework)
- MySQL 8 (config em
admin_configs+ tabeladast_runs) - Docker Engine (Nuclei e OWASP ZAP em containers,
nx_secure_exec) - Alpine.js + Tailwind CSS
- Sistema de plugins do NEXUS (
PluginManager)
Tags operacionais
- DAST
- Nuclei
- OWASP ZAP
- DevSecOps
- Plugin NEXUS
Resultado operacional
- Fecha o ciclo DAST pós-deploy: cada deploy do Coolify/CI pode disparar a varredura automaticamente via
dast_deploy_hook, sem ação manual. - Dois scanners complementares em containers: Nuclei (templates, severidades configuráveis) + OWASP ZAP baseline (passivo/ativo), com relatórios JSON persistidos em
storage/dast-deploy/reports. - Import direto no Nexus Security Scanner com compliance (
source: nexus-dast-deploy) — os findings entram no mesmo pipeline do plugin de segurança, comrepo deploy/{app}. - Rastreabilidade completa: run em
dast_runscom contagens por severidade, duração e erro; tarefa[DAST]no NEXUS com comentário de resultado e prioridade elevada quando há critical/high. - Segurança do gatilho: secret validado com
hash_equalse URL normalizada que bloqueia alvos locais/link-local (localhost,169.254.*,*.local).
Andamento no GitHub (issues)
Painel em tempo real com as issues mais recentes do repositório.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
Resultados reais
Plugin do NEXUS que orquestra varreduras DAST pós-deploy com Nuclei e OWASP ZAP via Docker, disparadas por webhook do Coolify/CI, aba do painel ou slash /dast — com import dos relatórios no Nexus Security Scanner, runs persistidos em dast_runs e tarefa [DAST] no NEXUS.
Arquitetura e organização
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- Docker
- Plugin NEXUS
Execução e operação
O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.
Screenshots
Falar sobre este projeto
Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.