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 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 no sandbox local.
  3. Compila e testa a base de código executando o build.command configurado para garantir que o projeto seja criado e 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 gravá-la no disco no seu espaço de trabalho. Depois que todas as verificações forem aprovadas, o CodeMender vai aplicar o patch verificado ao seu espaço de trabalho. Em seguida, prepare as mudanças.

Sinalizações de correção

  • Forneça contexto de correção (-c / --context): forneça restrições de arquitetura ou diretrizes de programação:
    cm fix FINDING_ID -c "Use the safe parameterized database helper in src/db/query.go"
  • Aprovar automaticamente as solicitações (-y / --yes): aprova automaticamente todas as gravações de arquivos e solicitações de confirmação de comando durante o processo de correção:
    cm fix FINDING_ID -y
    Observação: também é possível desativar as solicitações de confirmação interativas no config.yaml definindo tools.confirm_writes: false e tools.confirm_commands: false.
  • Controlar o uso de sandbox (--sandbox): ative ou desative explicitamente o sandbox no nível do SO para essa execução (por exemplo, --sandbox=false para desativar):
    cm fix FINDING_ID --sandbox=false
  • Ignorar limites de caminho (--allow-all-paths): desativa a verificação de limite de caminho do espaço de trabalho para essa execução, permitindo que as ferramentas do agente acessem caminhos fora da raiz do projeto e do project_paths configurado (combine com --sandbox=false para acessar caminhos de host que não estão montados no sandbox):
    cm fix FINDING_ID --allow-all-paths
  • Ignorar política de comando (--allow-all-commands): desative a aplicação da lista de bloqueio de command_policy.yaml para esta execução:
    cm fix FINDING_ID --allow-all-commands
  • Ignorar cache (--no-cache): force o CodeMender a gerar um novo patch:
    cm fix FINDING_ID --no-cache

Inspecionar e gerenciar diferenças de VCS locais

O CodeMender inclui comandos de VCS integrados para ajudar você a inspecionar, preparar e gerenciar as mudanças de código que os patches introduzem 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: analise as diferenças unificadas linha por linha de todas as modificações de código não confirmadas que o agente gerou.

    cm vcs diff

  • Preparar mudanças: adicione as modificações verificadas do patch ao ambiente de preparo local para testar e confirmar.

    cm vcs stage

  • Reverter modificações da sessão: descarte todas as modificações de arquivos locais que o CodeMender gerou durante a sessão atual e restaure o repositório para o estado de referência.

    cm vcs reset