Revisar los cambios de código para detectar problemas de seguridad

Revisa las solicitudes de incorporación de cambios y los cambios locales para detectar regresiones de seguridad manualmente o en CI/CD.

Ejecuta una revisión de seguridad de los cambios para detectar regresiones en un conjunto de cambios respaldado por Git. Codex revisa cada archivo modificado similar a código fuente y el código directamente relacionado que lo respalda. No amplía la revisión para convertirla en una auditoría completa del repositorio.

Para analizar un repositorio completo en lugar de un cambio específico, consulta Ejecuta un análisis de seguridad.

Ejecutar una revisión manual

En la aplicación de escritorio, abre Security, selecciona Scans y selecciona + Scan. Elige el repositorio y, luego, selecciona Changes. Revisa los cambios sin confirmar, una solo commit o una revisión base y una revisión principal. Deep scan no está disponible para un análisis de cambios.

También puedes pedir a Codex que revise los cambios sin confirmar en una conversación:

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

Para un commit o un rango de ramas, especifica ambas revisiones cuando sea necesario:

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.

También puedes indicar una solicitud de incorporación de cambios cuando sus revisiones base y principal estén disponibles en la copia de trabajo local.

Confirmar el cambio en la configuración

  1. Selecciona Changes.
  2. Confirma el repositorio cuya copia de trabajo está activa, la rama actual y el commit más reciente.
  3. En Changes to review, elige:
    • Uncommitted changes para el árbol de trabajo actual.
    • El commit más reciente para revisar una solo commit.
    • Una revisión base y una revisión principal para un intervalo de ramas o de una solicitud de incorporación de cambios.
  4. Confirma que el resumen describa el cambio que querías revisar.
  5. Selecciona Start scan.

Codex no cambia a otra rama ni cambia el árbol de trabajo seleccionado. Si una revisión solicitada no está disponible localmente, descárgala antes de la revisión o proporciona una revisión base y una final disponibles localmente.

Actuar sobre los hallazgos

Después de revisar los resultados, corrige y verifica un hallazgo aceptado o exporta y realiza un seguimiento de los hallazgos.

Automatizar las revisiones en CI/CD

Para la CLI independiente, consulta Ejecuta Codex Security en CI para obtener JSON estructurado, una política de gravedad y la carga de archivos SARIF. Continúa con esta sección para invocar la habilidad del plugin instalado a través de codex exec.

Ejecuta $codex-security:security-diff-scan en CI cuando el ejecutor pueda invocar la CLI de Codex sin interacción. Primero, instala la CLI sin exponer la credencial del análisis:

npm install --global @openai/codex

Instala el plugin Codex Security en la CLI:

codex plugin add codex-security@openai-curated

El comando de instalación usa el marketplace público de plugins de la CLI de Codex. Consulta el registro de cambios del plugin para conocer los requisitos específicos de cada versión.

A continuación, proporciona una API key de OpenAI desde el almacén de secretos de CI como CODEX_SECURITY_API_KEY. Expón la credencial solo para el análisis:

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."

El entorno aislado con permisos de escritura permite que el análisis cree artefactos temporales. El prompt sigue exigiendo que Codex mantenga sin cambios la copia de trabajo del código fuente.

El análisis escribe su salida en $TMPDIR/codex-security-scans/<repository>/<scan-id>/:

Archivo Contenido
report.md Punto de entrada principal legible al directorio completo del análisis.
findings/<slug>/ Informes detallados de vulnerabilidades y archivos de prueba de concepto de respaldo, cuando se soliciten.
hardening/ Recomendaciones de refuerzo estructural y propuestas de respaldo, cuando se soliciten.
findings.json Hallazgos con identificadores estables, gravedad, confianza, ubicaciones en el código fuente y medidas correctivas. Usa estos campos en flujos de trabajo de seguridad o herramientas posteriores.
scan-manifest.json Constancia sellada del análisis con el objetivo revisado, las revisiones y los hashes de los artefactos.
coverage.json Superficies revisadas y pendientes, exclusiones y grado de cobertura.

Para consultar las definiciones de los campos, consulta el esquema de hallazgos. Usa findingId para identificar el hallazgo y occurrenceId para su aparición en este análisis.

Por ejemplo, este comando imprime una fila separada por tabulaciones por cada hallazgo:

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

Estos ejemplos presuponen un ejecutor Linux de confianza con Node.js y npm, Git, Python 3, jq y las herramientas de línea de comandos del proveedor. El prefijo global de paquetes npm debe permitir escritura.

Los resultados del análisis pueden incluir detalles confidenciales de vulnerabilidades. Mantén los artefactos privados y revisa el destino y el contenido antes de publicar hallazgos. Elige el ejemplo de tu proveedor 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

Los ejemplos omiten las solicitudes de incorporación de cambios provenientes de bifurcaciones. Ejecuta trabajos con credenciales solo desde una definición de canalización protegida y únicamente para colaboradores de confianza que puedan usar las credenciales del análisis. Archiva codex-security-scans para conservar juntos los hallazgos estructurados, el manifiesto, la cobertura y report.md, además de cualquier resultado solicitado de findings/ o hardening/. Empieza con resultados informativos y revisa la cobertura y el tiempo de ejecución antes de convertir el trabajo en una comprobación obligatoria.

Para obtener información sobre la gestión de API key y los controles del entorno aislado, consulta el Modo no interactivo. Si tu organización permite la Codex GitHub Action, esta puede instalar la CLI durante la ejecución, pero aun así debes instalar primero el plugin y dirigir la entrada codex-home de la acción al mismo CODEX_HOME.