Divulgar os detalhes de uma vulnerabilidade antes que sua correção esteja disponível beneficia mais os atacantes do que os defensores. A Segurança mantém os detalhes de cada descoberta que não seja pública dentro do Coroid, e apenas alguém com autoridade decide quando eles serão divulgados.
Público e não público
Cada descoberta pertence a um de dois tipos:
- Público: a vulnerabilidade já foi divulgada, por exemplo, uma dependência com um aviso publicado. As pull requests de correção podem mencionar esse aviso.
- Não público: todo o restante, como um problema encontrado na auditoria, na Revisão do Coroid ou em uma regra de código no seu próprio código, ou uma credencial vazada.
Uma descoberta é considerada pública somente quando está vinculada a um aviso publicado que não foi retirado, ou quando um proprietário ou administrador publica sua correção privada (veja abaixo).
O portão de publicação
Tudo o que o Coroid publica fora do Coroid passa primeiro pelo portão de publicação: órgãos de revisão, comentários e resumos de revisão inline, resultados de verificação e suas anotações, títulos e descrições do pull request, mensagens de commit, comentários de issue, mensagens do Slack e de e-mail, e exportações. O portão analisa qualquer problema de segurança no texto, confirmado ou não.
Em um repositório público, ou em um cuja visibilidade o Coroid não consegue confirmar, uma descoberta que não seja pública é substituída por uma linha neutra com um link:
O Coroid encontrou um possível problema de segurança; os detalhes estão no Coroid.
Em um repositório privado, o texto é publicado. Uma descoberta ainda não confirmada é marcada como "Reclamação de segurança não verificada: o Coroid ainda não a verificou."
As credenciais são sempre redigidas em todos os lugares. Veja Segredos vazados.
Visibilidade do repositório
O Coroid considera um repositório privado somente quando tem uma leitura clara e recente de que ele é privado, proveniente de eventos do GitHub ou de consulta direta ao GitHub, com menos de uma hora de idade. Um repositório interno é considerado público. Se o Coroid não conseguir determinar, trata o repositório como público.
Notificações e exportações
- Sino: para uma descoberta que não seja pública, o sino indica apenas a gravidade e o projeto, por exemplo "Uma descoberta crítica requer atenção", com um link para a descoberta em Segurança.
- Slack e e-mail contêm apenas uma linha informando que uma descoberta requer atenção e o link. Eles nunca trazem a vulnerabilidade ou o código.
- Exportações: a exportação CycloneDX lista vulnerabilidades apenas para descobertas públicas. O pacote de configurações da organização não contém nenhuma descoberta.
Corrigindo em um repositório público
Em um repositório privado, uma correção para uma descoberta que não seja pública é uma pull request normal. Suas mensagens de commit e descrição descrevem a correção, não o ataque.
Em um repositório público, ou em um cuja visibilidade o Coroid não consegue confirmar, um pull request público, ramificação ou commit revelaria o problema antes que fosse corrigido. Por isso, o Coroid não commita tal correção lá. A tarefa de correção é interrompida com um motivo que não menciona detalhes da descoberta, e a alteração preparada é mantida como uma correção privada.
Correções privadas
Uma descoberta com correção privada é exibida em Correções privadas. Apenas proprietários e administradores podem vê-la.
- Baixar a correção salva a alteração preparada como um
.patcharquivo, para revisar ou aplicar você mesmo. - Publicar registra que a descoberta agora foi divulgada e cria uma tarefa que aplica a alteração preparada sem modificações e abre seu pull request. Publique quando estiver pronto para que a correção e a descoberta se tornem públicas, por exemplo, quando uma data de lançamento coordenada for definida. Uma correção muito grande para ser publicada a partir do Coroid ainda pode ser baixada e aplicada manualmente.
- Descartar apaga a alteração preparada.
A publicação e o descarte são registrados no log de auditoria da organização, e ambos apagam a alteração preparada do Coroid.
Uma correção privada que ninguém publica ou descarta é mantida por um tempo limitado. Após 180 dias, proprietários e administradores recebem um lembrete. Após 365 dias, ela é apagada e eles são notificados.
Planejado
- Contatos de segurança por projeto, que podem revisar e publicar correções privadas junto com proprietários e administradores.
- Forks privados do GitHub: preparar uma correção no fork privado de um aviso de segurança do GitHub repository, com seu teste de regressão, em vez de mantê-la no Coroid.
- Relatórios aos mantenedores: Quando uma vulnerabilidade está no código de uma dependência, é elaborado um relatório privado para seus mantenedores, que somente uma pessoa envia.