Rever alterações de código quanto à segurança

Reveja pull requests e alterações locais quanto a regressões de segurança, manualmente ou em CI/CD.

Execute uma revisão de segurança de alterações para encontrar regressões num conjunto de alterações gerido por Git. O Codex revê cada ficheiro alterado semelhante a código-fonte e o respetivo código de suporte direto. Não expande a revisão para uma auditoria completa do repositório.

Para analisar um repositório inteiro em vez de uma alteração específica, consulte Executar uma análise de segurança.

Executar uma revisão manual

Na aplicação para computador, abra Security, selecione Scans e selecione + Scan. Escolha o repositório e, em seguida, selecione Changes. Reveja alterações por confirmar, um único commit ou uma revisão de base e de destino. Deep scan não está disponível para uma análise de alterações.

Também pode pedir ao Codex para rever alterações por confirmar numa conversa:

Use $codex-security:security-diff-scan to review my current uncommitted changes for security regressions.

Para um commit ou intervalo de branches, especifique ambas as revisões quando necessário:

Use $codex-security:security-diff-scan to review the changes from origin/main to HEAD for security regressions. Focus on authentication, authorization, input handling, filesystem access, network requests, and secrets.

Também pode indicar um pull request quando as respetivas revisões de base e de destino estiverem disponíveis no checkout local.

Confirmar a alteração na configuração

  1. Selecione Changes.
  2. Confirme o repositório com checkout efetuado, a branch atual e o commit mais recente.
  3. Em Changes to review, escolha:
    • Uncommitted changes para a árvore de trabalho atual.
    • O commit mais recente para uma revisão de um único commit.
    • Uma revisão de base e de destino para um intervalo de branch ou pull request.
  4. Confirme que o resumo descreve a alteração que pretendia rever.
  5. Selecione Start scan.

O Codex não muda para outra branch nem troca a árvore de trabalho selecionada. Se uma revisão solicitada não estiver disponível localmente, obtenha-a antes da revisão ou forneça uma revisão base e uma revisão de topo disponíveis localmente.

Atuar sobre as conclusões

Depois de rever os resultados, corrija e verifique uma deteção aceite ou exporte e acompanhe as deteções.

Automatizar revisões em CI/CD

Para a CLI autónoma, consulte Executar o Codex Security em CI para obter JSON estruturado, uma política de gravidade e carregamento de SARIF. Continue nesta secção para invocar a skill do plugin instalado através de codex exec.

Execute $codex-security:security-diff-scan em CI quando o executor conseguir invocar a CLI do Codex sem interação. Primeiro, instale a CLI sem expor a credencial da análise:

npm install --global @openai/codex

Instale o plugin Codex Security na CLI:

codex plugin add codex-security@openai-curated

O comando de instalação utiliza o marketplace público de plugins da CLI do Codex. Consulte o registo de alterações do plugin para conhecer os requisitos específicos de cada versão.

Em seguida, forneça uma API key da OpenAI a partir do armazenamento de segredos de CI como CODEX_SECURITY_API_KEY. Exponha a credencial apenas durante a análise:

CODEX_API_KEY="$CODEX_SECURITY_API_KEY" codex exec \
  --sandbox workspace-write \
  "Use \$codex-security:security-diff-scan to review changes from $BASE_REVISION to $HEAD_REVISION for security regressions. Do not modify the checkout."

O sandbox com permissão de escrita permite que a análise crie artefactos temporários. O prompt continua a exigir que o Codex mantenha inalterada a cópia de trabalho do código-fonte.

A análise escreve os resultados em $TMPDIR/codex-security-scans/<repository>/<scan-id>/:

Ficheiro Conteúdo
report.md Ponto de entrada principal legível para o diretório completo da análise.
findings/<slug>/ Relatórios detalhados de vulnerabilidades e ficheiros de prova de conceito de apoio, quando solicitados.
hardening/ Orientações de reforço estrutural e propostas de apoio, quando solicitadas.
findings.json Deteções com identificadores estáveis, gravidade, confiança, localizações no código-fonte e medidas de correção. Utilize estes campos em fluxos de trabalho de segurança ou ferramentas subsequentes.
scan-manifest.json Comprovativo selado da análise com o alvo revisto, as revisões e os hashes dos artefactos.
coverage.json Superfícies revistas e adiadas, exclusões e grau de completude da cobertura.

Para obter as definições dos campos, consulte o esquema das deteções. Utilize findingId para identificar a deteção e occurrenceId para a respetiva ocorrência nesta análise.

Por exemplo, este comando imprime uma linha separada por tabulações para cada conclusão:

jq -r '
  .findings[] |
  [.findingId, .severity.level, .confidence.level, .locations[0].path, .locations[0].startLine, .title] |
  @tsv
' findings.json

Estes exemplos pressupõem um executor Linux fidedigno com Node.js e npm, Git, Python 3, jq e as ferramentas de linha de comandos do fornecedor. O prefixo global de pacotes npm tem de permitir escrita.

Os resultados da análise podem incluir detalhes sensíveis sobre vulnerabilidades. Mantenha os artefactos privados e reveja o destino e o conteúdo antes de publicar deteções. Escolha o exemplo correspondente ao seu fornecedor de CI:

name: Codex Security review

on:
  pull_request:

jobs:
  security-review:
    if: github.event.pull_request.head.repo.full_name == github.repository
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v5
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0
          persist-credentials: false

      - name: Install Codex Security
        env:
          CODEX_HOME: ${{ runner.temp }}/codex-home
        run: |
          npm install --global @openai/codex
          codex plugin add codex-security@openai-curated

      - name: Review code changes
        env:
          CODEX_SECURITY_API_KEY: ${{ secrets.CODEX_SECURITY_API_KEY }}
          CODEX_HOME: ${{ runner.temp }}/codex-home
          TMPDIR: ${{ runner.temp }}/codex-security
          BASE_SHA: ${{ github.event.pull_request.base.sha }}
          HEAD_REVISION: ${{ github.event.pull_request.head.sha }}
        run: |
          BASE_REVISION="$(git merge-base "$BASE_SHA" "$HEAD_REVISION")"
          CODEX_API_KEY="$CODEX_SECURITY_API_KEY" codex exec \
            --sandbox workspace-write \
            "Use \$codex-security:security-diff-scan to review changes from $BASE_REVISION to $HEAD_REVISION for security regressions. Do not modify the checkout."

      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: codex-security-review
          path: ${{ runner.temp }}/codex-security/codex-security-scans

Os exemplos ignoram pull requests provenientes de forks. Execute tarefas com credenciais apenas a partir de uma definição de pipeline protegida e apenas para contribuidores nos quais confia para utilizar a credencial da análise. Arquive codex-security-scans para manter em conjunto as descobertas estruturadas, o manifesto, a cobertura e report.md, juntamente com quaisquer resultados solicitados em findings/ ou hardening/. Comece com resultados de caráter consultivo e reveja a cobertura e o tempo de execução antes de tornar a tarefa numa verificação obrigatória.

Para obter informações sobre o tratamento da API key e os controlos da sandbox, consulte o Modo não interativo. Se a sua organização permitir a Codex GitHub Action, esta pode instalar a CLI durante a execução, mas ainda terá de instalar primeiro o plugin e direcionar a entrada codex-home da ação para o mesmo CODEX_HOME.