Ao aprender a codificar, é normal introduzir inadvertidamente vulnerabilidades em seus projetos. Se esses issues de segurança não forem resolvidos antes de compartilhar seu trabalho, os invasores poderão usá-los para manipular seu código e acessar dados confidenciais, assim, é fundamental identificá-los e corrigi-los o quanto antes.
Felizmente, há ferramentas como o code scanning que localizam, explicam e até corrigem vulnerabilidades automaticamente em seus repositórios públicos. Neste tutorial, você aprenderá a manter seu trabalho seguro com o code scanning.
Como configurar o repositório de demonstração
Vamos começar bifurcando um projeto de demonstração com uma vulnerabilidade de segurança. Esse projeto cria uma página da Web simples, porém, como não implantaremos o projeto, não há nenhum risco de segurança neste exercício.
- Navegue até o repositório
new2code/code-scanning-demo
. - No canto superior direito da página, clique em Fork.
- Na página exibida, clique em Create fork.
Como localizar vulnerabilidades no código
Agora que configuramos o projeto, vamos ativar o code scanning para que seu fork verifique se há vulnerabilidades no código.
- De volta ao GitHub, na home page do repositório, clique em Security.
- Na linha "Code scanning alerts", clique em Set up code scanning.
- Na seção "Tools", ao lado de "", selecione Set up e clique em Default.
- Na janela pop-up exibida, clique em Enable CodeQL. Isso disparará um fluxo de trabalho GitHub Actions que verifica seu código em busca de vulnerabilidades.
- Para verificar o status do fluxo de trabalho, na barra de navegação, clique em Actions.
- Depois que o fluxo de trabalho for concluído, na barra de navegação, clique em Security.
- Para exibir o alerta code scanning descoberto pelo fluxo de trabalho, na navegação lateral, clique em Code scanning e clique em Reflected cross-site scripting.
Como entender um alerta do code scanning
Agora que o code scanning identificou uma vulnerabilidade no código, vamos detalhar as informações do alerta.
Localidade
O alerta mostra uma pequena visualização de um arquivo, centralizada nas linhas de código que criam a vulnerabilidade. Em nosso caso, a vulnerabilidade é detectada na linha 8 do nosso arquivo index.js
, em que implementamos a entrada fornecida pelo usuário em nosso site.
Se dermos uma olhada mais de perto, poderemos ver que o issue subjacente ocorre na linha 7, quando atribuímos greet
à entrada do usuário sem verificar se há código mal-intencionado. Para ver uma exibição passo a passo da vulnerabilidade em nosso código, no texto explicativo abaixo das linhas vulneráveis, clique em Mostrar caminhos.
Descrição e recomendação
Abaixo da visualização do arquivo, code scanning fornece uma descrição mais detalhada da vulnerabilidade. Para ver a correção recomendada, bem como exemplos do código vulnerável e fixo, clique em Show more .
Em nosso caso, a recomendação é limpar a entrada do usuário antes de usá-la. Isso significa que precisamos verificar a entrada de código mal-intencionado e limpá-lo, se necessário.
Dica
Se você não entender completamente a correção recomendada, tente perguntar ao Copilot Chat para obter uma explicação.
Linha do tempo
Por fim, você pode ver a linha do tempo do alerta na parte inferior da página. Nossa linha do tempo contém a confirmação do local em que a vulnerabilidade foi detectada pela primeira vez e será atualizada automaticamente quando corrigirmos a vulnerabilidade.
Como corrigir uma vulnerabilidade automaticamente
Para proteger nosso projeto de modo rápido e fácil, vamos usar Correção automática do GitHub Copilot para code scanning.
-
Abaixo do título do alerta, na caixa que sugere "Speed up the remediation of this alert using Correção automática do Copilot for CodeQL", clique em Generate fix.
-
Depois que Copilot gerar a sugestão de correção, ele descreverá as alterações que está sugerindo, renderizará uma visualização das alterações e chamará todas as dependências adicionadas. Reserve um momento para ler o trabalho do Copilot.
-
Para criar uma pull request com a correção, clique em Commit to new branch e clique Commit change.
-
Depois que a pull request de rascunho for criada, na parte inferior da página, clique em Ready for review para torná-la mesclável.
-
Para aplicar a correção, clique em Merge pull requeste clique em Confirm merge.
Depois que a pull request for mesclada e o fluxo de trabalho code scanning for executado outra vez, o alerta será fechado de modo automático e a confirmação de correção da vulnerabilidade será adicionada à linha do tempo.
Observação
Em projetos reais, sempre examine as alterações que o Copilot sugere antes de confirmá-las no código.
Próximas etapas
Agora que você avaliou o code scanning em um repositório de demonstração, habilite-o em seus projetos para localizar e corrigir rapidamente vulnerabilidades atuais e futuras.