Imagem de capa do projeto: Nexus Security Scanner EM ANDAMENTO

Resumo técnico

Plugin do NEXUS que centraliza findings pós-push de scanners, SBOM, Dependency-Track, domínios e repositórios CI/CD. Os imports normalizam evidências, deduplicam ou reabrem tarefas e alimentam o Compliance Hub; o painel também correlaciona CVEs, administra perfis e workflows de scan e dispara alertas críticos.

Escopo executado

  • plugin.json — v1.3.0, categoria NEXUS, ícone lucide shield-alert com icon_bg #fff1f2, icon.svg próprio (lupa de scan) e style: design.css.
  • Registros: registerTab("security", "Security Scanner", "shield-alert", tab.php, "NEXUS"), registerDoc(...), registerModal("security-modals", modals.php) e registerJs("nexus-security-scanner", "/plugins/nexus-security-scanner/assets/security.js").
  • 37 actions de API (plugin.php, via PluginManager::registerApiAction) — 14 imports (security_import_trivy|grype|semgrep|codeql|mobsf|qark|nuclei|wordfence|gitleaks|zap|composer|npm|sbom|dtrack), SBOM (security_sbom_list/get), DTrack (security_dtrack_sync/dashboard/save_config), CVE (security_cve_details), domínios (security_scan_domain|save_domain|get_domains|delete_domain), repos (security_save_repo|get_repos|delete_repo), profiles (security_get_scan_profiles|set_scan_profile), workflows (security_get_workflow_statuses|trigger_workflow), CI health (security_get_ci_health|inspect_repo_ci|sync_repo_workflow|install_repo_dependabot|sync_outdated_workflows), alertas (security_notify_critical).
  • Persistência: sem tabelas próprias — findings viram tarefas NEXUS (security_manage_task: dedupe por título, reopen de done/cancelled, project_resolve_for_task) e evidência em plugin.compliance.ci_evidence; domínios em plugin.security.domains, repos em plugin.security.repos, SBOM em plugin.security.sbom, DTrack em plugin.security.dtrack (config do DB).
  • Imports: security_process_trivy_scan (37-249), grype (249-405), semgrep (405-632), codeql (632-843), mobsf (893-1106), qark (1106-1262), nuclei (1262-1442), wordfence (1820-1965), gitleaks (1965-2126), zap (2126-2280), composer (2280-2398), npm (2398-2532), sbom (3924-4092), dtrack (4303-4495) — cada um normaliza upload/body, resolve projeto e cria/reabre tarefas.
  • Compliance: security_import_with_compliance → security_finding_to_controls (mapa MITRE + NIST/ISO por scanner) → security_record_compliance_evidence (evidência no Hub; SBOM não cria tarefa por pacote).
  • SBOM: security_process_sbom_scan — CycloneDX preferido/SPDX fallback, purl → ecosystem, inventário por repo em plugin.security.sbom; security_sbom_list/get (detalhe + pacotes por ?repo=owner/name).
  • Dependency-Track: stack Docker local (API 127.0.0.1:9080, UI 9081; bootstrap bootstrap-api-key.sh → plugin.security.dtrack); webhook NEW_VULNERABILITY/POLICY → tarefas [DTrack] CVE — pkg; security_dtrack_sync (evidência CI); dashboard com stats/syncs/alertas/config mascarada.
  • CodeQL: dupla visibilidade — codeql-action/upload-sarif@v3 envia ao GitHub Security Tab + security_import_codeql cria/atualiza tarefas [CodeQL] ….
  • Mobile: workflow nexus-mobile-scan.yml (job detect com path filter — Manifest/Gradle Android/iOS/artefato) → só então MobSF/QARK (sem APK/IPA ou repo não-mobile → skipped). Docs MOBSF.md/QARK.md.
  • GitHub OAuth: plugin GitHub autoriza repos/workflows; callbacks por SITE_URL (lab http://127.0.0.1:8088; docs LOCAL_DEV_F_IA.md).
  • Domínios: security_audit_domain — headers/SSL/CORS; slash /trivy <domínio|IP> via fastr.json (security_scan_domain).
  • Intel: security_scanner_intel_enrich (prioridade 46, tipo cve) — correlação local com tarefas/findings (sem API externa no hub).
  • Alertas: security_notify_critical — notify_security_critical (e-mail, dashboard, Discord/Slack, Novu opcional); usado pelo job notify-critical.
  • CI health: security_get_ci_health/inspect_repo_ci — compara workflow remoto vs template local (action pins, template version/fingerprint), sync de workflows, Dependabot, detecção de billing block.
  • UI Alpine.js (tab.php 116 KB): 4 sub-tabs (Domínios, Repositórios CI/CD, SBOM, Dependency-Track), seletor de import por scanner, cards de métricas e toolbar premium.

Stack e ferramentas

  • PHP 8 (sem framework) + MySQL 8 (tarefas NEXUS + config do DB — sem tabelas do plugin)
  • Alpine.js + Tailwind CSS (tab.php) + modals (modals.php) + JS registrado (assets/security.js)
  • GitHub Actions (nexus-security.yml — jobs de import por scanner + notify-critical; nexus-mobile-scan.yml — MobSF/QARK)
  • GitHub API (OAuth do plugin GitHub) — workflows, CI health, Dependabot
  • Scanners: Trivy, Grype, Semgrep, CodeQL, Nuclei, Wordfence, Gitleaks, ZAP, Composer, npm, Syft (SBOM), MobSF, QARK
  • Dependency-Track (Docker local) + Compliance Hub (evidência NIST/ISO) + Intelligence Hub (enricher CVE)

Tags operacionais

  • Security Scanner
  • Trivy
  • SBOM
  • Dependency-Track
  • MobSF
  • QARK
  • CodeQL
  • Domínios
  • Plugin NEXUS

Resultado operacional

  • 14 imports de scanners com normalização, auto-mapping de projeto por repo e conversão em tarefas NEXUS com dedupe por título (reabre done/cancelled quando a vulnerabilidade reaparece).
  • Evidência de compliance automática: cada import anexa controles MITRE + NIST/ISO no Compliance Hub (plugin.compliance.ci_evidence) — sem flood de tarefas MITRE por finding.
  • SBOM (CycloneDX/SPDX) inventariado por repositório com purl → ecosystem; Dependency-Track recebe o SBOM via CI e o webhook contínuo cria/reabre tarefas [DTrack] CVE — pkg.
  • CodeQL com dupla visibilidade: resultado no GitHub Security Tab e como tarefas [CodeQL] no NEXUS; mobile via MobSF/QARK com path-filter (só escaneia repo/artefato mobile).
  • CVEs citados em tarefas/comentários são correlacionados com findings locais pelo enricher do Intelligence Hub — severidade por tasks abertas, sem chamada externa.
  • Domínios auditados (headers/SSL/CORS) via slash /trivy; CI health compara workflows com o template (pins/versão) e sincroniza, além de instalar Dependabot.
  • Alertas CRITICAL do CI (job notify-critical) por e-mail/dashboard/Discord/Slack/Novu.
  • Complementar ao Security Gate: Scanner é a camada pós-push (CI/import, security_*); Gate é a camada pré-push (hooks locais, gate_*).

Andamento no GitHub (issues)

Issues mais recentes do repositório, atualizadas em tempo real.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Plugin NEXUS (v1.3.0) que centraliza findings de scanners (Trivy, Grype, Semgrep, CodeQL, Nuclei, Wordfence, Gitleaks, ZAP, Composer, npm, MobSF, QARK), inventário SBOM (Syft CycloneDX/SPDX), Dependency-Track (webhook contínuo de CVEs), auditoria de domínios, repositórios CI/CD e alertas CRITICAL — convertendo tudo em tarefas NEXUS com evidência cruzada no Compliance Hub.

Arquitetura e organização

Execução e operação

Execução em ambiente Docker/produção, com validação e documentação de evidências.

Screenshots

Falar sobre este projeto

Interessado em adaptar este projeto para o seu contexto? Entre em contato.