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

Examinez les modifications du code sous l’angle de la sécurité

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

Lancez une révision de sécurité pour détecter les régressions dans un seul ensemble de modifications suivi par Git. Codex examine chaque fichier modifié de type code source ainsi que le code qui le prend directement en charge. Cette révision ne s’étend pas à un audit complet 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é.

Effectuez une révision manuelle

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

Vous pouvez également demander à Codex d’examiner les modifications non validées dans une discussion :

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

Pour une plage de commits ou de branches, indiquez les deux révisions si nécessaire :

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.

Vous pouvez également indiquer une pull request lorsque ses révisions de base et de tête sont disponibles dans la copie de travail locale.

Confirmez la modification dans la configuration

  1. Sélectionnez Modifications.
  2. Vérifiez le dépôt extrait, la branche actuelle et le dernier commit.
  3. Sous Modifications à réviser, choisissez :
    • Uncommitted changes pour l’arbre de travail actuel.
    • Le dernier commit pour une révision portant sur un seul commit.
    • Une révision de base et une révision de tête pour une plage correspondant à une branche ou à une pull request.
  4. Vérifiez que le résumé décrit bien la modification que vous souhaitiez examiner.
  5. Sélectionnez Lancer l’analyse.

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

Traitez les constats

Après avoir examiné les résultats, corrigez et vérifiez un constat accepté ou exportez et suivez les constats.

Automatisez les révisions en CI/CD

Si vous avez accès à la CLI autonome en version bêta, consultez Exécuter Codex Security en CI pour obtenir des données JSON structurées, une politique de niveaux de gravité et le téléversement SARIF. Poursuivez avec cette section pour appeler la skill du plugin installé via codex exec.

Exécutez $codex-security:security-diff-scan en CI lorsque le runner peut appeler Codex CLI sans interaction. Commencez par installer la CLI sans exposer l’identifiant utilisé 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 des plugins Codex CLI. Consultez le journal des modifications du plugin avant de vous appuyer sur une version ou une fonctionnalité précise du plugin en CI.

Ensuite, placez une clé API OpenAI provenant du stockage de secrets de votre CI dans la variable CODEX_SECURITY_API_KEY. N’exposez cet identifiant que 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."

Le bac à sable accessible en écriture permet à l’analyse de créer des artefacts temporaires. Le prompt exige toujours que Codex laisse la copie de travail du code source inchangée.

L’analyse enregistre sa sortie dans $TMPDIR/codex-security-scans/<repository>/<scan-id>/ :

FichierContenu
report.mdPoint d’entrée principal lisible vers le répertoire complet de l’analyse.
findings/<slug>/Rapports détaillés sur les vulnérabilités et fichiers de preuve de concept associés, sur demande.
hardening/Recommandations de renforcement structurel et propositions associées, sur demande.
findings.jsonConstats comportant des identifiants stables, un niveau de gravité, un niveau de confiance, des emplacements dans le code source et des mesures correctives. Alimentez des flux de travail de sécurité internes approuvés ou des outils en aval.
scan-manifest.jsonReçu d’analyse scellé comprenant la cible examinée, les révisions et les hachages des artefacts.
coverage.jsonSurfaces examinées et reportées, exclusions et exhaustivité de la couverture.

Le schéma findings.json définit la structure complète. Il comprend les champs suivants :

ChampTypeDescription
documentTypeChaîneIdentifie le document comme codex-security.findings.
schemaVersionChaîneIdentifie la version du schéma des constats.
scanIdChaîneIdentifie l’analyse qui a produit les constats.
findingsTableauContient zéro ou plusieurs objets représentant des constats.
findings[].findingIdChaîneIdentifiant stable d’un constat, dérivé de son empreinte.
findings[].occurrenceIdChaîneIdentifie cette occurrence du constat dans une analyse donnée.
findings[].ruleIdChaîneIdentifie la famille de vulnérabilités.
findings[].identityObjetContient l’ancre sémantique et l’identifiant facultatif de l’instance sœur.
findings[].fingerprintsObjetContient l’algorithme d’empreinte et l’empreinte principale.
findings[].titleChaîneIndique le titre court du constat.
findings[].summaryChaîneRésume la vulnérabilité et son impact.
findings[].severityObjetContient le niveau de gravité et des informations facultatives sur le score.
findings[].confidenceObjetContient le niveau de confiance et sa justification.
findings[].taxonomyObjetContient la catégorie de vulnérabilité et les identifiants CWE.
findings[].locationsTableauRépertorie les fichiers concernés, les numéros de ligne et le rôle de chaque emplacement.
findings[].remediationChaîneDécrit le correctif recommandé.
findings[].provenanceObjetIdentifie la source du constat.

Par exemple, cette commande affiche, pour chaque constat, une ligne dont les champs sont 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 l’utilisation d’un runner Linux de confiance disposant de Node.js et de npm, de Git, de Python 3, de jq et des outils en ligne de commande du fournisseur. Le préfixe global des packages npm doit être accessible en écriture.

Choisissez l’exemple correspondant à votre fournisseur de CI :

Les résultats de l’analyse peuvent inclure des informations sensibles sur les vulnérabilités. Gardez les artefacts confidentiels et ne publiez les constats qu’après avoir vérifié les destinataires, le contenu et les approbations requises.

Choisir une 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

Les exemples ignorent les pull requests provenant de forks. N’exécutez les jobs nécessitant des identifiants qu’à partir d’une définition de pipeline protégée et uniquement pour des contributeurs de confiance autorisés à utiliser l’identifiant de l’analyse. Archivez codex-security-scans afin de conserver ensemble les constats structurés, le manifeste, la couverture et report.md, ainsi que les éventuelles sorties demandées findings/ ou hardening/. Commencez par utiliser les résultats à titre indicatif et vérifiez la couverture et la durée d’exécution avant de faire de ce job une vérification obligatoire.

Pour la gestion des clés API et les contrôles du bac à sable, consultez Mode non interactif. Si votre organisation autorise la Codex GitHub Action, celle-ci peut installer la CLI au moment de l’exécution, mais vous devez tout de même commencer par installer le plugin et faire pointer l’entrée codex-home de l’action vers le même CODEX_HOME.