Bem -vindo ao tutorial Java de digitalização de código! Este tutorial o levará a como configurar o Github Security Avançado: a digitalização de código, bem como interpretar os resultados que ele pode encontrar. O repositório a seguir contém vulnerabilidade de injeção de SQL para fins de demonstração.
A digitalização de código é um recurso que você usa para analisar o código em um repositório do GitHub para encontrar vulnerabilidades de segurança e erros de codificação. Quaisquer problemas identificados pela análise são mostrados no GitHub.
Você pode usar a digitalização de código com o CodeQL, um mecanismo de análise de código semântico. O CodeQL trata o código como dados, permitindo que você encontre vulnerabilidades em potencial em seu código com maior confiança do que os analisadores estáticos tradicionais.
Este tutorial com análise CodeQL de uso com a varredura de código para procurar vulnerabilidades dentro do seu código.
Comece criando um novo repositório a partir de um garfo (público) ou clonando o repositório.

Onde a criação do repositório bifurcado, certifique -se de
Clique na guia Security .

Clique em Set up code scanning .

Clique no botão Setup this workflow por análise CodeQL.

Isso criará um arquivo de fluxo de trabalho de ações do GitHub com o CodeQL já configurado. Como Java é um idioma compilado, você precisará configurar a construção nas etapas posteriores. Consulte a documentação se você deseja configurar a análise CodeQL com um sistema de IC de terceiros em vez de usar ações do GitHub.
O arquivo de fluxo de trabalho de ações contém várias seções diferentes, incluindo:

Clique em Start Commit -> Commit this file para cometer as alterações na ramificação principal .
Existem vários eventos que podem desencadear um fluxo de trabalho de ações do GitHub. Neste exemplo, o fluxo de trabalho será acionado

A configuração do novo fluxo de trabalho CodeQL e cometê -lo na ramificação principal na etapa acima acionará a varredura.
Guia Actions de clique -> CodeQL
Clique na execução específica do fluxo de trabalho. Você pode visualizar o progresso do fluxo de trabalho executado até que a análise seja concluída.

Depois que o fluxo de trabalho estiver concluído, clique na guia Security -> Code Scanning Alerts . Uma alerta de segurança "Consulta construída a partir de fontes controladas pelo usuário" deve ser visível.
Clicar no alerta de segurança fornecerá detalhes sobre o alerta de segurança, incluindo:

Clique em Show more para ver uma descrição completa do alerta, incluindo exemplos e links para informações adicionais.


A análise CodeQL é capaz de rastrear o caminho do fluxo de dados da fonte para o afundar e oferece a capacidade de visualizar a travessia do caminho dentro do alerta.
Clique em show paths para ver o caminho do fluxo de dados que resultou nesse alerta.


Para corrigir esse alerta específico, precisaremos garantir que os parâmetros usados na consulta SQL sejam validados e higienizados.
Clique na guia Code e edite o arquivo IndexController.java na pasta Controllers , substitua o conteúdo pelo fixme de arquivo.

Clique em Create a new branch for this commit and start a pull request , nomeie a fix-sql-injection da filial e crie a solicitação de tração.
Na solicitação de tração, você notará que a análise CodeQL começou como uma verificação de status. Espere até que ele seja concluído.

Após a conclusão do fluxo de trabalho, clique em Details pelos Code Scanning Results / CodeQL .

Observe que a varredura de código detectou que essa solicitação de tração corrigirá a vulnerabilidade de injeção SQL que foi detectada antes.

Mesclar a solicitação de tração. Depois que a solicitação de tração foi mesclada, outro fluxo de trabalho começará para digitalizar o repositório para qualquer vulnerabilties.
Após a conclusão do fluxo de trabalho final, volte para a guia Security e clique em Closed . Observe que a consulta criada a partir de alerta de segurança de fontes controladas pelo usuário agora aparece como um problema fechado.

Clique no alerta de segurança e observe que ele detalha quando a correção foi feita, por quem e a confirmação específica. Isso fornece rastreabilidade total para detalhar quando e como um alerta de segurança foi corrigido e exatamente o que foi alterado para remediar o problema.

Agora que configuramos a análise CodeQL e corrigimos um alerta de segurança, podemos tentar introduzir um alerta em uma solicitação de tração.
Crie uma nova solicitação de tração com a filial base como sua ramificação main e a filial de comparação como a new-feature ramificação.

Certifique -se de que a filial base esteja definida como sua própria filial main de repositórios versus o ramo main do repositório original.
Depois que a solicitação de tração for criada, você notará que a análise CodeQL foi iniciada como uma verificação de status. Espere até que ele seja concluído.
Após a conclusão do fluxo de trabalho, os Code Scanning Results / CodeQL terá falhado. Observe que a varredura de código detectou que essa solicitação de tração apresenta um novo alerta de segurança.

Diretamente na solicitação de tração, você notará que o Bot de digitalização do código do Github deixou uma revisão da solicitação de tração com os detalhes do alerta de segurança. Isso ajudará os desenvolvedores a identificar rapidamente os problemas de segurança introduzidos em suas solicitações de tração.

Isso também permite a colaboração entre desenvolvedores e equipes de segurança para discutir o alerta de segurança e como remediá -lo.

Clique em Show more details do novo Code Scanning Alert para pular para a guia Security e visualizar os detalhes do alerta de segurança.

Observe que o alerta de segurança foi encontrado In pull request e não na filial main (produção).
Pronto para falar sobre os recursos avançados de segurança da GitHub Enterprise? Entre em contato com as vendas para obter mais informações!
Confira a página de recursos de segurança do Github para obter mais recursos de segurança incorporados ao GitHub.
Confira a documentação de digitalização de código para obter opções de configuração e detalhes técnicos adicionais.