
Mecanismo open-source de IDS/IPS/NSM de rede para inspeção de tráfego em tempo real, detecção e prevenção de intrusões, análise de protocolos e caça a ameaças baseada em regras.
Suricata é um mecanismo de IDS, IPS e NSM para redes, desenvolvido pela OISF e pela comunidade Suricata.
Aceitamos com prazer patches e outras contribuições. Veja nosso para saber como começar.
Suricata é um software complexo que lida com dados de entrada em sua maioria não confiáveis. O tratamento incorreto desses dados terá consequências graves:
Em outras palavras, achamos que os riscos são bastante altos, especialmente porque em muitos casos comuns o IDS/IPS será diretamente acessível a um atacante.
Por esse motivo, desenvolvemos um processo de QA bastante extenso. Uma consequência é que contribuir para o Suricata pode ser um processo um tanto demorado.
Em linhas gerais, as etapas são:
Os membros da equipe OISF podem enviar builds para nosso ambiente privado de QA. Ele executará uma série de testes de compilação e uma suíte de regressão para confirmar que nenhum recurso existente quebra.
As execuções finais de QA levam no mínimo algumas horas e geralmente são executadas durante a noite. Atualmente, o processo inclui:
Além desses testes, dependendo do tipo de alteração de código, outros testes podem ser executados manualmente:
É importante entender que quase todos os testes acima são usados como testes de aceitação. Se algo falhar, cabe a você corrigir isso no seu código.
Uma etapa do QA é atualmente executada após o merge. Enviamos builds para o programa Coverity Scan. Devido a limitações desse serviço (gratuito), podemos enviar no máximo uma vez por dia. É claro que pode acontecer de, após o merge, a comunidade encontrar problemas. Em ambos os casos, pedimos que você ajude a resolver os problemas à medida que surgirem.
P: Você aceitará meu PR?
R: Isso depende de vários fatores, incluindo a qualidade do código. Com novos recursos, também depende de a equipe e/ou a comunidade considerarem o recurso útil, de quanto ele afeta outros códigos e recursos, do risco de regressões de desempenho, etc.
P: Quando meu PR será mesclado?
R: Depende. Se for um recurso importante ou considerado uma alteração de alto risco, provavelmente entrará na próxima versão principal.
P: Por que meu PR foi fechado?
R: Conforme documentado no fluxo de trabalho do GitHub do Suricata, esperamos uma nova pull request para cada alteração.
Normalmente, a equipe (ou a comunidade) dará feedback sobre um pull request, após o qual se espera que ele seja substituído por um PR melhorado. Portanto, veja os comentários. Se você discordar dos comentários, ainda podemos discuti-los no PR fechado.
Se o PR foi fechado sem comentários, provavelmente é devido a uma falha no QA. Se as verificações do GitHub-CI falharam, o PR deve ser corrigido imediatamente. Não há necessidade de discutir sobre isso, a menos que você acredite que a falha no QA esteja incorreta.
P: O compilador/analisador de código/ferramenta está errado, e agora?
R: Para auxiliar na automação do QA, não aceitamos a permanência de avisos ou erros. Em alguns casos, isso pode significar que adicionamos uma supressão se a ferramenta suportar (por exemplo, valgrind, DrMemory). Alguns avisos podem ser desativados. Em alguns casos excepcionais, a única 'solução' é refatorar o código para contornar uma limitação de falso positivo do verificador estático de código. Embora frustrante, preferimos isso a deixar avisos na saída. Avisos tendem a ser ignorados e aumentam o risco de esconder outros avisos.
P: Acho que seu teste de QA está errado
R: Se você realmente acha que está, podemos discutir como melhorá-lo. Mas não chegue a essa conclusão rápido demais; na maioria das vezes, o código é que está errado.
P: Vocês exigem a assinatura de um acordo de licença de contribuidor?
R: Sim, fazemos isso para manter a propriedade do Suricata em uma única mão: a Open Information Security Foundation. Veja http://suricata.io/about/open-source/ e http://suricata.io/about/contribution-agreement/