Qual é a melhor prática para lidar com PRs que abordam vulnerabilidades de segurança em repositórios públicos?


22

Como um projeto de código aberto com um repositório público pode lidar melhor com solicitações pull (PRs) que abordam vulnerabilidades de segurança relatadas com segurança, mas ainda não divulgadas publicamente?

Estou envolvido em um projeto de código aberto com várias centenas de colaboradores. Publicamos avisos de segurança e vulnerabilidades várias vezes ao ano, como parte de um lançamento mensal agendado regularmente. Não publicamos informações sobre as vulnerabilidades até disponibilizar a versão corrigida. Podemos gerenciar com segurança os problemas de segurança em nosso sistema de gerenciamento de projetos (JIRA). Mas não temos um bom processo para ocultar os PRs que corrigem vulnerabilidades de segurança à medida que são enviados ao GitHub. Estamos preocupados que as pessoas possam encontrar essas correções antes de serem lançadas e criar explorações de dia zero.

Consideramos o uso de repositórios particulares que dividem o repositório principal, mas grande parte de nosso fluxo de trabalho de revisão e controle de qualidade atualmente ocorre nos PRs. Se movêssemos o fluxo de trabalho para um repo privado da equipe de segurança, isso reduziria a janela quando a correção fosse pública até o tempo necessário para gerar os tarballs e publicá-los no sourceforge, o que seria uma grande melhoria. Também provavelmente precisaríamos evitar a fusão dos PRs em nosso beta público.

Antes de ir nessa direção, gostaria de saber qual é a melhor prática para lidar com patches de correção de bug de segurança de pré-lançamento em projetos de código aberto com repositórios abertos? Se o problema puder ser melhor resolvido usando uma plataforma diferente do GitHub, devo mencionar que estamos avaliando a migração para o GitLab.


1
Não tenho certeza se há uma prática recomendada configurada. O GitLab é essencialmente um GitHub particular. Equilibrar as preocupações de código aberto e correções de segurança não é fácil. Quantas de suas correções de segurança vêm de pessoas que não fazem parte da sua equipe de segurança?
Berin Loritsch

A maioria dos problemas é relatada por outras pessoas, mas provavelmente menos de um quinto das correções vem das que não fazem parte da equipe de segurança.
Joe Murray

1
Na minha opinião, se você precisar que parte do seu processo seja privada, isso deve ser feito fora do GitHub (porque o GH é público); depois que esta parte específica for concluída e todos revisarem seu código; você pode criar um PR no GH que será mesclado o mais rápido possível, apenas para 'retornar' ao processo oficial. Você pode usar outra ferramenta para gerenciar essas exceções no processo.
Emerson Cardoso

2
A divulgação imediata completa (ou seja, divulgação pública sem demora) é uma coisa perfeitamente legítima a se fazer.
Miles Rout

1
Essa pergunta parece assumir que, desde que o problema de segurança não seja divulgado pela equipe, ele é desconhecido para o mundo. Isso simplesmente não é verdade; qualquer problema de segurança descoberto deve ser considerado conhecido por alguém com más intenções em algum lugar. Agora, se você presumir que alguém já conhece o problema e pode estar explorando o problema, não poderá mais adiar o lançamento da correção até o seu lançamento mensal regular. Você deve liberar o mais rápido possível. Isso significa que não há problema em seguir o fluxo regular de RP. Apenas PR contra o ramo de lançamento mais recente, mesclagem, marcação e lançamento.
precisa saber é o seguinte

Respostas:


1

O protocolo para isso é decidir os fatores de risco na exibição pública de vulnerabilidades. Para qualquer coisa relacionada à segurança, esses PRs precisam estar em um repositório particular que somente sua equipe de segurança possa ver. Isso permanece, independentemente da plataforma usada para produzir e executar solicitações de recebimento.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.