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 code scanning alerta 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 code scanning que encontram, explicam e até corrigem vulnerabilidades automaticamente em seus repositórios públicos. Neste tutorial, você aprenderá a manter seu trabalho seguro com 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 Fork.
  3. Na página exibida, clique em Create fork.

Como localizar vulnerabilidades no código

Agora que configuramos o projeto, vamos ativar code scanning em seu fork para verificar se há vulnerabilidades no código.

  1. De volta em GitHub, na página inicial do seu repositório, clique Security and quality.
  2. Na linha "Code scanning alertas", clique em Configurar code scanning.
  3. Na seção "Ferramentas", ao lado de "CodeQL análise", selecione Configurar e clique em Padrão.
  4. No pop-up exibido, clique em Habilitar CodeQL. Isso disparará um GitHub Actions fluxo de trabalho que examina seu código em busca de vulnerabilidades.
  5. Para verificar o status do fluxo de trabalho, na barra de navegação, clique em Ações.
  6. Depois que o fluxo de trabalho for concluído, na barra de navegação, clique em Security and quality.
  7. Para exibir o code scanning alerta descoberto pelo fluxo de trabalho, na navegação lateral, clique Code scanning e clique em Scripts entre sites refletidos.

Noções básicas sobre um code scanning alerta

Agora que code scanning identificou uma vulnerabilidade no código, vamos dividir as informações fornecidas no 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. O botão "Show paths" está destacado 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 Mostrar mais.

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 pedir Chat Copilot para explicá-la.

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 forma rápida 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 "Acelere a resolução deste alerta usando Autofixo do Copilot para CodeQL", clique em Gerar correção.

  2. Depois que Copilot gerar a sugestão de correção, ela descreverá as alterações que está sugerindo, mostrará uma prévia das alterações e informará sobre quaisquer dependências adicionadas. Tire um momento para ler o trabalho de Copilot.

  3. Para criar um pull request com a correção, clique em Commit to new branch e, em seguida, clique em 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 solicitação de pull for mesclada e o code scanning fluxo de trabalho for executado novamente, o alerta será fechado automaticamente e a confirmação de correção da vulnerabilidade será adicionada à linha do tempo.

Observação

Em projetos reais, você sempre deve examinar as alterações sugeridas por Copilot antes de confirmá-las ao seu código.

Próximas etapas

Agora que você testou o code scanning em um repositório de demonstração, habilite-o em seus próprios projetos para localizar e corrigir rapidamente as vulnerabilidades atuais e futuras.

Agora que você protegeu o código que escreveu, dê o próximo passo em direção ao código seguro verificando a segurança de suas dependências. Confira Como localizar e corrigir sua primeira vulnerabilidade de dependência.