Codeänderungen auf Sicherheitsprobleme prüfen

Prüfen Sie Pull Requests und lokale Änderungen manuell oder in CI/CD auf Sicherheitsregressionen.

Führen Sie eine Sicherheitsprüfung von Änderungen durch, um Regressionen in einem einzelnen Git-basierten Änderungssatz zu finden. Codex prüft jede geänderte quellcodeähnliche Datei und den direkt zugehörigen unterstützenden Code. Die Prüfung wird nicht zu einem vollständigen Repository-Audit ausgeweitet.

Um ein gesamtes Repository statt einer bestimmten Änderung zu scannen, lesen Sie Sicherheitsscan ausführen.

Manuelle Prüfung ausführen

Öffnen Sie in der Desktop-App Security, wählen Sie Scans und dann + Scan aus. Wählen Sie das Repository und anschließend Changes aus. Prüfen Sie nicht committete Änderungen, einen einzelnen Commit oder eine Basis- und Head-Revision. Deep scan ist für einen Änderungsscan nicht verfügbar.

Sie können Codex auch in einer Unterhaltung bitten, nicht committete Änderungen zu prüfen:

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

Geben Sie bei einem Commit- oder Branch-Bereich bei Bedarf beide Revisionen an:

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.

Sie können auch einen Pull Request angeben, wenn dessen Basis- und Head-Revisionen im lokalen Checkout verfügbar sind.

Änderung bei der Einrichtung bestätigen

  1. Wählen Sie Changes aus.
  2. Bestätigen Sie das ausgecheckte Repository, den aktuellen Branch und den neuesten Commit.
  3. Wählen Sie unter Changes to review Folgendes aus:
    • Uncommitted changes für den aktuellen Arbeitsbaum.
    • Den neuesten Commit für die Prüfung eines einzelnen Commits.
    • Eine Basis- und Head-Revision für einen Branch- oder Pull-Request-Bereich.
  4. Vergewissern Sie sich, dass die Zusammenfassung die Änderung beschreibt, die Sie prüfen wollten.
  5. Wählen Sie Start scan aus.

Codex checkt keinen anderen Branch aus und wechselt nicht den ausgewählten Arbeitsbaum. Wenn eine angeforderte Revision lokal nicht verfügbar ist, rufen Sie sie vor der Prüfung ab oder geben Sie lokal verfügbare Basis- und Head-Revisionen an.

Auf Ergebnisse reagieren

Nachdem Sie die Ergebnisse geprüft haben, beheben und verifizieren Sie einen akzeptierten Befund, oder exportieren und verfolgen Sie Befunde.

Prüfungen in CI/CD automatisieren

Informationen zur eigenständigen CLI finden Sie unter Codex Security in CI ausführen, einschließlich strukturiertem JSON, einer Schweregradrichtlinie und SARIF- Upload. Lesen Sie diesen Abschnitt weiter, um den installierten Plugin-Skill über codex exec aufzurufen.

Führen Sie $codex-security:security-diff-scan in CI aus, wenn der Runner die Codex CLI ohne Interaktion aufrufen kann. Installieren Sie zunächst die CLI, ohne die Scan- Zugangsdaten offenzulegen:

npm install --global @openai/codex

Installieren Sie das Codex Security-Plugin in der CLI:

codex plugin add codex-security@openai-curated

Der Installationsbefehl verwendet den öffentlichen Plugin-Marktplatz der Codex CLI. Versionsspezifische Anforderungen finden Sie im Plugin-Änderungsprotokoll .

Stellen Sie als Nächstes einen OpenAI API key aus Ihrem CI-Secretspeicher als CODEX_SECURITY_API_KEY bereit. Machen Sie die Zugangsdaten nur für den Scan verfügbar:

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

Die beschreibbare Sandbox ermöglicht es dem Scan, temporäre Artefakte zu erstellen. Der Prompt verlangt weiterhin, dass Codex den Quellcode-Checkout unverändert lässt.

Der Scan schreibt seine Ausgabe nach $TMPDIR/codex-security-scans/<repository>/<scan-id>/:

Datei Inhalt
report.md Primärer lesbarer Einstiegspunkt in das vollständige Scanverzeichnis.
findings/<slug>/ Detaillierte Schwachstellenberichte und unterstützende Proof-of-Concept-Dateien, sofern angefordert.
hardening/ Hinweise zur strukturellen Härtung und unterstützende Vorschläge, sofern angefordert.
findings.json Befunde mit stabilen Kennungen, Schweregrad, Konfidenz, Quellcodestellen und Abhilfemaßnahmen. Verwenden Sie diese Felder in Sicherheitsworkflows oder nachgelagerten Tools.
scan-manifest.json Versiegelter Scanbeleg mit dem geprüften Ziel, den Revisionen und den Artefakt-Hashes.
coverage.json Geprüfte und zurückgestellte Bereiche, Ausschlüsse und Vollständigkeit der Abdeckung.

Felddefinitionen finden Sie im Befundschema. Verwenden Sie findingId zur Identifizierung des Befunds und occurrenceId für sein Vorkommen in diesem Scan.

Dieser Befehl gibt beispielsweise pro Befund eine tabulatorgetrennte Zeile aus:

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

Diese Beispiele setzen einen vertrauenswürdigen Linux-Runner mit Node.js und npm, Git, Python 3, jq und den Befehlszeilentools des Anbieters voraus. Das globale Paketpräfix von npm muss beschreibbar sein.

Scanergebnisse können sensible Schwachstellendetails enthalten. Halten Sie Artefakte privat und prüfen Sie Ziel und Inhalt, bevor Sie Befunde veröffentlichen. Wählen Sie das Beispiel für Ihren CI-Anbieter:

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

Die Beispiele überspringen Pull Requests aus Forks. Führen Sie Jobs mit Anmeldedaten nur aus einer geschützten Pipeline-Definition und nur für Mitwirkende aus, denen die Scan- Anmeldedaten anvertraut werden. Archivieren Sie codex-security-scans, um die strukturierten Befunde, das Manifest, die Abdeckung und report.md zusammen mit allen angeforderten Ausgaben unter findings/ oder hardening/ aufzubewahren. Beginnen Sie mit unverbindlichen Ergebnissen und prüfen Sie Abdeckung und Laufzeit, bevor Sie den Job zu einer erforderlichen Prüfung machen.

Informationen zur Handhabung von API keys und zu Sandbox-Steuerelementen finden Sie unter Nicht interaktiver Modus. Wenn Ihre Organisation die Codex GitHub Action zulässt, kann sie die CLI zur Laufzeit installieren. Sie müssen jedoch weiterhin zuerst das Plugin installieren und die codex-home-Eingabe der Action auf dasselbe CODEX_HOME verweisen lassen.