Deutsch

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.

Wenn Sie statt einer bestimmten Änderung ein vollständiges Repository prüfen möchten, lesen Sie Sicherheitsprüfung 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 für einen Commit- oder Branch-Bereich bei Bedarf beide Endpunkte 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.

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

Auf Ergebnisse reagieren

Nachdem Sie die Ergebnisse geprüft haben, können Sie einen akzeptierten Befund beheben und verifizieren oder Befunde exportieren und nachverfolgen.

Prüfungen in CI/CD automatisieren

Führen Sie denselben $codex-security:security-diff-scan-Skill in CI aus, wenn der Runner die Codex CLI ohne Interaktion aufrufen kann. Installieren Sie zunächst die CLI und das Plugin, ohne die Anmeldedaten für den Scan 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, der eine andere Version als der Katalog der gehosteten Desktop-App anbieten kann. Prüfen Sie das Plugin-Änderungsprotokoll, bevor Sie sich in CI auf eine bestimmte Plugin-Version oder Funktion verlassen.

Stellen Sie anschließend einen OpenAI API key aus dem Secret-Speicher Ihrer CI ausschließlich für den Scan als CODEX_SECURITY_API_KEY bereit:

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

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

Datei Inhalt
report.md Primärer, gut lesbarer Einstiegspunkt für das vollständige Scanverzeichnis.
findings/<slug>/ Ein ausführlicher Schwachstellenbericht pro berichtspflichtigem Befund, einschließlich unterstützender Proof-of-Concept-Dateien, sofern verfügbar.
hardening/ Portfolio zur strukturellen Absicherung sowie unterstützende Vorschläge oder Diagramme, wenn der Scan berichtspflichtige Befunde enthält.
findings.json Befunde mit stabilen Kennungen, Schweregrad, Konfidenz, Quellpositionen und Abhilfemaßnahmen. Dient als Eingabe für genehmigte interne Sicherheitsworkflows oder nachgelagerte 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.

Das findings.json-Schema definiert die vollständige Struktur. Das Schema enthält folgende Felder:

Feld Typ Beschreibung
documentType Zeichenfolge Identifiziert das Dokument als codex-security.findings.
schemaVersion Zeichenfolge Identifiziert die Version des Befundschemas.
scanId Zeichenfolge Identifiziert den Scan, der die Befunde erzeugt hat.
findings Array Enthält null oder mehr Befundobjekte.
findings[].findingId Zeichenfolge Stabile Befundkennung, die aus dem Fingerabdruck des Befunds abgeleitet wird.
findings[].occurrenceId Zeichenfolge Identifiziert dieses Auftreten des Befunds in einem bestimmten Scan.
findings[].ruleId Zeichenfolge Identifiziert die Schwachstellenfamilie.
findings[].identity Objekt Enthält den semantischen Anker und eine optionale Kennung der Geschwisterinstanz.
findings[].fingerprints Objekt Enthält den Fingerabdruckalgorithmus und den primären Fingerabdruck.
findings[].title Zeichenfolge Gibt den kurzen Titel des Befunds an.
findings[].summary Zeichenfolge Fasst die Schwachstelle und ihre Auswirkungen zusammen.
findings[].severity Objekt Enthält den Schweregrad und optionale Bewertungsdetails.
findings[].confidence Objekt Enthält die Konfidenzstufe und die Begründung.
findings[].taxonomy Objekt Enthält die Schwachstellenkategorie und CWE-Kennungen.
findings[].locations Array Führt betroffene Dateien, Zeilennummern und Positionsrollen auf.
findings[].remediation Zeichenfolge Beschreibt die empfohlene Behebung.
findings[].provenance Objekt Identifiziert die Quelle des Befunds.

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.

Wählen Sie das Beispiel für Ihren CI-Anbieter aus. Scanergebnisse können vertrauliche Details zu Schwachstellen enthalten. Halten Sie Artefakte privat und veröffentlichen Sie Befunde erst, nachdem Sie Zielgruppe, Inhalt und erforderliche Genehmigungen geprüft haben.

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 über eine geschützte Pipelinedefinition und nur für Mitwirkende aus, denen Sie die Anmeldedaten für den Scan anvertrauen. Archivieren Sie codex-security-scans, um die strukturierten Befunde, das Manifest, die Abdeckungsartefakte, report.md und die damit verknüpften Ausgaben findings/ und hardening/ zusammenzuhalten. 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.