Kod değişikliklerini güvenlik açısından inceleme

Pull request'leri ve yerel değişiklikleri güvenlik gerilemeleri açısından manuel olarak veya CI/CD içinde inceleyin.

Git tarafından izlenen tek bir değişiklik kümesindeki gerilemeleri bulmak için güvenlik değişikliği incelemesi çalıştırın. Codex, değiştirilen kaynak benzeri her dosyayı ve onu doğrudan destekleyen kodu inceler. İncelemeyi tam bir depo denetimine genişletmez.

Belirli bir değişiklik yerine deponun tamamını taramak için Güvenlik taraması çalıştırın bölümüne bakın.

Manuel inceleme çalıştırma

Masaüstü uygulamasında Security bölümünü açın, Scans öğesini ve ardından + Scan öğesini seçin. Depoyu seçtikten sonra Changes öğesini seçin. Commit edilmemiş değişiklikleri, tek bir commit'i veya bir temel ve uç revizyonu inceleyin. Deep scan, değişiklik taramalarında kullanılamaz.

Bir konuşmada Codex'ten commit edilmemiş değişiklikleri incelemesini de isteyebilirsiniz:

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

Bir commit veya dal aralığı için gerektiğinde her iki revizyonu da belirtin:

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.

Temel ve uç revizyonları yerel checkout'ta mevcutsa bir pull request'in adını da belirtebilirsiniz.

Kurulumdaki değişikliği doğrulama

  1. Changes öğesini seçin.
  2. Checkout yapılmış depoyu, geçerli dalı ve en son commit'i doğrulayın.
  3. Changes to review altında şunlardan birini seçin:
    • Geçerli çalışma ağacı için Uncommitted changes.
    • Tek commit'lik inceleme için en son commit.
    • Bir dal veya pull request aralığı için temel ve uç revizyon.
  4. Özetin incelemek istediğiniz değişikliği açıkladığını doğrulayın.
  5. Start scan öğesini seçin.

Codex başka bir dala geçmez veya seçili worktree'yi değiştirmez. İstenen revizyon yerel olarak mevcut değilse incelemeden önce onu getirin veya yerel olarak mevcut bir taban ve uç revizyon sağlayın.

Bulgularla ilgili işlem yapma

Sonuçları inceledikten sonra kabul edilmiş bir bulguyu düzeltin ve doğrulayın veya bulguları dışa aktarın ve takip edin.

CI/CD içinde incelemeleri otomatikleştirme

Bağımsız CLI ile yapılandırılmış JSON, önem derecesi politikası ve SARIF yüklemesi için Codex Security'yi CI'da çalıştırın bölümüne bakın. Yüklü eklenti becerisini codex exec aracılığıyla çağırmak için bu bölümle devam edin.

Çalıştırıcı, Codex CLI'ı etkileşim gerektirmeden çağırabiliyorsa CI'da $codex-security:security-diff-scan çalıştırın. Önce, tarama kimlik bilgisini açığa çıkarmadan CLI'ı yükleyin:

npm install --global @openai/codex

Codex Security eklentisini CLI'a kurun:

codex plugin add codex-security@openai-curated

Yükleme komutu, herkese açık Codex CLI eklenti pazarını kullanır. Sürüme özgü gereksinimler için eklenti değişiklik günlüğüne bakın.

Ardından, CI gizli bilgi deponuzdaki bir OpenAI API key değerini CODEX_SECURITY_API_KEY olarak sağlayın. Kimlik bilgisini yalnızca tarama için erişime açın:

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

Yazılabilir korumalı alan, taramanın geçici çıktılar oluşturmasını sağlar. Prompt, Codex'in kaynak kodun çalışma kopyasını değiştirmemesini yine de şart koşar.

Tarama, çıktısını $TMPDIR/codex-security-scans/<repository>/<scan-id>/ konumuna yazar:

Dosya İçindekiler
report.md Tarama dizininin tamamına erişmek için okunabilir ana giriş noktası.
findings/<slug>/ İstendiğinde ayrıntılı güvenlik açığı raporları ve destekleyici kavram kanıtı dosyaları.
hardening/ İstendiğinde yapısal sağlamlaştırma rehberi ve destekleyici öneriler.
findings.json Sabit tanımlayıcılar, önem derecesi, güven düzeyi, kaynak konumları ve düzeltme bilgileri içeren bulgular. Bu alanları güvenlik iş akışlarında veya sonraki araçlarda kullanın.
scan-manifest.json İncelenen hedefi, revizyonları ve çıktı karmalarını içeren mühürlenmiş tarama kaydı.
coverage.json İncelenen ve ertelenen yüzeyler, kapsam dışı bırakılanlar ve kapsamın eksiksizliği.

Alan tanımları için bulgu şemasına bakın. Bulguyu tanımlamak için findingId, bu taramadaki örneğini belirtmek için occurrenceId kullanın.

Örneğin bu komut, her bulgu için sekmeyle ayrılmış bir satır yazdırır:

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

Bu örnekler; Node.js ve npm, Git, Python 3, jq ve sağlayıcının komut satırı araçlarının bulunduğu güvenilir bir Linux çalıştırıcısı varsayar. npm genel paket öneki yazılabilir olmalıdır.

Tarama sonuçları hassas güvenlik açığı ayrıntıları içerebilir. Çıktı dosyalarını özel tutun ve bulguları yayımlamadan önce hedefi ve içeriği inceleyin. CI sağlayıcınıza uygun örneği seçin:

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

Örnekler, çatallanmış pull request'leri atlar. Kimlik bilgisi gerektiren işleri yalnızca korumalı bir işlem hattı tanımından ve yalnızca tarama kimlik bilgisine erişmesine güvenilen katkıda bulunanlar için çalıştırın. Yapılandırılmış bulguları, manifesti, kapsamı ve report.md öğesini, talep edilen tüm findings/ veya hardening/ çıktılarıyla birlikte tutmak için codex-security-scans öğesini arşivleyin. Önce tavsiye niteliğindeki sonuçlarla başlayın; işi zorunlu bir denetim hâline getirmeden önce kapsamı ve çalışma süresini inceleyin.

API key kullanımı ve korumalı alan denetimleri için Etkileşimsiz mod bölümüne bakın. Kuruluşunuz Codex GitHub Action kullanımına izin veriyorsa CLI'ı çalışma zamanında kurabilir; ancak yine de önce eklentiyi kurmalı ve eylemin codex-home girdisini aynı CODEX_HOME öğesine yönlendirmelisiniz.