Skip to main content

Como localizar e corrigir sua primeira vulnerabilidade de código

Conheça os conceitos básicos de proteger seu código resolvendo um alerta code scanning em um repositório de demonstração.

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.

  1. Navegue até o repositório new2code/code-scanning-demo.
  2. No canto superior direito da página, clique em Fork.
  3. 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.

  1. De volta ao GitHub, na home page do repositório, clique em Security.
  2. Na linha "Code scanning alerts", clique em Set up code scanning.
  3. Na seção "Tools", ao lado de "", selecione Set up e clique em Default.
  4. 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.
  5. Para verificar o status do fluxo de trabalho, na barra de navegação, clique em Actions.
  6. Depois que o fluxo de trabalho for concluído, na barra de navegação, clique em Security.
  7. 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.

Captura de tela do local de um alerta do code scanning. Um botão "Show paths" é descrito em laranja.

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 .

Captura de tela dos detalhes de um alerta do code scanning. Uma lista suspensa rotulada como "Show more" é descrita em laranja.

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.

Captura de tela da linha do tempo de um alerta do code scanning.

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.

  1. 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.

  2. 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.

  3. Para criar uma pull request com a correção, clique em Commit to new branch e clique Commit change.

  4. 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.

  5. 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.