142 views 7 mins

GitHub Advanced Security: segurança e qualidade do código

em Destaques
segunda-feira, 08 de novembro de 2021

Claiton Luis Padilha (*)

Segundo o Veracode Report – State of Software Security, 83% das aplicações têm pelo menos uma vulnerabilidade de segurança e as equipes que analisam seu código menos de 10 vezes por semana levam, em média, 70 dias para resolver falhas de segurança e desempenho. Isso simplesmente pode acabar com um projeto. As linhas de código aumentam quase que na mesma velocidade em que a equipe cresce.

Somado à falta de padrões e análise de segurança, a médio prazo, esse crescimento pode provocar sérios danos no seu produto. Além disso, problemas com desempenho e segurança podem permanecer ocultos por muito tempo, ou serem descobertos somente em um momento crítico, com o software em produção, por exemplo.

Imagine o tempo e o esforço dedicados para revisar um software com muitos anos de desenvolvimento e milhares – ou milhões – de linhas escritas? Isso sem falar no alto risco de alterar muitas vezes o coração do sistema. Líderes de empresas que trabalham com desenvolvimento de software e que têm em um produto digital o core de seu negócio sabem que as equipes obrigatoriamente precisam manter a qualidade e a segurança dos códigos.

E, apesar disso, em ambientes com um número cada vez maior de aplicações, mantê-los seguros e otimizados não é uma tarefa das mais simples. Alguns processos, no entanto, colaboram de forma ativa para a segurança do código. Um deles é seguir um padrão de escrita e semântica.

. Como garantir um código menos vulnerável – Imagine que um grupo de pessoas está escrevendo um livro de forma colaborativa. Nesse caso, se todos os autores seguirem as mesmas regras gramaticais e o mesmo estilo de redação, o resultado será um material de fácil entendimento e, por consequência, com menos trabalho para o revisor.

O desenvolvimento de software passa por um desafio semelhante, pois existem muitas maneiras de escrever o mesmo código. Diferentes definições, como nome de variáveis, nomes de funções, indentação do código e quais laços de repetição usar influenciam o entendimento e a otimização da aplicação. Um laço ou um “if” fora do padrão pode acabar usando muito mais memória do que o necessário ou gerar um comportamento inesperado da tecnologia

Junto a essa dificuldade, surgem outros fatores que devem ser considerados, como:

• Qual o padrão de escrita de funções, nomes de variáveis e laços mais adequado para este projeto?
• Como fazer todo o time ter acesso e conhecimento sobre o padrão adotado?
• Como garantir que todos estarão seguindo o mesmo padrão sem atrasar o processo?
• Como analisar milhares de linhas de código de maneira eficiente?

Para solucionar o problema de qual padrão usar, é possível adotar padrões já criados e utilizados por outras empresas reconhecidas no mercado, como Google e Facebook, ou mesmo consultar a documentação da tecnologia que está sendo usada. Esse passo também soluciona a questão de todos do time terem acesso a informações sobre o padrão de código a seguir.

Já para garantir que o time esteja usando o padrão correto, a empresa pode adotar o sistema de code review. Ou seja, para cada alteração no código, um tech lead deve analisar e aprovar o que foi feito. Porém, nem sempre é simples analisar milhares de linhas de códigos. E, de fato, não existe uma maneira fácil de fazer isso.

Talvez você precise montar uma equipe somente para essa tarefa. Neste cenário, também temos que levar em conta o erro humano, que pode acontecer frequentemente em um ambiente com muitas alterações e linhas escritas por dia.

. Uma plataforma para manter a segurança – Uma alternativa para contornar os desafios indicados é o GitHub Advanced Security. O objetivo da licença é facilitar a rotina de padronização de código e de aprovação das novas linhas criadas, o que é feito por meio de algumas ferramentas.

. Code Scanning – A cada push na branch é realizada uma pesquisa de possíveis vulnerabilidades de segurança e erros de codificação. Também é analisado se o código escrito está dentro dos melhores padrões de segurança do mercado. Isso previne possíveis bugs e memory leaks, contribuindo para o amadurecimento do código.

. Secret scanning – De tempos em tempos, é realizada uma varredura nos códigos, para tentar localizar segredos como tokens e chaves de acesso. Isso evita que dados sensíveis sejam expostos de maneira equivocada.

. Dependency Review – Gerenciar as dependências de vários projetos é uma tarefa complicada, mas fundamental para a segurança da aplicação. O dependency review mostra detalhes de qualquer versão vulnerável antes de realizar o merge de um pull request. Essa funcionalidade permite que sua equipe tenha mais tempo e confiança para investir em melhorias.

Considerando os desafios operacionais que envolvem a gestão de times de tecnologia e a celeridade necessária em empresas que desenvolvem produtos digitais, contar com ferramentas que auxiliem e facilitem processos se torna fundamental para diminuir as possibilidades de erros humanos. Nesse sentido, garante-se a segurança e a integridade do seu ativo principal: seu software.

(*) – É Arquiteto na ilegra, empresa global de design, inovação e software (https://ilegra.com/).