Tinjau perubahan kode untuk keamanan

Tinjau pull request dan perubahan lokal untuk menemukan regresi keamanan secara manual atau dalam CI/CD.

Jalankan peninjauan perubahan keamanan untuk menemukan regresi dalam satu set perubahan yang didukung Git. Codex meninjau setiap file mirip sumber yang berubah beserta kode pendukung langsungnya. Peninjauan ini tidak diperluas menjadi audit repositori penuh.

Untuk memindai seluruh repositori, alih-alih perubahan tertentu, lihat Jalankan pemindaian keamanan.

Jalankan peninjauan manual

Di aplikasi desktop, buka Security, pilih Scans, lalu pilih + Scan. Pilih repositori, lalu pilih Changes. Tinjau perubahan yang belum di-commit, satu commit, atau revisi dasar dan revisi kepala. Deep scan tidak tersedia untuk pemindaian perubahan.

Anda juga dapat meminta Codex meninjau perubahan yang belum di-commit dalam percakapan:

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

Untuk commit atau rentang cabang, tentukan kedua revisi bila diperlukan:

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.

Anda juga dapat menyebutkan pull request jika revisi dasar dan revisi kepalanya tersedia dalam checkout lokal.

Konfirmasikan perubahan dalam penyiapan

  1. Pilih Changes.
  2. Konfirmasikan repositori yang sedang di-checkout, cabang saat ini, dan commit terbaru.
  3. Di bagian Changes to review, pilih:
    • Uncommitted changes untuk worktree saat ini.
    • Commit terbaru untuk peninjauan satu commit.
    • Revisi dasar dan revisi kepala untuk rentang cabang atau pull request.
  4. Konfirmasikan bahwa ringkasan menjelaskan perubahan yang ingin Anda tinjau.
  5. Pilih Start scan.

Codex tidak melakukan checkout cabang lain atau mengganti worktree yang dipilih. Jika revisi yang diminta tidak tersedia secara lokal, ambil revisi tersebut sebelum peninjauan atau berikan revisi dasar dan revisi ujung yang tersedia secara lokal.

Tindak lanjuti temuan

Setelah meninjau hasilnya, perbaiki dan verifikasi temuan yang Anda terima atau ekspor dan lacak temuan.

Otomatiskan peninjauan dalam CI/CD

Untuk CLI mandiri, lihat Jalankan Codex Security di CI untuk JSON terstruktur, kebijakan tingkat keparahan, dan unggahan SARIF. Lanjutkan bagian ini untuk memanggil skill plugin yang terinstal melalui codex exec.

Jalankan $codex-security:security-diff-scan di CI saat runner dapat memanggil Codex CLI tanpa interaksi. Pertama, instal CLI tanpa mengekspos kredensial pemindaian:

npm install --global @openai/codex

Instal plugin Codex Security di CLI:

codex plugin add codex-security@openai-curated

Perintah instalasi menggunakan marketplace plugin publik Codex CLI. Lihat catatan perubahan plugin untuk persyaratan khusus versi.

Selanjutnya, sediakan API key OpenAI dari penyimpanan rahasia CI Anda sebagai CODEX_SECURITY_API_KEY. Ekspos kredensial hanya untuk pemindaian:

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

Sandbox yang dapat ditulisi memungkinkan pemindaian membuat artefak sementara. Prompt tetap mengharuskan Codex membiarkan checkout kode sumber tanpa perubahan.

Pemindaian menulis outputnya ke $TMPDIR/codex-security-scans/<repository>/<scan-id>/:

File Isi
report.md Titik masuk utama yang dapat dibaca untuk direktori pemindaian lengkap.
findings/<slug>/ Laporan kerentanan terperinci dan file bukti konsep pendukung, jika diminta.
hardening/ Panduan penguatan struktural dan usulan pendukung, jika diminta.
findings.json Temuan dengan pengenal stabil, tingkat keparahan, tingkat keyakinan, lokasi kode sumber, dan remediasi. Gunakan bidang ini dalam alur kerja keamanan atau alat hilir.
scan-manifest.json Tanda terima pemindaian tersegel dengan target yang ditinjau, revisi, dan hash artefak.
coverage.json Area yang ditinjau dan ditangguhkan, pengecualian, serta kelengkapan cakupan.

Untuk definisi bidang, lihat skema temuan. Gunakan findingId untuk mengidentifikasi temuan dan occurrenceId untuk kemunculannya dalam pemindaian ini.

Sebagai contoh, perintah ini mencetak satu baris yang dipisahkan tab untuk setiap temuan:

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

Contoh-contoh ini mengasumsikan runner Linux tepercaya dengan Node.js dan npm, Git, Python 3, jq, serta alat baris perintah penyedia. Prefiks paket global npm harus dapat ditulisi.

Hasil pemindaian dapat mencakup detail kerentanan yang sensitif. Jaga kerahasiaan artefak, serta tinjau tujuan dan kontennya sebelum memublikasikan temuan. Pilih contoh untuk penyedia CI Anda:

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

Contoh tersebut melewati pull request hasil fork. Jalankan tugas yang menggunakan kredensial hanya dari definisi pipeline yang dilindungi dan hanya untuk kontributor yang dipercaya untuk menggunakan kredensial pemindaian. Arsipkan codex-security-scans untuk menyimpan temuan terstruktur, manifest, cakupan, dan report.md bersama-sama, beserta setiap keluaran findings/ atau hardening/ yang diminta. Mulailah dengan hasil yang bersifat saran dan tinjau cakupan serta waktu proses sebelum menjadikan tugas tersebut sebagai pemeriksaan wajib.

Untuk penanganan API key dan kontrol sandbox, lihat Mode noninteraktif. Jika organisasi Anda mengizinkan Codex GitHub Action, tindakan tersebut dapat menginstal CLI saat runtime, tetapi Anda tetap harus menginstal plugin terlebih dahulu dan mengarahkan input codex-home tindakan tersebut ke CODEX_HOME yang sama.