0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codex Security CLIをSemgrepと比較、$1.28で所見0件だった

0
Posted at

はじめに

OpenAI が Codex Security CLI を 2026-07-29 に OSS 化しました。npm パッケージ @openai/codex-security(Apache-2.0)として配布され、リポジトリスキャン・所見の追跡・修正検証を CLI 一発で行えると謳っています。対象読者は、社内リポジトリに脆弱性スキャナーを組み込むか検討している開発者・DevSecOps 担当者です。

同じコード(このリポジトリの一部スクリプト)に対して、AI 駆動の Codex Security CLI・依存関係監査の npm audit・静的解析の Semgrep を実際に走らせ、所要時間・検出数・料金を横並びで測りました。結論から言うと、Codex Security CLI は 2 回の実行とも「所見 0 件」のまま preflight フェーズで停止し、そこまでに $1.96 を消費しました。

比較結果一覧

ツール 種別 対象 所要時間 検出数 料金 完走
Codex Security CLI 0.1.4 AI 駆動スキャン コード(16ファイル→1ファイルへ縮小) 79秒 / 43秒(2回) 0件 $1.28 + $0.68 ≈ $1.96 ✗(コスト上限で強制終了)
npm audit(npm 同梱) 依存関係監査 package-lock.jsonmetadata.dependencies.total=114) 1.07秒 5件(high3/moderate1/low1) $0
Semgrep 1.172.0--config auto 静的解析(SAST) コード16ファイル 10.2秒 14件 $0

実行環境: Node.js v22.22.2 / Python 3.11.15。Codex Security CLI は OPENAI_API_KEY を使った API キー認証(--auth auto が自動選択)で動かしています。

⚠️ 対象範囲がツールごとに違う点に注意してくださいnpm audit は依存パッケージの脆弱性データベース照合、Semgrep と Codex Security CLI はソースコードの静的解析です。検出数の単純な優劣比較はフェアではなく、本記事の主眼は「同じコード規模に対する所要時間とコストの違い」です。

Codex Security CLI: 2回とも preflight で力尽きた

まず . 全体(16ファイル)を対象に、コストを抑えるため --effort low --max-cost 1.00 を指定して実行しました。

npx @openai/codex-security scan . --effort low --max-cost 1.00 --format json

ログにはコスト推定値が数秒おきに流れ、実測で79秒(ログの最終チェックポイントは開始から01:17=77秒。終了処理を含めた実測は time コマンドで79秒弱)後に上限を超過して強制終了しました。

[00:45] Estimated cost: $0.5062695 of $1.00 limit
[01:06] Estimated cost: $0.614666 of $1.00 limit
[01:17] Estimated cost: $1.2797015 of $1.00 limit
codex-security: Scan stopped: estimated cost $1.2797015 exceeded the $1.00 limit

codex-security scans --format json で保存済みスキャンの状態を確認すると、phase: "preflight" かつ status: "failed"findingCount: 0 でした。preflight は脅威モデル生成と並列ワーカーの割り当てを行う準備段階で、実際の脆弱性候補を洗い出す前の工程です。つまり $1.28 は「所見を探し始める前」に消えた計算になります。

対象を8KBのファイル1つ(lib/article-files.js)まで絞り、--max-cost 0.60 で再実行しても結果は同じでした。43秒で $0.676446 に達し、phase: preflight のまま findingCount: 0 で停止しています。ファイル数を16→1に減らしても、preflight 自体のコストは大きく下がりませんでした。

なお scan --help には --effort minimal が選択肢として載っていますが、実際に指定すると API 側が Unsupported value: 'minimal' is not supported with the 'gpt-5.6-sol' model と即座に拒否しました(対応値は none/low/medium/high/xhigh/max)。ヘルプ表示と実際の受理値がずれているため、初回実行時は --effort low から試すのが安全です。

npm audit: 1秒で5件、対象は依存関係のみ

npm audit --json

本リポジトリの package-lock.jsonnpm audit --jsonmetadata.dependencies 集計で本番15・開発100・総数114パッケージ)を対象に1.07秒で完了し、high 3件・moderate 1件・low 1件を検出しました。ネットワーク越しの脆弱性データベース照合だけなので高速ですが、あくまで 依存パッケージの既知脆弱性 が対象で、自前コードのロジック上の欠陥(パストラバーサル等)は検出範囲外です。

Semgrep: 10秒で14件、コミュニティルール203本を適用

python3 -m venv /tmp/semgrep-venv
/tmp/semgrep-venv/bin/pip install semgrep
/tmp/semgrep-venv/bin/semgrep --config auto . --json

同じ16ファイルに対して --config auto(コミュニティルールセットの自動選択)を実行すると、203ルールが適用され10.2秒で14件検出しました。上位はいずれも実在するパターンです。

javascript.lang.security.detect-child-process.detect-child-process lib/article-files.js:34
javascript.lang.security.audit.path-traversal.path-join-resolve-traversal lib/article-files.js:59
javascript.lang.security.audit.path-traversal.path-join-resolve-traversal lib/article-graph.js:345

いずれも「child_process の起動箇所」「path.join/path.resolve の入力が外部由来かもしれない箇所」を機械的に洗い出したもので、実際に脆弱性かどうかは人間のレビューが必要です(Semgrep 自体もこれらを audit カテゴリの注意喚起として出しています)。無料・APIキー不要という条件で、この速度と検出数は十分実用的でした(--config auto はルール取得のためネットワーク通信を行い、既定でメトリクスも送信します。完全にローカルで完結させたい場合は --metrics=off を付与してください)。

3ツールの処理の違い

Codex Security CLI だけが「準備段階を終える前に打ち切られる」経路を辿った点が、他の2ツールとの構造的な違いです。npm audit と Semgrep はルールベース/DB照合であるのに対し、Codex Security CLI はスキャン対象ごとに LLM で脅威モデルを生成してから候補を絞り込む設計のため、対象コード量に応じて preflight 自体が重くなります。

筆者が実際に手を動かして気づいたのは、--max-cost を安全側に設定するほど「所見が0件のまま終わる」リスクが上がるという設計上のトレードオフです。コストを気にせず --effort xhigh(デフォルト)かつ上限なしで走らせれば preflight を抜けられる可能性はありますが、その場合の実費用は今回の実測(1ファイルで$0.68超)を踏まえると軽視できない水準になります。CI に組み込む前に、対象リポジトリの規模でコストと完走率を試算しておくべきです。

使い分け

  • 依存パッケージの既知脆弱性を素早くチェックしたいnpm audit。無料・高速だが対象は依存関係のみ
  • 自前コードのパターン的な脆弱性(パストラバーサル・危険な関数呼び出し等)を無料でスキャンしたい → Semgrep。ルールベースのため誤検知はあるが、コストと速度のバランスが良い
  • AI による文脈理解込みの脆弱性検出を試したい → Codex Security CLI。ただし今回の実測では小規模ターゲットでも --effort low かつコスト上限ありで所見0件のまま終了した。導入前に対象リポジトリでの試算・--max-cost の余裕を持った設定を推奨する

3ツールは代替関係ではなく、依存関係監査(npm audit)+無料の静的解析(Semgrep)を土台にし、AI駆動スキャン(Codex Security CLI)は予算とコスト上限を見積もった上で補完的に使うのが現実的な組み合わせです。

関連記事

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?