For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale
Theme

Revue de sécurité des modifications du code

Examinez les pull requests et les modifications locales pour détecter les régressions de sécurité, manuellement ou en CI/CD.

Lancez une revue de sécurité pour détecter les régressions dans un ensemble précis de modifications d’un dépôt Git. Codex examine chaque fichier modifié contenant du code source ou du contenu similaire, ainsi que le code dont ce fichier dépend directement. La revue ne s’étend pas à l’ensemble du dépôt.

Pour analyser un dépôt entier plutôt qu’une modification précise, consultez Lancer une analyse de sécurité.

Lancer une revue manuelle

Dans l’application de bureau ChatGPT, ouvrez Sécurité, sélectionnez Analyses, puis + Analyse. Choisissez le dépôt, puis sélectionnez Modifications. Vous pouvez examiner les modifications non commitées, un seul commit ou les différences entre une révision de base et une révision de tête. L’option Analyse approfondie n’est pas disponible pour l’analyse des modifications.

Vous pouvez aussi demander à Codex d’examiner les modifications non commitées dans une conversation :

Utilisez $codex-security:security-diff-scan pour vérifier si mes modifications non commitées actuelles introduisent des régressions de sécurité.

Pour examiner une plage de commits ou comparer des branches, précisez les deux révisions si nécessaire :

Utilisez $codex-security:security-diff-scan pour vérifier si les modifications entre origin/main et HEAD introduisent des régressions de sécurité. Examinez en priorité l’authentification, les autorisations, le traitement des entrées, l’accès au système de fichiers, les requêtes réseau et les secrets.

Vous pouvez aussi indiquer une pull request si ses révisions de base et de tête sont disponibles dans votre copie locale du dépôt.

Confirmer les modifications lors de la configuration

  1. Sélectionnez Modifications.
  2. Vérifiez le dépôt ouvert, la branche actuelle et le dernier commit.
  3. Sous Modifications à examiner, choisissez :
    • Uncommitted changes pour examiner les modifications de l’arbre de travail actuel.
    • Le dernier commit pour limiter la revue à ce commit.
    • Une révision de base et une révision de tête pour examiner les modifications d’une branche ou d’une pull request.
  4. Vérifiez que le résumé décrit bien les modifications que vous souhaitez examiner.
  5. Sélectionnez Lancer l’analyse.

Codex ne bascule pas vers une autre branche et conserve l’arbre de travail sélectionné. Si une révision demandée n’est pas disponible localement, récupérez-la avant la revue ou indiquez une révision de base et une révision de tête toutes deux disponibles localement.

Traiter les problèmes détectés

Après avoir examiné les résultats, corrigez un problème retenu et vérifiez la correction ou exportez les problèmes détectés et suivez leur résolution.

Automatiser les revues en CI/CD

Si vous utilisez la CLI autonome, consultez Exécuter Codex Security en CI pour obtenir des résultats JSON structurés, définir une politique selon le niveau de gravité et téléverser les résultats au format SARIF. Suivez les instructions ci-dessous pour appeler le skill du plugin installé avec codex exec.

Exécutez $codex-security:security-diff-scan en CI si le runner peut lancer la CLI Codex sans interaction. Commencez par installer la CLI sans exposer la clé utilisée pour l’analyse :

npm install --global @openai/codex

Installez le plugin Codex Security dans la CLI :

codex plugin add codex-security@openai-curated

La commande d’installation utilise la Marketplace publique de plugins de la CLI Codex. Consultez le journal des modifications du plugin pour connaître les prérequis propres à chaque version.

Fournissez ensuite une clé API OpenAI provenant du gestionnaire de secrets de votre CI dans la variable CODEX_SECURITY_API_KEY. Rendez cette clé accessible uniquement pendant l’analyse :

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

L’accès en écriture au bac à sable permet à l’analyse de créer des artefacts temporaires. Le prompt demande néanmoins à Codex de laisser intacte la copie locale du code source.

L’analyse écrit ses résultats dans $TMPDIR/codex-security-scans/<repository>/<scan-id>/ :

Fichier Contenu
report.md Rapport principal à consulter pour s’orienter dans le répertoire complet de l’analyse.
findings/<slug>/ Sur demande, rapports détaillés sur les vulnérabilités et fichiers de preuve de concept à l’appui.
hardening/ Sur demande, recommandations pour renforcer la sécurité de la structure du code et propositions pour les mettre en œuvre.
findings.json Problèmes détectés, avec leurs identifiants stables, leur gravité, le niveau de confiance, les emplacements dans le code source et les mesures correctives. Utilisez ces champs dans vos workflows de sécurité ou dans les outils qui traitent les résultats.
scan-manifest.json Reçu d’analyse scellé indiquant la cible examinée, les révisions et les empreintes de hachage des artefacts.
coverage.json Parties examinées, parties dont l’examen a été reporté, exclusions et degré de couverture de l’analyse.

Pour connaître la définition des champs, consultez le schéma des problèmes détectés. Utilisez findingId pour identifier le problème et occurrenceId pour identifier son occurrence dans cette analyse.

Par exemple, cette commande affiche une ligne par problème, avec des champs séparés par des tabulations :

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

Ces exemples supposent que vous utilisez un runner Linux de confiance doté de Node.js et de npm, de Git, de Python 3, de jq et des outils en ligne de commande du fournisseur de CI. Le runner doit pouvoir écrire dans le répertoire d’installation global des paquets npm.

Les résultats de l’analyse peuvent contenir des informations sensibles sur les vulnérabilités. Gardez les artefacts privés et vérifiez la destination et le contenu avant de publier les problèmes détectés. Choisissez l’exemple correspondant à votre fournisseur de CI :

Choose an option
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

Ces exemples ignorent les pull requests provenant de forks. Exécutez les tâches qui utilisent la clé d’analyse uniquement à partir d’une définition de pipeline protégée et uniquement pour les contributeurs auxquels vous pouvez confier cette clé. Archivez codex-security-scans pour conserver ensemble les résultats structurés, le manifeste, les données de couverture et report.md, ainsi que les fichiers de findings/ ou de hardening/ si vous les avez demandés. Dans un premier temps, utilisez les résultats à titre indicatif. Examinez la couverture et la durée d’exécution avant de rendre ce contrôle obligatoire.

Pour la gestion des clés API et les contrôles du bac à sable, consultez Mode non interactif. Si votre organisation autorise la GitHub Action de Codex, celle-ci peut installer la CLI au moment de l’exécution. Vous devez toutefois installer le plugin au préalable et faire pointer le paramètre codex-home de l’action vers le même CODEX_HOME.