Corrigir vulnerabilidades de código e gerenciar diferenças

O CodeMender pode produzir, validar e aplicar automaticamente patches de código-fonte para vulnerabilidades verificadas, testando-os no seu sandbox local para evitar regressões.

Gerar correções de vulnerabilidades

Use cm fix para gerar um patch de segurança validado para uma descoberta verificada:

cm fix FINDING_ID

Quando você executa cm fix, o CodeMender realiza as seguintes etapas de validação:

  1. Gera um candidato a patch usando o mecanismo de raciocínio hospedado na nuvem.
  2. Aplica o patch a uma cópia do código-fonte na sua sandbox local.
  3. Compila e testa a base de código executando o build.command configurado para garantir que o projeto seja criado e que os testes de unidade sejam aprovados.
  4. Executa novamente o exploit de PoC verificado para confirmar que a vulnerabilidade não pode mais ser explorada.

Por padrão, o CodeMender pede que você confirme cada modificação de arquivo antes de gravar no disco do seu espaço de trabalho. Quando todas as verificações forem aprovadas, o CodeMender vai aplicar o patch verificado ao seu espaço de trabalho. Em seguida, adicione as mudanças ao stage.

Corrigir flags

  • Forneça contexto de correção (-c / --context): forneça restrições arquitetônicas ou diretrizes de programação:
    cm fix FINDING_ID -c "Use the safe parameterized database helper in src/db/query.go"
  • Aprovar automaticamente gravações (-y / --yes): aprova automaticamente todas as gravações de arquivos e solicitações durante o processo de correção:
    cm fix FINDING_ID -y
    Observação:também é possível desativar os comandos de escrita interativos globalmente definindo confirm_writes: false no config.yaml.
  • Controlar o uso de sandbox (--sandbox): ative ou desative explicitamente o sandbox para esta execução (por exemplo, --sandbox=false para desativar):
    cm fix FINDING_ID --sandbox=false
  • Ignorar sandbox (--unrestricted): ignore temporariamente todas as proteções de sandbox para esta execução, desativando os limites do sistema de arquivos e o isolamento de contêiner no nível do SO:
    cm fix FINDING_ID --unrestricted
  • Ignorar cache (--no-cache): força o CodeMender a gerar um patch novo:
    cm fix FINDING_ID --no-cache

Inspecionar e gerenciar diferenças do VCS local

O CodeMender inclui comandos VCS integrados para ajudar você a inspecionar, preparar e gerenciar mudanças de código introduzidas por patches antes de confirmá-las:

  • Ver o status do repositório: confira quais arquivos o CodeMender modificou ou criou no seu espaço de trabalho local.

    cm vcs status

  • Inspecionar diferenças: revise linha por linha as diferenças unificadas de todas as modificações de código não confirmadas geradas pelo agente.

    cm vcs diff

  • Adicionar mudanças: adicione modificações de patch verificadas ao seu ambiente de teste local para que você possa testá-las e confirmá-las.

    cm vcs stage

  • Reverter modificações da sessão: descarta todas as modificações de arquivos locais geradas pelo CodeMender durante a sessão atual e restaura o repositório ao estado original.

    cm vcs reset