Imagem de capa do projeto: NEXUS Intigriti EM ANDAMENTO

Resumo técnico

Plugin NEXUS que integra a plataforma Intigriti — submissões são ingeridas via webhooks HMAC-SHA256 → Base64 (x-intigriti-digest) enquanto OAuth2 Authorization Code synca mensagens NEXUS → Intigriti e enriquece bounty; cria/atualiza tarefas com prioridade derivada da severidade (critical=4 → low=1) e enriquecimento no Intelligence Hub (bounty acumulado).

Escopo executado

  • Backend backend.php (879 linhas): intigriti_get_config()/intigriti_save_config() em DB::getConfig('plugin.intigriti') com webhook_secret, client_id, client_secret, access_token, refresh_token, token_expires_at, environment (prod/uat), public_base_url, default_project, sync_comments, message_visibility (internal/external), enrich_tasks, auto_close_on_closed.
  • Webhook HMAC: intigriti_verify_signature() valida x-intigriti-digest = HMAC-SHA256(secret, raw_body) → Base64 via hash_equals; eventos SubmissionCreated/SubmissionSeverityChanged/SubmissionStatusChanged/SubmissionMessagePlaced/TestEvent.
  • OAuth2 Authorization Code (intigriti_oauth_callback) + refresh automático (intigriti_ensure_token, 60s de antecedência) — escopos company_external_api offline_access core_platform:read/write.
  • Severity → priority: intigriti_severity_to_priority() — critical=4, high=3, medium=2, low/outros=1.
  • Sync NEXUS → Intigriti: intigriti_on_comment_created (filter comment_created) POST /v2/submissions/{code}/comments/internal|external; ignora system/status/attachment e autores intigriti/system (anti-loop).
  • Bounty enrich: intigriti_extract_bounty_meta() extrai totalPayout (value/currency) do detalhe da submissão → cache em link + Intelligence Hub.
  • API client (intigriti_api_request, cURL): Bearer <token>, Accept: application/json, base api.intigriti.com/external/company (ou .uat.), timeout 25s.
  • Lookup/refresh: intigriti_refresh_submission (GET /v2/submissions/{code} → upsert + atualiza priority/título).
  • API: 8 actions via PluginManager::registerApiAction (intigriti_webhook, intigriti_oauth_callback, intigriti_settings/_save, intigriti_refresh, intigriti_post_message, intigriti_stats, intigriti_links) — sessão/Bearer + CSRF.
  • UI Alpine.js (tab.php, 339 linhas): badge Webhook/OAuth, stats cards (Vinculadas/Eventos hoje/Webhook/OAuth), aba Submissões (7-col: código, programa, severidade, bounty, status, tarefa) + Configurções (secret/redirect/authorize/OAuth/client_id/secret/environment/picker/toggles/visibilidade/Salvar).
  • Intelligence Hub: intigriti_intel_enrich (prioridade 37) — _task: sinal code · P{sev} · {state} + bounty (se > 0), score severity_score ou P1=85/P2=75/P3=55/Low=25.
  • Tables: intigriti_submissions (link code↔task + cache severidade/status/bounty) e intigriti_webhook_log (auditoria). Sem install.sql versionado (carregado via file_get_contents em intigriti_install()).
  • Fastr /intigriti (fastr.json): arg_required=false, pass_task_id=false → intigriti_stats.
  • cronjob.json jobs vazio (on demand) — sem rotina periódica.

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (config em admin_configs; intigriti_submissions + intigriti_webhook_log)
  • Alpine.js + Tailwind CSS (premium light, ring teal)
  • Sistema de plugins do NEXUS (PluginManager)
  • cURL → API Intigriti (OAuth2 Authorization Code + HMAC webhooks)

Tags operacionais

  • Intigriti
  • Bug Bounty
  • Segurança
  • Webhooks
  • OAuth2
  • DevOps

Resultado operacional

  • Ciclo fechado intigriti → NEXUS → intigriti: submissões ingeridas via webhook (HMAC-SHA256/Base64 verificado) viram tarefas no backlog com prioridade correta; SubmissionStatusChanged (Closed) marca task done; severidade alterada update priority + comentário.
  • Sync bidirecional de mensagens: comentários no NEXUS viram mensagem internal/external na submissão Intigriti (visibilidade configurável; OAuth necessário).
  • Intelligence Hub contextualizado: tasks com submissão vinculada mostram severidade, score, status e bounty acumulado sem sair do NEXUS.
  • OAuth2 com refresh automático (60s de antecedência) — sync de mensagens e enrich de bounty operam sem intervenção manual após a autorização inicial.
  • Auditoria completa: todos os deliveries logados (intigriti_webhook_log).

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

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

carregando andamento...

Resultados reais

Plugin NEXUS que ingeri submissões Intigriti via webhooks HMAC-SHA256 (Base64), OAuth2 Authorization Code para sync de mensagens + enrich de bounty, severity→priority e Intelligence Hub.

Arquitetura e organização

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.