Execute uma revisão de segurança para identificar regressões em um conjunto específico de alterações no Git. O Codex revisa cada arquivo alterado que contém código-fonte ou conteúdo semelhante, além do código que lhe dá suporte direto. A revisão não se estende a uma auditoria completa do repositório.
Para verificar um repositório inteiro em vez de uma alteração específica, consulte Execute uma verificação de segurança.
Execute uma revisão manual
No aplicativo para desktop, abra Segurança, selecione Verificações e depois + Verificação. Escolha o repositório e selecione Alterações. Você pode revisar alterações ainda sem commit, um único commit ou o intervalo entre uma revisão de base e uma revisão final. A opção Verificação aprofundada não está disponível para verificações de alterações.
Em uma conversa, você também pode pedir ao Codex que revise as alterações ainda sem commit:
Use $codex-security:security-diff-scan to review my current uncommitted changes for security regressions.
Para revisar um intervalo de commits ou comparar branches, especifique as duas 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.
Você também pode indicar um pull request se as revisões de base e final estiverem disponíveis na cópia local do repositório.
Confirme as alterações na configuração
- Selecione Alterações.
- Confirme o repositório aberto localmente, a branch atual e o commit mais recente.
- Em Alterações a revisar, escolha:
Uncommitted changespara revisar as alterações da árvore de trabalho atual.- O commit mais recente para revisar um único commit.
- Uma revisão de base e uma revisão final para revisar um intervalo de uma branch ou de um pull request.
- Confirme se o resumo descreve as alterações que você pretende revisar.
- Selecione Iniciar verificação.
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, busque-a no repositório remoto antes da revisão ou indique revisões de base e final disponíveis localmente.
Trate os problemas identificados
Depois de revisar os resultados, corrija e verifique um problema aceito ou exporte e acompanhe os problemas identificados.
Automatize as revisões em CI/CD
Para usar a CLI independente, consulte Execute o Codex Security em CI para saber como obter resultados em JSON estruturado, aplicar uma política de severidade e enviar arquivos SARIF. Continue nesta seção para executar a habilidade do plugin instalado com codex exec.
Execute $codex-security:security-diff-scan em CI quando o executor puder chamar a CLI do Codex sem interação. Primeiro, instale a CLI sem expor a credencial da verificação:
npm install --global @openai/codex
Instale o plugin Codex Security na CLI:
codex plugin add codex-security@openai-curated
O comando de instalação usa o marketplace público de plugins da CLI do Codex. Consulte o histórico de alterações do plugin para conferir os requisitos de cada versão.
Em seguida, disponibilize uma chave de API da OpenAI armazenada no gerenciador de segredos da CI na variável CODEX_SECURITY_API_KEY. Exponha a credencial apenas durante a verificação:
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."
Com permissão de escrita no sandbox, a verificação pode criar artefatos temporários. Mesmo assim, o prompt exige que o Codex mantenha intacta a cópia local do código-fonte.
A verificação grava os resultados em $TMPDIR/codex-security-scans/<repository>/<scan-id>/:
| Arquivo | Conteúdo |
|---|---|
report.md |
Relatório principal, que serve de ponto de partida para explorar todo o diretório da verificação. |
findings/<slug>/ |
Relatórios detalhados de vulnerabilidades e arquivos de prova de conceito que os acompanham, quando solicitados. |
hardening/ |
Orientações para reforçar a segurança da estrutura do código e propostas relacionadas, quando solicitadas. |
findings.json |
Problemas identificados, com identificadores estáveis, severidade, nível de confiança, localização no código-fonte e medidas de correção. Use esses campos em fluxos de trabalho de segurança ou em ferramentas que processam os resultados. |
scan-manifest.json |
Comprovante selado da verificação, com o alvo revisado, as revisões e os hashes dos artefatos. |
coverage.json |
Áreas revisadas, áreas cuja revisão foi adiada, exclusões e informações sobre até que ponto a cobertura está completa. |
Para consultar a definição dos campos, veja o schema dos problemas identificados. Use findingId para identificar o problema e occurrenceId para identificar sua ocorrência nesta verificação.
Por exemplo, este comando exibe uma linha por problema, com os campos separados por tabulações:
jq -r '
.findings[] |
[.findingId, .severity.level, .confidence.level, .locations[0].path, .locations[0].startLine, .title] |
@tsv
' findings.json
Os exemplos pressupõem um executor Linux confiável com Node.js e npm, Git, Python 3, jq e as ferramentas de linha de comando do provedor. O executor precisa ter permissão de escrita no diretório definido pelo prefixo global de pacotes do npm.
Os resultados da verificação podem incluir informações sensíveis sobre vulnerabilidades. Mantenha os artefatos privados e confira o destino e o conteúdo antes de publicar os problemas identificados. Escolha o exemplo correspondente ao seu provedor 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-scansCrie uma variável de CI/CD mascarada chamada CODEX_SECURITY_API_KEY e revise os artefatos da verificação em um ambiente privado antes de compartilhar os problemas identificados.
codex-security-review:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_PROJECT_ID == $CI_PROJECT_ID'
variables:
GIT_DEPTH: "0"
script:
- |
codex_security_api_key="$CODEX_SECURITY_API_KEY"
unset CODEX_SECURITY_API_KEY
export CODEX_HOME="/tmp/codex-home-$CI_JOB_ID"
export TMPDIR="/tmp/codex-security-$CI_JOB_ID"
export BASE_REVISION="$CI_MERGE_REQUEST_DIFF_BASE_SHA"
export HEAD_REVISION="${CI_MERGE_REQUEST_SOURCE_BRANCH_SHA:-$CI_COMMIT_SHA}"
npm install --global @openai/codex
codex plugin add codex-security@openai-curated
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."
after_script:
- |
unset CODEX_SECURITY_API_KEY
scan_root="/tmp/codex-security-$CI_JOB_ID/codex-security-scans"
if [ -d "$scan_root" ]; then
tar -czf codex-security-artifacts.tar.gz -C "$scan_root" .
fi
artifacts:
when: always
paths:
- codex-security-artifacts.tar.gztrigger: none
pool:
vmImage: ubuntu-latest
steps:
- checkout: self
fetchDepth: 0
- bash: |
set -euo pipefail
export CODEX_HOME="$AGENT_TEMPDIRECTORY/codex-home"
npm install --global @openai/codex
codex plugin add codex-security@openai-curated
displayName: Install Codex Security
- bash: |
set -euo pipefail
export CODEX_HOME="$AGENT_TEMPDIRECTORY/codex-home"
export TMPDIR="$AGENT_TEMPDIRECTORY/codex-security"
export HEAD_REVISION="$SYSTEM_PULLREQUEST_SOURCECOMMITID"
export BASE_REVISION="$(git merge-base HEAD^1 "$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."
displayName: Review code changes
condition: and(succeeded(), ne(variables['System.PullRequest.IsFork'], 'True'))
env:
CODEX_SECURITY_API_KEY: $(CODEX_SECURITY_API_KEY)
- publish: $(Agent.TempDirectory)/codex-security/codex-security-scans
artifact: codex-security-review
condition: always()No Azure Repos, configure a política de branch Validação de build para executar o pipeline em pull requests.
pipeline {
agent { label 'linux' }
stages {
stage('Codex Security review') {
when {
allOf {
changeRequest()
expression { !env.CHANGE_FORK?.trim() }
}
}
steps {
sh '''#!/usr/bin/env bash
set -euo pipefail
export CODEX_HOME="/tmp/codex-home-$BUILD_TAG"
export TMPDIR="/tmp/codex-security-$BUILD_TAG"
mkdir -p "$TMPDIR"
git fetch --no-tags origin "$CHANGE_TARGET"
target="$(git rev-parse FETCH_HEAD)"
git fetch --no-tags origin "$CHANGE_BRANCH"
git rev-parse FETCH_HEAD > "$TMPDIR/head"
git merge-base "$target" "$(cat "$TMPDIR/head")" > "$TMPDIR/base"
npm install --global @openai/codex
codex plugin add codex-security@openai-curated
'''
withCredentials([string(credentialsId: 'codex-security-api-key', variable: 'CODEX_SECURITY_API_KEY')]) {
sh '''#!/usr/bin/env bash
set +x
set -euo pipefail
export CODEX_HOME="/tmp/codex-home-$BUILD_TAG"
export TMPDIR="/tmp/codex-security-$BUILD_TAG"
export HEAD_REVISION="$(cat "$TMPDIR/head")"
export BASE_REVISION="$(cat "$TMPDIR/base")"
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."
'''
}
}
post {
always {
sh '''#!/usr/bin/env bash
set -euo pipefail
scan_root="/tmp/codex-security-$BUILD_TAG/codex-security-scans"
if [ -d "$scan_root" ]; then
tar -czf codex-security-artifacts.tar.gz -C "$scan_root" .
fi
'''
archiveArtifacts artifacts: 'codex-security-artifacts.tar.gz', allowEmptyArchive: true
}
}
}
}
}Os exemplos ignoram pull requests originados de forks. Execute jobs que usam credenciais somente a partir de uma definição de pipeline protegida e apenas para colaboradores a quem você confiaria a credencial da verificação. Arquive codex-security-scans para manter juntos os problemas identificados em formato estruturado, o manifesto, os dados de cobertura e o arquivo report.md, além dos resultados em findings/ ou hardening/, quando solicitados. Comece usando os resultados apenas como orientação e avalie a cobertura e o tempo de execução antes de tornar o job uma verificação obrigatória.
Para saber como lidar com chaves de API e configurar os controles do sandbox, consulte Modo não interativo. Se a sua organização permitir o uso da GitHub Action do Codex, ela poderá instalar a CLI durante a execução. Ainda assim, você precisa instalar o plugin primeiro e configurar a entrada codex-home da ação para apontar para o mesmo CODEX_HOME.