EM ANDAMENTO
Resumo técnico
Plugin NEXUS que integra a plataforma Bugcrowd para bug bounty: submissões são ingeridas via webhooks com digest HMAC-SHA256 (X-Bugcrowd-Digest) e viram tarefas com prioridade derivada da severidade (P1=4 → P4=1); o mapa programa → projeto roteia cada submissão, comentários NEXUS sincronizam de volta para a submissão e o Intelligence Hub enriquece tarefas com severidade, estado e vínculo Bugcrowd — com migração automática das identidades legadas (bugcrowdnd/bugcrowd-company) para o slug canônico bugcrowd.
Escopo executado
- Identidade: slug canônico
bugcrowd(diretórioplugins/bugcrowd/);legacy_slugs: [bugcrowdnd, bugcrowd-company]; actions canônicasbugcrowd_*com aliasesbugcrowdnd_*mantidos para integrações antigas; fastr/bugcrowd(canônico) +/bugcrowdnd(alias legado). - Backend
backend.php(1071 linhas):bugcrowd_get_config()/bugcrowd_save_config()emDB::getConfig('plugin.bugcrowd')comwebhook_secret,access_key,secret_key,public_base_url,default_project('Geral'),program_map(program_code/UUID → projeto NEXUS),sync_comments,comment_visibility(everyone|bugcrowd_and_customer),enrich_tasks,auto_close_on_closed,api_version(2025-01-01). - Migração automática (
bugcrowd_migrate_legacy()): idempotente — migra config deplugin.bugcrowd-company/plugin.bugcrowdparaplugin.bugcrowd; promove tabelasbugcrowd_company_submissions/bugcrowd_submissions/bugcrowdnd_submissions→bugcrowd_submissions(RENAME + INSERT IGNORE) e o webhook_log equivalente; valida identificadores SQL e colunas compatíveis antes de migrar. - Webhook:
bugcrowd_verify_signature()validaX-Bugcrowd-Digest=HMAC-SHA256(secret, raw_body + timestamp)viahash_equals; eventossubmission.created,submission.updated, comentários e ping/test; URL públicapublic_base_url + /api.php?action=bugcrowd_webhook; auditoria completa embugcrowd_webhook_log. - Severity → priority:
bugcrowd_severity_to_priority()— P1/Critical=4, P2/High=3, P3/Medium=2, P4/outros=1;auto_close_on_closedmarca a taskdone(closed/resolved/informational) e triaged/unresolved/new virain_progress. - Criação/atualização de tarefas:
submission.createdcria task ([Bugcrowd] <id> — <título>, descrição markdown com ID/programa/evento/título/severidade/estado/VRT) + enriquece via API;submission.updatedatualiza priority/status e comenta o diff dechanges. - Sync NEXUS → Bugcrowd:
bugcrowd_on_comment_created(filtercomment_created) faz POST/submissions/{id}/commentscombody_markdown+visibility_scope; ignora comentários system/status/status_change/attachment e autores bugcrowd/system (anti-loop). - Mapa programa → projeto:
bugcrowd_resolve_project()(code|id|name → projeto; fallbackdefault_project). - API client:
bugcrowd_api_request()(cURL) comAccept: application/vnd.bugcrowd+json,Authorization: Token <access_key>:<secret_key>,Bugcrowd-Versione timeout 25s (connect 8s); baseapi.bugcrowd.com. - Intelligence Hub: enricher
bugcrowd(['url','domain','_task'], prioridade 38) —_task: sinalsid · P{sev} · {state}com scores P1=90/P2=75/P3=55/P4=30;url/domainem hosts*.bugcrowd.com→ linked/unlinked (extrai/submissions/{id}). - Lookup/refresh:
bugcrowd_lookup(submission_id ou URL → vínculo local + API fresh) ebugcrowd_refresh(GET/submissions/{id}→ create/update com eventomanual.refresh). - API: 9 actions via
PluginManager::registerApiAction(bugcrowd_webhook, bugcrowd_settings/_save, bugcrowd_stats, bugcrowd_links, bugcrowd_test, bugcrowd_lookup, bugcrowd_refresh, bugcrowd_post_comment) — webhook público + digest; demais sessão + CSRF. - i18n próprio:
lang.json(226 linhas, pt_BR/en_US) vianexusRegisterPluginI18n+nx_load_dictionary(window.t / __()). - UI Alpine.js (
tab.php, 389 linhas, tema laranja orange-600): badges Webhook OK/API OK, 4 KPI cards (Vinculadas/Eventos hoje/Webhook/API Token), aba Submissões (tabela ID, programa, severidade, estado, tarefa com link) + Configurações (webhook URL com copiar + secret, Public Base URL, project picker NEXUS, Access/Secret Key, Bugcrowd-Version, Testar API, mapa programa→projeto com linhas dinâmicas, toggles sync/enrich/auto-close, visibilidade de comentários, guia "Como obter a API Key"). - Tabelas:
bugcrowd_submissions(PK submission_id, UNIQUE task_id, índices program_code/updated_at) ebugcrowd_webhook_log(event_type, submission_id, ok, message; índices created_at/submission_id). - Sem
cronjob.json— plugin evento-driven (webhooks), sem polling contínuo (API Bugcrowd limita ~60 req/min).
Stack e ferramentas
- PHP 8 (sem framework)
- MySQL 8 (config em admin_configs; bugcrowd_submissions + bugcrowd_webhook_log)
- Alpine.js + Tailwind CSS (premium light, ring orange)
- Sistema de plugins do NEXUS (PluginManager)
- cURL → API Bugcrowd (Token auth + webhooks HMAC-SHA256)
Tags operacionais
- Bugcrowd
- Bug Bounty
- Segurança
- Webhooks
- API REST
- Intelligence Hub
Resultado operacional
- Ciclo fechado bugcrowd → NEXUS: submissões ingeridas via webhook (digest HMAC-SHA256 verificado) viram tarefas no backlog com prioridade correta; estado closed/resolved marca a task done.
- Sync bidirecional de comentários: comentários no NEXUS viram comentários na submissão Bugcrowd (visibilidade configurável) sem loop com autores Bugcrowd.
- Roteamento por programa: cada submissão cai no projeto NEXUS mapeado (código/UUID do programa), com fallback para o projeto padrão.
- Intelligence Hub contextualizado: tasks vinculadas mostram severidade, score, estado e vínculo da submissão; URLs
app.bugcrowd.com/submissions/*são detectadas como referências. - Auditoria completa: todos os deliveries e eventos logados (
bugcrowd_webhook_log). - Migração transparente: instalações antigas (bugcrowdnd/bugcrowd-company) são migradas de forma idempotente para o slug canônico
bugcrowd, com aliases mantidos.
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 NEXUS que integra a Bugcrowd para bug bounty: submissões ingeridas via webhooks com digest HMAC-SHA256 (X-Bugcrowd-Digest) viram tarefas com prioridade por severidade, com mapa programa→projeto, sync bidirecional de comentários, enricher no Intelligence Hub e migração automática de legado.
Arquitetura e organização
- PHP 8
- MySQL 8
- Alpine.js
- Tailwind CSS
- cURL
- Bugcrowd API
- 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.