A segurança nem sempre está entre as prioridades das pessoas desenvolvedoras quando estão criando novos códigos. Afinal, garantir que um código seja seguro pode ser um desafio não tão divertido como criar testes ou verificar se as dependências estão atualizadas. Mas, a boa notícia é que existem muitos produtos e recursos capazes de ajudar na questão da segurança durante a criação de códigos, tornando essa tarefa mais fácil sem precisar desviar a atenção do desenvolvimento.
Para isso, a automatização tem um papel fundamental e o GitHub busca facilitar a escrita e o envio de softwares mais seguros sem que seja preciso ser especialista em segurança para usá-los. Brian Douglas, Diretor de Developer Advocacy no GitHub, traz abaixo cinco dicas de segurança que pessoas desenvolvedoras podem usar em seu fluxo de trabalho para ficar um passo à frente no que diz respeito à escrita de código e criação de softwares.
Dica 1 – Torne o CodeQL parte da sua rotina de trabalho
A verificação de código desenvolvida pelo CodeQL é uma das ferramentas mais populares no GitHub quando se trata de garantir que não haja falhas de segurança no código que está sendo enviado. O mecanismo de análise de código estático do GitHub trata o código como dados e o torna consultável. Em seguida, usando uma biblioteca crescente de consultas de open source correspondentes a padrões de vulnerabilidade de segurança conhecidos, o CodeQL escaneia seu código para identificar possíveis problemas.
É possível adaptar o fluxo de trabalho às suas necessidades para ser executado sempre que enviar um novo código ou confirmar alterações em sua ramificação principal (ou qualquer outro número de eventos de webhook no GitHub). Além disso, as consultas do CodeQL são open source, o que significa que esta biblioteca está em constante crescimento com as contribuições da comunidade para proteger um código contra novos padrões, sem nenhuma ação da parte do usuário.
Dica 2 – Mantenha todas as suas dependências atualizadas com o Dependabot
O Dependabot é complementar ao CodeQL. Enquanto o CodeQL detecta problemas de segurança em seu próprio código, o Dependabot detecta vulnerabilidades originadas das dependências do seu projeto. Um exemplo recente foi o Log4j, que introduziu uma série de impactos upstream para registros e dependências de pacotes. Como o Log4j é amplamente usado em aplicativos e sites para ajudar a registrar atividades, esse incidente significou que muitas pessoas foram forçadas a atualizar rapidamente suas versões do Log4j para evitar possíveis problemas.
É altamente recomendável que qualquer dev no GitHub configure o Dependabot quanto antes, já que ele verifica automaticamente as dependências, procura por versões vulneráveis conhecidas no Banco de Dados Consultivo do GitHub, e informa se você tem uma vulnerabilidade com alertas próprios. Afinal, quando há uma vulnerabilidade de segurança, ninguém quer ter que se esforçar para descobrir como obter uma versão compatível.
Dica 3 – Adicione branches protegidas ao seu repositório
Seja trabalhando sozinha, em um grande projeto de open source ou construindo algo no trabalho, os branches protegidas são um ótimo complemento para garantir que seu projeto seja mais seguro. Branches, ou ramificações, protegidas facilitam o teste de novos recursos em um ambiente de pré-produção antes de liberá-los e também permitem definir controles sobre quem pode enviar alterações de código para produção.
Em resumo, a principal vantagem das branches protegidas é que elas ajudam a evitar que qualquer colaborador prejudique acidentalmente o projeto, além de, consequentemente, também mantê-lo seguro caso haja alguém mal-intencionado.
Dica 4 – Defina como o GitHub Actions será usado no seu repositório
No mundo do open source, qualquer pessoa pode usar o GitHub Actions, não importa quem ou onde esteja, o que é uma grande vantagem, já que essa funcionalidade permite criar fluxos de trabalho que criam e testam cada pull request no seu repositório, ou implantar pull requests mescladas em produção. Entretanto, nem sempre é interessante abrir o acesso sem restrições já que existem pessoas mal intencionadas.
Para algumas comunidades de open source, o risco de um usuário mal-intencionado usar o GitHub Actions em seus projetos torna importante limitar quem pode usar essa função e quais ações podem ser usadas em um determinado repositório. É possível desativar o GitHub Actions ou limitar seu uso a contribuidores iniciantes e outras pessoas, para que eles não prejudiquem um projeto.
Dica 5 – Defina as permissões para GITHUB_TOKEN no GitHub Actions
GITHUB_TOKEN é um ótimo recurso no GitHub Actions que pode ser usado para trazer segurança adicional aos projetos em que alguém precise autenticar fluxos de trabalho. É um token de acesso especial que é gerado automaticamente para cada projeto que precisa de acesso à instalação. Depois que esse trabalho for concluído, o token expira automaticamente para reduzir qualquer possível exposição a riscos.
É importante considerar o uso de um GITHUB_TOKEN mais seguro em vez de um Personal Access Token (PAT) menos seguro. Outro benefício é poder controlar as permissões de leitura e gravação para seguir o princípio do menor fluxo de trabalho e mitigar qualquer exposição a riscos.
Focar na segurança pode muitas vezes soar como uma maneira de desacelerar o que mais importa: escrever um bom código. No entanto, ao incorporar essas ferramentas e recursos nativos da plataforma ao fluxo de trabalho, a criação de código não apenas se tornará mais segura como também mais veloz com o tempo, pois permitirá economizar tempo no futuro fazendo ajustes. “O objetivo do GitHub é facilitar a vida das pessoas desenvolvedoras, sem prejudicar a qualidade do código, e isso envolve segurança, agilidade e eficiência nas tarefas rotineiras”, conclui Brian Douglas.