For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション
Theme

コード変更のセキュリティレビュー

Pull Request やローカルの変更によってセキュリティが低下していないか、手動または CI/CD で確認します。

Git で管理している一連の変更を対象に、変更によってセキュリティが低下していないかレビューします。Codex は、変更されたソースコードやそれに準じるファイルを 1 つずつ確認し、それぞれの動作を直接支えるコードも調べます。レビューの範囲をリポジトリ全体の監査にまで広げることはありません。

特定の変更ではなくリポジトリ全体をスキャンする場合は、セキュリティスキャンの実行を参照してください。

手動レビューの実行

デスクトップアプリでセキュリティを開き、スキャン、+ スキャンの順に選択します。リポジトリを選び、変更を選択します。レビューの対象には、未コミットの変更、単一のコミット、またはベースとヘッドのリビジョンで指定した範囲を選べます。変更を対象とするスキャンでは詳細スキャンを利用できません。

会話の中で、未コミットの変更をレビューするよう Codex に依頼することもできます。

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

コミットやブランチの範囲をレビューする場合は、必要に応じて両端のリビジョンを指定します。

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.

Pull Request のベースとヘッドのリビジョンがローカルのチェックアウトにあれば、その Pull Request を指定することもできます。

設定画面でのレビュー対象の確認

  1. 変更を選択します。
  2. チェックアウト済みのリポジトリ、現在のブランチ、最新のコミットを確認します。
  3. レビュー対象の変更で、次のいずれかを選びます。
    • 現在の作業ツリーをレビューする場合は Uncommitted changes
    • 単一のコミットをレビューする場合は最新のコミット
    • ブランチまたは Pull Request の変更範囲をレビューする場合はベースとヘッドのリビジョン
  4. 概要に表示されている変更が、レビューしたい変更と一致していることを確認します。
  5. スキャンを開始を選択します。

Codex が別のブランチをチェックアウトしたり、選択した作業ツリーを切り替えたりすることはありません。指定したリビジョンがローカルにない場合は、レビュー前にフェッチするか、ローカルにあるベースとヘッドを指定してください。

検出事項への対応

結果を確認したら、対応すると判断した検出事項を修正して検証するか、検出事項をエクスポートして追跡する手順に進みます。

CI/CD でのレビューの自動化

スタンドアロン CLI で構造化 JSON、重大度に基づくポリシー、SARIF のアップロードを利用する方法は、CI での Codex Security の実行を参照してください。インストール済みのプラグインのスキルを codex exec で呼び出す場合は、以下の手順に従います。

ランナーが Codex CLI を非対話で呼び出せる場合は、CI で $codex-security:security-diff-scan を実行できます。まず、スキャン用の認証情報をインストールプロセスに渡さずに CLI をインストールします。

npm install --global @openai/codex

CLI に Codex Security プラグインをインストールします。

codex plugin add codex-security@openai-curated

このコマンドは、Codex CLI の公開プラグインマーケットプレイスを使用します。バージョンごとの要件は、プラグインの変更履歴を参照してください。

次に、CI のシークレットストアに保存した OpenAI API キーを CODEX_SECURITY_API_KEY として渡します。この認証情報はスキャンの実行時にのみ渡してください。

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

書き込み可能なサンドボックスを使用するため、スキャン中に一時的な成果物を作成できます。一方、プロンプトでは、チェックアウトしたソースを変更しないよう Codex に指示しています。

スキャン結果は $TMPDIR/codex-security-scans/<repository>/<scan-id>/ に書き込まれます。

ファイル 内容
report.md スキャンディレクトリ全体の内容を確認する際に最初に読むレポートです。
findings/<slug>/ 要求した場合に出力される、脆弱性の詳細レポートと、その脆弱性を実証するためのファイルです。
hardening/ 要求した場合に出力される、コードの構造面でセキュリティを強化するための指針と具体的な提案です。
findings.json 検出事項ごとに、安定した識別子、重大度、確信度、ソース内の該当箇所、修正方法を記録します。これらのフィールドはセキュリティワークフローや後続のツールで利用できます。
scan-manifest.json レビュー対象、リビジョン、成果物のハッシュを記載し、封印したスキャンの実行記録です。
coverage.json レビュー済みの範囲、レビューを見送った範囲、除外した箇所、レビューの網羅度を記録します。

各フィールドの定義は、検出事項のスキーマを参照してください。findingId は検出事項自体を識別し、occurrenceId は今回のスキャンで検出された個別の事例を識別します。

たとえば、次のコマンドは検出事項ごとにタブ区切りで 1 行ずつ出力します。

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

以下の例では、Node.js と npm、Git、Python 3、jq、および各 CI プロバイダーのコマンドラインツールを利用できる、信頼できる Linux ランナーを想定しています。npm のグローバルパッケージのインストール先には書き込み権限が必要です。

スキャン結果には、脆弱性に関する機密情報が含まれることがあります。成果物は非公開で保管し、検出事項を公開する前に公開先と内容を確認してください。利用している CI プロバイダーに対応する例を選択してください。

Choose an option
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

これらの例では、フォークからの Pull Request をスキップします。認証情報を使用するジョブは、保護されたパイプライン定義からのみ実行し、対象はスキャン用の認証情報を預けられる信頼済みのコントリビューターに限定してください。codex-security-scans をアーカイブすると、構造化された検出事項、マニフェスト、カバレッジ情報、report.md に加え、要求に応じて出力された findings/ や hardening/ もまとめて保存できます。まずは結果を参考情報として利用し、ジョブを必須チェックにする前にスキャンの範囲と実行時間を確認してください。

API キーの取り扱いとサンドボックスの制御については、非対話モードを参照してください。組織で Codex GitHub Action の利用が許可されている場合、このアクションで実行時に CLI をインストールできます。ただし、プラグインは事前にインストールし、アクションの codex-home 入力には、プラグインのインストール時と同じ CODEX_HOME を指定してください。