jpskill.com
🛠️ 開発・MCP コミュニティ

php-crlf-audit

PHPのWebソースコードにおけるCRLF/レスポンス分割の脆弱性を監査し、ユーザー入力がHTTP応答ヘッダーに与える影響を分析して、PoCと修復提案を出力するSkill。

📜 元の英語説明(参考)

PHP Web 源码 CRLF/响应分割审计工具。识别用户输入进入 HTTP 响应头,分析换行/控制字符过滤与编码,输出分级、PoC 与修复建议(禁止省略)。

🇯🇵 日本人クリエイター向け解説

一言でいうと

PHPのWebソースコードにおけるCRLF/レスポンス分割の脆弱性を監査し、ユーザー入力がHTTP応答ヘッダーに与える影響を分析して、PoCと修復提案を出力するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o php-crlf-audit.zip https://jpskill.com/download/6000.zip && unzip -o php-crlf-audit.zip && rm php-crlf-audit.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6000.zip -OutFile "$d\php-crlf-audit.zip"; Expand-Archive "$d\php-crlf-audit.zip" -DestinationPath $d -Force; ri "$d\php-crlf-audit.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して php-crlf-audit.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → php-crlf-audit フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

PHP CRLF 応答分割監査(php-crlf-audit)

PHP プロジェクトのソースコードを分析し、ユーザーが制御可能なデータが応答ヘッダー(header)、Cookie、またはブラウザ/ミドルウェアによって新しいヘッダーとして解釈される可能性のある他の場所に入り込み、応答分割、キャッシュポイズニング、またはリダイレクトハイジャックを引き起こすかどうかを識別します。

分類と番号付け

  • 詳細については、shared/SEVERITY_RATING.md を参照してください。
  • 脆弱性番号:{C/H/M/L}-CRLF-{連番}

必須検査シンク(強制)

以下の点を識別してください。

  • header() のヘッダー値パラメータにユーザー入力が含まれている場合
  • setcookie() の cookie name/value/domain/path にユーザー入力が含まれている場合
  • カスタムヘッダーに出力する関数/ラッパー(最終的には header を呼び出すもの)
  • HTTP 応答ヘッダーに連結されてボディ内に出力されるもの(まれですが、コード内で証拠化する必要があります)

必須検査フィルターと正規化(強制)

以下を必ず出力してください。

  • \r\n に対して拒否またはサニタイズが行われているか
  • 可視制御文字に対して処理が行われているか
  • URL エンコード/エスケープが行われているか(ただし、注意:誤った「部分的なフィルタリング」は回避される可能性があります)

PoC(強制)

  • 実際のルートと制御可能なフィールド名を必ず提示してください。
  • ペイロードは CRLF を示す必要があります:%0d%0a(または \r\n)と、期待される効果(Location またはカスタムヘッダーの注入など)を説明してください。

レポート出力

{output_path}/vuln_audit/crlf_{timestamp}.md

項目テンプレート(強制)

必ず以下を含めてください:位置の証拠 + データフローチェーン + 悪用可能な前提条件 + PoC + 修正提案 + コード検索ステートメント。

証拠引用(強制:php-route-tracer から)

各 CRLF/応答分割の疑わしい脆弱性について、trace 出力中の ## 9) Sink Evidence Type ChecklistCRLF 行に対応する証拠要点(状態は未検証でも構いませんが、証拠引用は必須です)を個別に引用する必要があります。

  1. EVID_CRLF_OUTPUT_POINT:応答ヘッダー/Cookie 出力点の位置の証拠(header/setcookie などの最終出力位置)
  2. EVID_CRLF_USER_INPUT_INTO_HEADER_COOKIE:ユーザー入力が header/cookie 値に入り込む証拠(制御文字の入り込み点を含む)
  3. EVID_CRLF_CONTROL_CHAR_FILTERING_ENCODING\r\n または制御文字のフィルタリング/エンコードの証拠(拒否/サニタイズ/エンコードの実装に対応する部分)

tracer 証拠欠落処理(強制)

  • 上記 1~3 のいずれかの重要な証拠要点が見つからない場合:その脆弱性の状態は ⚠️未検証 とマークするしかなく、直接 ✅悪用可能と確認済み を与えることはできません。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

PHP CRLF 响应分割审计(php-crlf-audit)

分析 PHP 项目源码,识别用户可控数据是否进入响应头(header)、Cookie、或其他可被浏览器/中间件解释为新头,从而造成响应拆分、缓存投毒或重定向劫持。

分级与编号

  • 详见:shared/SEVERITY_RATING.md
  • 漏洞编号:{C/H/M/L}-CRLF-{序号}

必检 Sink(强制)

识别以下点:

  • header() 的 header 值参数含用户输入
  • setcookie() 的 cookie name/value/domain/path 中含用户输入
  • 输出到自定义 header 的函数/封装(最终仍调用 header)
  • 返回 body 内拼接到 HTTP 响应头(少见,但仍需在代码中证据化)

必检过滤与归一化(强制)

必须输出:

  • 是否对 \r\n 做了拒绝或清洗
  • 是否对可见控制字符进行了处理
  • 是否进行了 URL 编码/转义(但注意:错误的“部分过滤”可能绕过)

PoC(强制)

  • 必须给出真实路由与可控字段名
  • payload 必须体现 CRLF:%0d%0a(或 \r\n)并说明预期效果(如注入 Location 或自定义 header)

报告输出

{output_path}/vuln_audit/crlf_{timestamp}.md

条目模板(强制)

必须包含:位置证据 + 数据流链 + 可利用前置条件 + PoC + 修复建议 + 代码搜索语句。

证据引用(强制:来自 php-route-tracer)

每条 CRLF/响应分割疑似漏洞必须逐项引用 trace 输出中 ## 9) Sink Evidence Type ChecklistCRLF 行对应证据要点(允许状态为待验证,但证据引用必须存在):

  1. EVID_CRLF_OUTPUT_POINT:响应头/ Cookie 输出点位置证据(header/setcookie 等最终输出位置)
  2. EVID_CRLF_USER_INPUT_INTO_HEADER_COOKIE:用户输入进入 header/cookie 值的证据(包含控制字符进入点)
  3. EVID_CRLF_CONTROL_CHAR_FILTERING_ENCODING\r\n 或控制字符过滤/编码证据(拒绝/清洗/编码实现的对应片段)

tracer 证据缺失处理(强制)

  • 若无法定位上述 1~3 任一关键证据要点:该漏洞状态只能标记为 ⚠️待验证,不得直接给出 ✅已确认可利用