T-CREATOR

<div />

Cloudflare の security-audit スキルを Claude Code と Codex で比較: 3つとも見つけ、進め方に差

Cloudflare の security-audit スキルを Claude Code と Codex で比較: 3つとも見つけ、進め方に差

Cloudflare の security-audit スキルを入れた Claude Code と Codex に同じ小さな API を点検させたところ、どちらもわざと入れた3つの弱いところを見つけ、差は進め方に出ました。2026年11月6日に、Claude Code 2.1.309 と Codex CLI 0.166.0 で確かめました。

経緯

Cloudflare が2026年9月に公開した security-audit スキルは、Claude Code でも Codex でも使えると紹介されています。同じアプリを両方に点検させて、見つけるものと進め方がどう違うかを並べました。1回ずつの結果なので、どちらが上かを決めるものではありません。

環境

  • macOS 26.6.2、Node.js 24.19.0
  • Claude Code 2.1.309(モデルは初めの設定の Claude Opus 5.5)
  • Codex CLI 0.166.0(モデルは初めの設定の GPT-6.1-Sol)
  • security-audit スキル(2026年9月14日の版)。Skills CLI 1.7.6 で入れた

比べ方

課題

メモの API(src​/​server.js と src​/​db.js の2つ、合わせて約60行)に、弱いところを3つ入れました。

場所入れた弱いところ
​/​users?name=名前をそのまま SQL の文に埋め込む
​/​files?name=ファイル名に ..​/​ を入れると、決めたフォルダーの外を読める
​/​ping?host=入力をそのままシェルのコマンドに埋め込む

ID で探す ​/​users​/​{id} だけは、? を使った安全な書き方にしておきました。

頼み方とそろえた条件

  • スキルの README にある例のとおり、「security audit this codebase」とだけ頼みました。
  • スキルは、プロジェクトのフォルダーに npx skills add https:​/​​/​github.com​/​cloudflare​/​security-audit-skill --skill security-audit で入れました。
  • 1回の指示を渡して終わるまで任せる使い方(Claude Code は claude -p、Codex は codex exec)で動かしました。
  • 自分で足した設定、MCP サーバー、指示のファイルは読み込ませませんでした。
  • Claude Code にはファイルの読み書きと node などだけを許し、Codex は作業のフォルダーだけに書き込める設定(workspace-write)にしました。

結果

Claude CodeCodex
かかった時間62秒531秒(約9分)
SQL の埋め込み見つけた(Medium)見つけた(確かめが必要)
ファイル名の ..​/​見つけた(High)見つけた(確かめが必要)
シェルへの埋め込み見つけた(Critical)見つけた(確かめが必要)
不正な名前で、サーバーが落ちるSQL の項目の中で指摘4つ目の項目として指摘(確かめが必要)
安全な ​/​users​/​{id}問題なしとした良い書き方として挙げた
作ったファイルなし(返事だけ)報告と記録のファイル 20 個ほど
読み込んだ量 / 書き出した量約23万 / 4,571 トークン約240万 / 12,925 トークン

使った量は、トークン(AI が文を数える単位)で記録しました。数え方がツールごとに違うので、同じツールの中での重さの目安として見てください。Codex の読み込みの多くは、前に読んだ分の使い回し(キャッシュ)でした。

違いが出たところ

Claude Code は、スキルの手順を省いて自分で読んだ

Claude Code の返事の最初には、次のように書かれていました。「アプリは2つのファイルで約60行なので、スキルの何段階もの手順と報告のファイルは省いて自分でコードを読んだ」。そのうえで、3つに重さ(Critical、High、Medium)を付けて、攻撃の例と直し方を並べました。返事は1回で、ファイルは作っていません。

Codex は手順どおりに進め、すべて「確かめが必要」とした

Codex は、スキルの説明のファイルを読んでから、手分けして調べる役(サブエージェント)を5回呼びました。見つけたものは別の役に確かめさせていて、スキルの手順どおりの進め方でした。報告(REPORT.md)の結論は「確定は0件、確かめが必要なものが4件」でした。

理由も報告に書かれていました。スキルは、コードを動かして確かめる前に、外のネットワークを切った隔離の環境を用意するよう求めています。その環境が用意できなかったので、コードは一度も動かさずに読むだけで終えた、という説明です。動かして確かめていないので、重さも付けていません。

Codex の報告は、リポジトリの外に置かれた

Codex は、報告を ..​/​security-audit​/​memo-api​/​run-1​/​ に書き出しました。点検したフォルダーの隣です。報告の本文(REPORT.md)、確かめが必要なものの詳しい説明(NEEDS-VALIDATION.md)、見つけたものの一覧(findings.json)などが入っていました。

使い分け

小さなコードをすぐ見てほしいときは、Claude Code の返事の形が読みやすく、直す順番も付いていました。手順と記録を残したいとき、続けて何度か点検して結果を積み重ねたいときは、Codex のようにスキルの手順どおりに進めた形が合います。スキルの README には、1回の点検で見つかるのは、何度か繰り返したときの合計の半分ほどだったと書かれています。

注意点

1回ずつの結果で、やり直すと変わることがある

同じ頼み方でも、もう一度させると、手順を省くかどうかや見つけるものが変わることがあります。

「確かめが必要」は、安全という意味ではない

Codex の報告にも、確定が0件なのは動かして確かめられなかったからだと書かれています。安全だという意味ではありません。挙がったものは、自分で直すか、隔離した環境で確かめます。

大きなリポジトリでは、時間と量が大きく増える

今回は60行のアプリです。大きなリポジトリで手順どおりに進めると、時間と使う量はさらに増えます。入れる前にスキルの中身を確かめる手順は、スキルを入れる前に中身を確かめる手順に書きました。

参考文献

著書

とあるクリエイター

フロントエンドエンジニア Next.js / React / TypeScript / Node.js / Docker / AI Coding