Exécuter des analyses de sécurité en masse
Découvrez des dépôts GitHub ou exécutez des analyses de sécurité avec reprise à partir d’un inventaire CSV.
Utilisez npx @openai/codex-security bulk-scan pour examiner plusieurs dépôts dans une même
campagne. Découvrez des dépôts depuis votre compte GitHub personnel ou une
organisation, ou fournissez un fichier CSV qui associe chaque dépôt à une révision Git
précise.
Choisir une source de dépôts
| Source | Quand l’utiliser |
|---|---|
| Découverte GitHub | Choisissez des dépôts de manière interactive depuis votre compte GitHub personnel ou une organisation. |
| Inventaire CSV | Exécutez une campagne reproductible et automatisée sur des révisions précises de dépôts. |
Les deux workflows enregistrent la progression, conservent les résultats de chaque dépôt et vous permettent de reprendre une campagne après une interruption.
Découvrir des dépôts GitHub
Connectez-vous avec GitHub CLI :
gh auth loginLancez une analyse en masse interactive :
npx @openai/codex-security bulk-scanLa CLI vous guide à travers les étapes suivantes :
- Choisissez votre compte GitHub personnel ou une organisation.
- Examinez les dépôts actifs au cours des 90 derniers jours.
- Recherchez des dépôts dans la liste et sélectionnez ceux à analyser.
- Choisissez un répertoire pour les résultats des analyses.
- Examinez les dépôts sélectionnés et confirmez la campagne.
La découverte exclut les dépôts archivés et les forks. La CLI enregistre le commit exact
de la branche par défaut pour chaque dépôt sélectionné dans
<output-directory>/repositories.csv. Aucune analyse ne démarre avant que vous ayez confirmé la
sélection.
Pour utiliser GitHub Enterprise Server, connectez-vous d’abord à votre hôte GitHub :
gh auth login --hostname github.example.comDéfinissez GH_HOST lorsque vous lancez la découverte de dépôts :
GH_HOST=github.example.com npx @openai/codex-security bulk-scanLa découverte interactive nécessite un terminal. Pour la CI, les conteneurs ou une liste de dépôts préparée, utilisez plutôt un inventaire CSV.
Créer un fichier CSV de dépôts
Créez un fichier CSV avec une ligne pour chaque dépôt et chaque révision épinglée :
id,repository,revision,scope,mode
payments,https://github.com/example/payments.git,0123456789abcdef0123456789abcdef01234567,services/api,standard
identity,https://github.com/example/identity.git,fedcba9876543210fedcba9876543210fedcba98,,deepLe fichier CSV prend en charge les colonnes suivantes :
| Colonne | Obligatoire | Description |
|---|---|---|
id |
Oui | Identifiant unique du dépôt. Utilisez des lettres, des chiffres, des points, des tirets ou des traits de soulignement. |
repository |
Oui | URL HTTPS, URL SSH ou chemin d’un dépôt local. Les chemins relatifs sont résolus depuis le répertoire du fichier CSV. |
revision |
Oui | SHA complet d’un commit Git, composé de 40 ou 64 caractères. Les noms de branches, les tags et les hachages de commit abrégés ne sont pas pris en charge. |
scope |
Non | Répertoire relatif au dépôt à analyser. Omettez la valeur pour analyser l’intégralité du dépôt. |
mode |
Non | standard ou deep. Omettez la valeur pour utiliser le mode sélectionné par la commande. |
Pour trouver le SHA complet du commit d’un dépôt local, exécutez :
git -C /path/to/repository rev-parse HEADExécuter une campagne à partir d’un fichier CSV
Transmettez le fichier CSV et un répertoire de sortie privé situé en dehors des dépôts :
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4--workers contrôle le nombre d’analyses de dépôts simultanées et sa valeur par défaut est
4. Utilisez --mode deep pour sélectionner l’analyse approfondie pour les lignes qui ne disposent pas de leur propre
mode. Chaque ligne du fichier CSV peut toujours choisir son propre mode d’analyse et son propre périmètre de dépôt.
La CLI extrait chaque révision épinglée, analyse la cible sélectionnée, enregistre le résultat, puis supprime la copie temporaire du dépôt. Un dépôt n’est considéré comme terminé que lorsque son analyse offre une couverture complète et que tous les artefacts de résultat requis existent.
Choisir un modèle et un niveau de raisonnement
Par défaut, les analyses en masse utilisent gpt-5.6-sol avec un niveau de raisonnement xhigh. Pour
choisir un autre modèle et un autre niveau pour une campagne CSV :
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4 \
--model gpt-5.6-terra \
--effort highLes mêmes options fonctionnent lors de la découverte interactive de dépôts :
npx @openai/codex-security bulk-scan --model gpt-5.6-terra --effort highLes niveaux pris en charge sont minimal, low, medium, high et xhigh.
Examiner les résultats d’une campagne
Le répertoire de sortie contient la campagne épinglée, un journal des résultats en ajout seul et des artefacts distincts pour chaque dépôt et chaque tentative :
security-scans/
├── manifest.json
├── results.jsonl
├── checkouts/
└── artifacts/
├── payments/
│ └── attempt-1/
│ ├── scan-manifest.json
│ ├── findings.json
│ ├── coverage.json
│ └── report.md
└── identity/
└── attempt-1/
├── scan-manifest.json
├── findings.json
├── coverage.json
└── report.mdmanifest.jsonenregistre les dépôts, les révisions épinglées, les périmètres et les modes d’analyse de la campagne.results.jsonlenregistre chaque tentative sur un dépôt, son statut, le répertoire de ses artefacts ainsi que tous les détails disponibles sur les coûts ou les erreurs.report.mdfournit un rapport lisible pour une tentative sur un dépôt.findings.jsonetcoverage.jsonconsignent les vulnérabilités détectées lors de cette tentative et le périmètre examiné.
Exportez une analyse de dépôt terminée lorsque vous avez besoin d’un résultat portable :
npx @openai/codex-security export \
/path/outside/repositories/security-scans/artifacts/payments/attempt-1 \
--export-format sarif \
--output /path/outside/repositories/payments.sarifLes résultats peuvent contenir des extraits de code source et des détails sur les vulnérabilités. Conservez le répertoire de sortie privé, en dehors des dépôts analysés, et soumettez-le à une politique de conservation appropriée.
Reprendre une campagne
Exécutez la commande d’origine avec le même fichier CSV et le même répertoire de sortie :
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4La CLI reprend les dépôts qui nécessitent encore un traitement. Elle n’ignore un dépôt terminé que si le reçu correspondant et tous les artefacts d’analyse requis existent toujours.
Ne modifiez pas l’inventaire des dépôts d’un répertoire de sortie existant. La CLI vérifie le manifeste épinglé et rejette toute campagne différente. Utilisez un nouveau répertoire de sortie lorsque vous modifiez les dépôts, les révisions, les périmètres ou les modes d’analyse.
Réessayer après des erreurs de dépôt
Utilisez --max-attempts pour réessayer d’analyser un dépôt après une erreur temporaire d’extraction ou
d’analyse :
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4 \
--max-attempts 3Par défaut, une seule tentative est effectuée par dépôt. Chaque tentative reçoit son propre reçu et son propre répertoire d’artefacts.
Les analyses en masse utilisent les codes de sortie suivants :
| Code de sortie | Signification |
|---|---|
0 |
Tous les dépôts ont été traités avec succès. |
2 |
Un dépôt n’a pas pu être traité, une analyse présentait une couverture incomplète ou la commande a rencontré une erreur d’entrée ou d’exécution. |
130 |
Ctrl-C a interrompu la campagne. |
143 |
SIGTERM a mis fin à la campagne. |
Exécuter des analyses en masse dans Docker
Le dépôt Codex Security comprend une configuration Compose renforcée pour les campagnes CSV automatisées sur un hôte Docker Linux. L’ hôte doit prendre en charge la création d’espaces de noms utilisateur sans privilèges.
Conservez le fichier CSV des dépôts, les résultats d’analyse et l’état de connexion dans des répertoires
persistants montés. Fournissez les identifiants OpenAI par l’intermédiaire de l’environnement ou d’un gestionnaire de
secrets. Pour les dépôts GitHub privés, fournissez GH_TOKEN ou GITHUB_TOKEN
de la même manière.
Exécutez l’image avec le fichier CSV et le répertoire de sortie montés :
docker compose run --rm codex-security \
bulk-scan /input/repositories.csv \
--output-dir /output \
--workers 4Utilisez le même fichier CSV et le même répertoire de sortie montés pour reprendre la campagne. Pour
GitHub Enterprise Server, définissez CODEX_SECURITY_GIT_HOST sur votre hôte GitHub.
Pour consulter tous les indicateurs disponibles, reportez-vous à la référence de la commande bulk-scan. Pour les questions courantes sur la couverture des analyses et les vulnérabilités détectées, consultez la FAQ de la CLI.