Atualizações da estrutura

Concluído

Muitos desenvolvedores consideram as estruturas e as bibliotecas que eles usam para compilar o software como decididas principalmente por recursos ou preferência pessoal. No entanto, a estrutura escolhida é uma decisão importante, não apenas por uma perspectiva de design e de funcionalidade, mas também por uma perspectiva de segurança. Escolher uma estrutura com recursos de segurança modernos e mantê-la atualizada é uma das melhores maneiras de garantir que seus aplicativos fiquem seguros.

Escolha sua estrutura com cuidado

O fator mais importante em relação à segurança quando você escolha uma estrutura é a o suporte a ela. As melhores estruturas declararam disposições de segurança e são compatíveis com grandes comunidades que melhoram e testam a estrutura. Nenhum software é 100% livre de bugs ou totalmente seguro, mas quando uma vulnerabilidade é identificada, queremos ter certeza de que ele será fechado ou de que uma solução alternativa será fornecida rapidamente.

Muitas vezes, um “bom suporte” é sinônimo de "moderno". As estruturas mais antigas tendem a ser substituídas ou eventualmente desaparecer em termos de popularidade. Mesmo se você tiver experiência significativa (ou muitos aplicativos escritos) em uma estrutura mais antiga, será melhor escolher uma biblioteca moderna com os recursos necessários. As estruturas modernas tendem a basear-se nas lições aprendidas por iterações anteriores, portanto, as escolher para novos aplicativos é uma forma de reduzir a superfície de ameaça. Você terá um aplicativo a mais com que se preocupar se uma vulnerabilidade for descoberta na estrutura mais antiga em que seus aplicativos herdados foram escritos.

Para obter mais informações sobre design seguro e redução da superfície de ameaças, confira Microsoft Azure Well-Architected Framework – Segurança.

Manter sua estrutura atualizada

As estruturas de desenvolvimento de software, como Java Spring e .NET Core, lançam atualizações e novas versões regularmente. Essas atualizações incluem novos recursos, remoção de recursos antigos e muitas vezes correções de segurança ou melhorias. Quando permitimos que nossas estruturas fiquem desatualizadas, isso cria "dívida técnica". Quanto mais desatualizados ficarmos, mais difícil e arriscado será atualizar nosso código para a versão mais recente. Além disso, assim como a escolha da estrutura inicial, manter-se em versões mais antigas da estrutura deixa você mais aberto a ameaças de segurança que foram corrigidas em versões mais recentes da estrutura.

Por exemplo, de 2016 a 2017 mais de 30 vulnerabilidades foram encontradas na estrutura Apache Struts. A equipe de desenvolvimento resolveu rapidamente essas vulnerabilidades, mas algumas empresas não aplicaram os patches e pagaram o preço, na forma de uma violação de dados. Mantenha suas estruturas e bibliotecas atualizadas.

Como faço para atualizar minha estrutura?

Algumas estruturas, como Java ou .NET, exigem uma instalação e tendem a ser liberadas em um ritmo conhecido. É uma boa ideia ficar atento a novas versões e planejar fazer um branch de seu código para experimentá-lo quando ele for liberado. Por exemplo, o .NET Core mantém uma página de notas sobre a versão que você pode verificar para localizar as versões mais recentes disponíveis.

Mais bibliotecas especializadas, como as estruturas de JavaScript ou os componentes do .NET, podem ser atualizadas por meio de um gerenciador de pacotes. NPM e Webpack são opções populares para projetos da Web e são compatíveis com a maioria dos IDEs ou ferramentas de build. No .NET, usamos NuGet para gerenciar nossas dependências de componente. De maneira muito parecida com a atualização da estrutura fundamental, a ramificação do seu código, a atualização dos componentes e os testes são uma boa técnica para validar uma nova versão de dependência.

Observação

A ferramenta de linha de comando dotnet tem uma opção add package e remove package para adicionar ou remover pacotes NuGet, mas não tem um comando update package correspondente. No entanto, acontece que você pode executar dotnet add package <package-name> em seu projeto e ele fará upgrade automaticamente do pacote para a versão mais recente. Essa é uma maneira fácil de atualizar as dependências sem ter que abrir o IDE.

Tire proveito da segurança interna

Sempre verifique para ver quais recursos de segurança suas estruturas oferecem. Nunca implemente sua própria segurança se houver uma técnica padrão ou uma funcionalidade interna. Além disso, confie em algoritmos e fluxos de trabalho comprovados porque, com frequência, eles foram analisados por vários especialistas, questionados e consolidados de modo que você pode ter certeza de que são confiáveis e seguros.

A estrutura do .NET Core tem inúmeros recursos de segurança. Aqui estão alguns dos principais pontos de partida na documentação:

Cada um desses recursos foi escrito por especialistas no campo e então testados para garantir que funcionem conforme o esperado e apenas como pretendido. Outras estruturas oferecem recursos semelhantes. Verifique com o fornecedor da estrutura para descobrir o que há em cada categoria.

Aviso

Escrever controles de segurança próprios, em vez de usar os fornecidos pela sua estrutura, não só é desperdício de tempo, como é menos seguro.

Microsoft Defender para Nuvem

Ao usar o Azure para hospedar seus aplicativos Web, o Defender para Nuvem avisará se as suas estruturas estiverem desatualizadas como parte da guia Recomendações. Não se esqueça de voltar à guia periodicamente para ver se há avisos relacionados aos seus aplicativos.

Captura de tela do Microsoft Defender para Nuvem recomendando uma atualização de estrutura.

Resumo

Sempre que possível, escolha uma estrutura moderna para compilar seus aplicativos, sempre use os recursos de segurança internos e certifique-se de mantê-la atualizada. Essas regras simples ajudarão a garantir que seu aplicativo seja iniciado em uma base sólida.