Sicherheitsscans in großem Umfang ausführen
Ermitteln Sie GitHub-Repositorys oder führen Sie fortsetzbare Sicherheitsscans anhand eines CSV-Inventars aus.
Verwenden Sie npx @openai/codex-security bulk-scan, um Repositorys in einer einzigen
Kampagne zu überprüfen. Ermitteln Sie Repositorys aus Ihrem persönlichen GitHub-Konto oder einer
Organisation, oder stellen Sie eine CSV-Datei bereit, die jedes Repository auf eine exakte Git-
Revision festlegt.
Repository-Quelle auswählen
| Quelle | Verwendungszweck |
|---|---|
| GitHub-Ermittlung | Wählen Sie interaktiv Repositorys aus Ihrem persönlichen GitHub-Konto oder einer Organisation aus. |
| CSV-Inventar | Führen Sie eine wiederholbare, automatisierte Kampagne für exakte Repository-Revisionen aus. |
Beide Workflows speichern den Fortschritt, bewahren die Ergebnisse der einzelnen Repositorys auf und ermöglichen es Ihnen, eine Kampagne nach einer Unterbrechung fortzusetzen.
GitHub-Repositorys ermitteln
Melden Sie sich mit der GitHub CLI an:
gh auth loginStarten Sie einen interaktiven Scan in großen Mengen:
npx @openai/codex-security bulk-scanDie CLI führt Sie durch diese Schritte:
- Wählen Sie Ihr persönliches GitHub-Konto oder eine Organisation aus.
- Prüfen Sie die Repositorys, die innerhalb der letzten 90 Tage aktiv waren.
- Durchsuchen Sie die Repository-Liste und wählen Sie die zu scannenden Repositorys aus.
- Wählen Sie ein Verzeichnis für die Scan-Ergebnisse aus.
- Prüfen Sie die ausgewählten Repositorys und bestätigen Sie die Kampagne.
Bei der Ermittlung werden archivierte Repositorys und Forks ausgeschlossen. Die CLI zeichnet den exakten
Commit des Standard-Branches für jedes ausgewählte Repository in
<output-directory>/repositories.csv auf. Es werden keine Scans gestartet, bevor Sie die
Auswahl bestätigen.
Um GitHub Enterprise Server zu verwenden, melden Sie sich zunächst bei Ihrem GitHub-Host an:
gh auth login --hostname github.example.comLegen Sie GH_HOST fest, wenn Sie die Repository-Ermittlung starten:
GH_HOST=github.example.com npx @openai/codex-security bulk-scanDie interaktive Ermittlung erfordert ein Terminal. Verwenden Sie für CI, Container oder eine vorbereitete Repository-Liste stattdessen ein CSV-Inventar.
Repository-CSV erstellen
Erstellen Sie eine CSV-Datei mit einer Zeile für jedes Repository und jede festgelegte Revision:
id,repository,revision,scope,mode,prompt
payments,https://github.com/example/payments.git,0123456789abcdef0123456789abcdef01234567,services/api,standard,Review payment authorization and refunds.
identity,https://github.com/example/identity.git,fedcba9876543210fedcba9876543210fedcba98,,deep,Review session and identity boundaries.Die CSV unterstützt folgende Spalten:
| Spalte | Erforderlich | Beschreibung |
|---|---|---|
id |
Ja | Eindeutige Repository-Kennung. Verwenden Sie Buchstaben, Zahlen, Punkte, Bindestriche oder Unterstriche. |
repository |
Ja | HTTPS-URL, SSH-URL oder lokaler Repository-Pfad. Relative Pfade werden ausgehend vom CSV-Verzeichnis aufgelöst. |
revision |
Ja | Vollständige Git-Commit-SHA mit 40 oder 64 Zeichen. Branch-Namen, Tags und verkürzte Commit-Hashes werden nicht unterstützt. |
scope |
Nein | Ein Repository-relatives Verzeichnis, das gescannt werden soll. Lassen Sie den Wert weg, um das gesamte Repository zu scannen. |
mode |
Nein | standard oder deep. Lassen Sie den Wert weg, um den für den Befehl ausgewählten Modus zu verwenden. |
prompt |
Nein | Scan-Anweisungen speziell für dieses Repository. |
Führen Sie folgenden Befehl aus, um die vollständige Commit-SHA eines lokalen Repositorys zu ermitteln:
git -C /path/to/repository rev-parse HEADKampagne anhand einer CSV ausführen
Übergeben Sie die CSV-Datei und ein privates Ausgabeverzeichnis außerhalb der Repositorys:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4--workers steuert die Anzahl paralleler Repository-Scans und verwendet standardmäßig 4. Dies
legt nicht die Anzahl der unabhängigen Standard-Scan-Worker innerhalb der einzelnen Tiefenscans fest;
konfigurieren Sie diese Grenzwerte über
[deep_scan]. Verwenden Sie --mode deep, um für Zeilen ohne eigenen Wert für mode den Tiefenscan auszuwählen. Jede CSV-Zeile
kann weiterhin einen eigenen Scan-Modus und Repository-Umfang festlegen.
Legen Sie [deep_scan].max_time_hours fest, um die Worker-Ausführung für jeden Tiefenscan in
der Kampagne zu begrenzen. Das Flag --max-time-hours funktioniert mit scan, nicht mit bulk-scan.
Die CLI checkt jede festgelegte Revision aus, scannt das ausgewählte Ziel, zeichnet das Ergebnis auf und entfernt den temporären Repository-Checkout. Ein Repository gilt nur dann als abgeschlossen, wenn sein Scan eine vollständige Abdeckung aufweist und alle erforderlichen Ergebnisartefakte vorhanden sind.
Sicherheitskontext und Anweisungen bereitstellen
Fügen Sie mit --knowledge-base jedem Scan Architekturdokumente, Bedrohungsmodelle oder Sicherheitsrichtlinien
hinzu. Wiederholen Sie das Flag für weitere Dateien oder Verzeichnisse:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--knowledge-base /path/to/architecture.md \
--knowledge-base /path/to/security-policiesUm gemeinsame Scan-Anweisungen hinzuzufügen oder nach jedem Scan eine Folgeaktion auszuführen, stellen Sie Prompt-Dateien bereit:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--scan-prompt-file scan-instructions.md \
--post-scan-prompt-file follow-up.mdDie CLI hängt den CSV-Wert prompt jedes Repositorys an die gemeinsamen Scan-
Anweisungen an. Folgeanweisungen werden in derselben authentifizierten Sitzung
nach erfolgreichen Scans sowie nach Scans mit unvollständiger Abdeckung oder Fehlern ausgeführt, jedoch nicht
nach einem Abbruch oder einem Scan, der sein Kostenlimit erreicht. Die Pfade der Prompt-Dateien
werden ausgehend von Ihrem aktuellen Verzeichnis aufgelöst.
Modell und Reasoning-Aufwand auswählen
Massenscans verwenden standardmäßig gpt-5.6-sol mit dem Reasoning-Aufwand xhigh. So
wählen Sie ein anderes Modell und einen anderen Aufwand für eine CSV-Kampagne aus:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4 \
--model gpt-5.6-terra \
--effort highDieselben Optionen funktionieren während der interaktiven Repository-Ermittlung:
npx @openai/codex-security bulk-scan --model gpt-5.6-terra --effort highUnterstützte Aufwandsstufen sind minimal, low, medium, high und xhigh.
Um OpenRouter oder Fireworks zu verwenden, legen Sie OPENROUTER_API_KEY beziehungsweise FIREWORKS_API_KEY fest
und geben Sie --provider und --model an. Anmeldedaten und
Beispiele finden Sie unter Einrichtung von OpenRouter oder Fireworks
oder Einrichtung von Amazon
Bedrock.
Kampagnenergebnisse prüfen
Das Ausgabeverzeichnis enthält die festgelegte Kampagne, ein nur durch Anhängen erweiterbares Ergebnis- Ledger sowie separate Artefakte für jedes Repository und jeden Versuch:
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.jsonzeichnet die Repositorys, festgelegten Revisionen, Umfänge, Scan- Modi sowie die gemeinsamen oder Repository-spezifischen Anweisungen der Kampagne auf.results.jsonlzeichnet jeden Repository-Versuch, dessen Status, das Artefakt- Verzeichnis und alle verfügbaren Kosten- oder Fehlerdetails auf.report.mdstellt einen lesbaren Bericht für einen Repository-Versuch bereit.findings.jsonundcoverage.jsonzeichnen die Befunde und den überprüften Umfang dieses Versuchs auf.
Exportieren Sie einen abgeschlossenen Repository-Scan, wenn Sie ein portables Ergebnis benötigen:
npx @openai/codex-security export \
/path/outside/repositories/security-scans/artifacts/payments/attempt-1 \
--export-format sarif \
--output /path/outside/repositories/payments.sarifErgebnisse können Quelltextauszüge und Details zu Sicherheitslücken enthalten. Halten Sie das Ausgabeverzeichnis privat, außerhalb der gescannten Repositorys und unterwerfen Sie es einer geeigneten Aufbewahrungsrichtlinie.
Kampagne fortsetzen
Führen Sie den ursprünglichen Befehl mit derselben CSV-Datei und demselben Ausgabeverzeichnis aus:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4Die CLI setzt nicht abgeschlossene Repository-Scans fort und überspringt abgeschlossene. Scans
mit unvollständiger Abdeckung werden nicht erneut versucht. Ihre Ergebnisse bleiben verfügbar, und
der Befehl wird mit dem Code 2 beendet.
Ändern Sie für ein bestehendes Ausgabeverzeichnis weder das Repository-Inventar noch die Scan- und Folgeanweisungen. Die CLI prüft das festgelegte Manifest und weist eine abweichende Kampagne zurück. Verwenden Sie ein neues Ausgabeverzeichnis, wenn Sie Repositorys, Revisionen, Umfänge, Scan-Modi oder gemeinsame beziehungsweise Repository-spezifische Anweisungen ändern.
Repository-Fehler erneut versuchen
Verwenden Sie --max-attempts, um einen Repository-Scan nach einem vorübergehenden Checkout- oder Scan-
Fehler erneut zu versuchen:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4 \
--max-attempts 3Standardmäßig wird pro Repository ein Versuch durchgeführt. Jeder Versuch erhält einen eigenen Beleg und ein eigenes Artefaktverzeichnis. Wiederholungsversuche decken Checkout-Fehler, Scan-Fehler und fehlende erforderliche Artefakte ab. Abgeschlossene Scans mit unvollständiger Abdeckung werden nicht erneut versucht.
Massenscans verwenden folgende Exit-Codes:
| Exit-Code | Bedeutung |
|---|---|
0 |
Alle Repositorys wurden erfolgreich abgeschlossen. |
2 |
Ein Repository konnte nicht abgeschlossen werden, ein Scan hatte eine unvollständige Abdeckung oder beim Befehl trat ein Eingabe- oder Laufzeitfehler auf. |
130 |
Ctrl-C hat die Kampagne unterbrochen. |
143 |
SIGTERM hat die Kampagne beendet. |
Massenscans in Docker ausführen
Das Codex Security- Repository enthält eine gehärtete Compose-Konfiguration für automatisierte CSV-Kampagnen auf einem Linux-Docker-Host. Der Host muss die Erstellung nicht privilegierter Benutzer-Namespaces unterstützen.
Binden Sie die Repository-CSV, die Scan-Ergebnisse und den Anmeldestatus in persistente
Verzeichnisse ein. Stellen Sie OpenAI-Anmeldedaten über die Umgebung oder einen Secret-
Manager bereit. Stellen Sie für private GitHub-Repositorys auf dieselbe Weise GH_TOKEN oder GITHUB_TOKEN
bereit.
Führen Sie das Image mit der eingebundenen CSV-Datei und dem eingebundenen Ausgabeverzeichnis aus:
docker compose run --rm codex-security \
bulk-scan /input/repositories.csv \
--output-dir /output \
--workers 4Verwenden Sie dieselbe eingebundene CSV-Datei und dasselbe Ausgabeverzeichnis, um die Kampagne fortzusetzen. Legen Sie für
GitHub Enterprise Server CODEX_SECURITY_GIT_HOST auf Ihren GitHub-Host fest.
Eine Übersicht aller verfügbaren Flags finden Sie in der Referenz zum bulk-scan-Befehl . Antworten auf häufige Fragen zur Scan-Abdeckung und zu Befunden finden Sie in den CLI- FAQ.