ATALAIA
  1. Início
  2. Recursos
  3. Blog
  4. Está preparado para um bug bounty?
Testes · Checklist

Está preparado para um bug bounty?

Uma checklist para fazer numa reunião antes de convidar investigadores externos: básico de divulgação, scope, SLAs de triage, estrutura de recompensas e o ciclo que transforma relatórios em correções.

4 min de leituraEquipa Atalaia

Bug bountyVDPsecurity.txtTriage

Um bug bounty é uma promessa a desconhecidos: enviem-nos o que encontrarem e nós respondemos depressa, com justiça e de boa-fé. Lançar um antes de conseguir cumprir essa promessa tende a produzir uma enxurrada de relatórios, uma caixa de entrada sobrecarregada e investigadores irritados.

A checklist abaixo é para ser feita numa única reunião com engenharia, segurança e quem gere o seu site público. Se não conseguir assinalar a maior parte, comece por uma política de divulgação e volte daqui a um trimestre.

Passo zero: uma VDP e um security.txt

Uma vulnerability disclosure policy (VDP) é a versão gratuita e sempre ativa de um bounty. Diz às pessoas como reportar, o que considera dentro dos limites, e que não vai avançar com ações legais contra investigação de boa-fé. Publique-a antes de qualquer esquema de recompensas.

Depois publique um ficheiro security.txt, conforme descrito no RFC 9116, para que investigadores e ferramentas encontrem o contacto certo.

# https://example.com/.well-known/security.txt
Contact: mailto:security@example.com
Expires: 2027-06-30T23:59:59Z
Policy: https://example.com/security/disclosure
Acknowledgments: https://example.com/security/thanks
Preferred-Languages: en, pt
Canonical: https://example.com/.well-known/security.txt

Verifique que a caixa de correio é monitorizada, que a data Expires está no futuro e que alguém é responsável pela renovação.

Checklist de prontidão

#PerguntaPronto quando
1Tem uma VDP pública?Publicada, com link no security.txt, com uma declaração de safe harbour
2Já testaram vocês próprios os assets no âmbito?Foi feito um pentest ou uma revisão interna recente e os findings foram corrigidos
3Existe um inventário de assets?Consegue listar cada domínio, aplicação e API que poria no scope, com um dono
4Quem faz a triage?Pessoas nomeadas com tempo reservado, mais cobertura para férias
5Quem corrige?Cada asset no âmbito está associado a uma equipa que aceitou SLAs de correção
6Consegue reproduzir em segurança?Um ambiente de staging ou contas de teste que investigadores e quem faz triage possam usar
7O jurídico está envolvido?O texto de safe harbour e as condições de pagamento foram revistos
8Consegue pagar?Existe um responsável pelo orçamento e uma forma de pagamento, mesmo para um programa privado

Um scope que um estranho consegue aplicar

Um bom scope lê-se como um contrato, não como um desejo. Escreva-o de forma a que um investigador que nunca falou consigo consiga decidir se um achado conta.

  • No scope: hostnames exatos, identificadores de aplicações e base paths de API, com o ambiente indicado.
  • Fora do scope: serviços de terceiros que não controla, sites de marketing e tudo o que é partilhado com outros tenants.
  • Classes excluídas: problemas que decidiu não recompensar, como headers em falta sem impacto, self-XSS ou rate limiting em endpoints não sensíveis.
  • Regras de atuação: sem negação de serviço, sem engenharia social a colaboradores, sem aceder a dados de outros utilizadores além do que prova o problema, usar as contas de teste fornecidas.

Comece com um programa privado e um scope estreito. Alargue-o quando a triage estiver calma.

SLAs de triage e recompensas

Publique objetivos de resposta que consegue cumprir na sua pior semana, não na melhor. Uma estrutura típica tem quatro relógios:

  1. Primeira respostaO investigador recebe de uma pessoa a confirmação de que o relatório foi recebido e está a ser analisado.
  2. Decisão de triageVálido, duplicado, fora do scope ou precisa de mais informação, com uma severidade associada.
  3. Decisão de recompensaO escalão de recompensa é confirmado assim que a severidade é acordada.
  4. Correção e divulgaçãoO problema é corrigido, verificado e, quando acordado, divulgado.

Defina as recompensas como uma tabela de escalões por severidade e nível do ativo, e depois preencha os montantes a partir do seu próprio orçamento. A estrutura importa mais do que os números.

SeveridadeAtivos de nível 1 (produto principal, autenticação, pagamentos)Ativos de nível 2 (aplicações e APIs de suporte)
CríticoBanda ABanda B
AltoBanda BBanda C
MédiaBanda CBanda D
BaixaBanda DAgradecimento e reconhecimento

Escreva como pontua a severidade, por exemplo com CVSS mais uma nota sobre o impacto no negócio, para que dois triagers cheguem à mesma resposta.

Fechar o ciclo da correção

Um bounty que só produz pagamentos é um custo. Um que alimenta a linha é um investimento. Para cada relatório válido:

  • Abra um ticket no backlog da equipa dona com o SLA associado, não num tracker só de segurança.
  • Verifique a correção contra a prova de conceito original e peça ao investigador que volte a testar, quando fizer sentido.
  • Adicione um teste de regressão, uma regra Semgrep ou uma verificação do scanner para que a mesma classe não volte sem ninguém dar por isso.
  • Pergunte uma vez por trimestre que estações da linha deviam ter apanhado a classe mais cedo, e corrija a estação.

Verifique o seu esta semana

  • Obtenha /.well-known/security.txt no seu domínio principal. Se estiver em falta ou expirado, essa é a sua primeira tarefa.
  • Percorra a tabela de oito linhas acima com as pessoas certas na sala e marque cada linha com sim, não ou em parte.
  • Se houver mais do que dois nãos, publique uma VDP, agende um pentest e volte ao bounty no próximo trimestre.

Onde isto fica na linha

Vamos conversar

Uma chamada de 30 minutos. Sem slides, sem tabela de preços, e um próximo passo em qualquer caso.