Vamos iniciar o novo ano discutindo a necessidade de uma Web Application Firewall (WAF), alavancando estruturas de segurança e bibliotecas de código fonte, e um novo serviço chamado Bugalert que o notificará de quaisquer vulnerabilidades de severidade elevada/crítica em tempo real.
Utilizar um WAF ou não utilizar um WAF
A eficácia do WAF é um tema muito debatido, uma vez que pode ser difícil determinar a eficácia de um WAF. Os WAFs podem ser benéficos sempre que as seguintes condições sejam satisfeitas:
- O custo da reparação das vulnerabilidades é mais elevado do que a implementação de um WAF; ou
- A quantidade de tráfego que será bloqueada é inferior ao seu limiar de tolerância.
Também pode utilizar uma firewall para implementar mitigações que impeçam os bots e raspadores de chegar ao seu sítio web, oferecer segurança na camada de aplicação, e permitir/banir a listagem de IPs. Uma simples implementação de um WAF poderia incluir a utilização de um Captcha ou um desafio Javascript para reduzir estes tipos de bots. Pode usar um WAF como um proxy para permitir tráfego específico enquanto proíbe o resto.
Uma importante tomada de posição sobre os WAFs é que eles não são uma solução de conjunto-e-esquecimento. Requerem um cuidado carinhoso desde o início até à implementação do WAF. Requer um pessoal/equipa dedicado a manter o WAF para optimizar continuamente a sua utilização.
A forma ideal de abordar um WAF é tratá-lo como uma solução predominantemente concebida para bloquear tráfego indesejado para a sua aplicação web.
Alavancagem de estruturas de segurança e bibliotecas para código seguro
A implementação de código seguro por si só pode ser uma tarefa incómoda para executar correctamente. Os atacantes podem abusar de pequenas lascas do seu código para tornar a sua aplicação vulnerável.
Quanto à capacidade de proteger o seu código, existem estruturas e bibliotecas que lhe permitem concentrar-se na segurança, ao mesmo tempo que lhe permitem concentrar-se na construção do seu produto. Este artigo de Github discute diferentes métodos e factores que podem ajudá-lo a avaliar o que deve procurar ao utilizar estas estruturas e bibliotecas.
Sempre que estiver a decidir que bibliotecas utilizar, deve considerar estes cinco factores:
- O pacote é amplamente utilizado?
- O pacote tem uma boa reputação?
- Existem boas críticas sobre a biblioteca específica?
- O pacote é mantido activamente?
- O pacote tem maturidade?
- Este é um bom indicador de que existe um roteiro claro com a maioria das características a serem consistentemente implementadas.
- Os problemas de segurança do pacote estão a ser resolvidos atempadamente?
Quando se trata de estruturas web e se pretende segurança nessas estruturas, é importante determinar que tarefas de segurança (codificação de saída XSS ou validação de entrada) devem ser tratadas pela estrutura.
Um factor importante a considerar ao utilizar uma estrutura web com alguma forma de segurança embutida é permitir que a estrutura trate da codificação de dados para si. Quando deixar a estrutura tratar da codificação de dados por si, isto irá atenuar as hipóteses de um utilizador perder ou implementar incorrectamente uma medida de segurança. Se vai permitir um possível comportamento inseguro, deverá haver uma análise minuciosa do comportamento permitido e a percepção de que não é o padrão.
Ao incorporar bibliotecas e estruturas, é importante actualizar as dependências no seu código-fonte. Pode utilizar ferramentas de Análise de Composição de Software como o GitHub Dependabot para manter as suas dependências actualizadas.
Bugalert
Após a vulnerabilidade log4j, um profissional de segurança, Matthew Sullivan, lançou um novo serviço chamado Bugalert, que alerta os profissionais de segurança e TI para quaisquer vulnerabilidades elevadas e críticas. O único objectivo de Bugalert é notificar rapidamente falhas graves de software via e-mail, telefone, ou SMS.
Bugalert é actualmente para os contribuintes desenvolverem e melhorarem o seu programa. Para quem estiver interessado em contribuir, sinta-se à vontade para abrir uma edição do Github.
Comentários