php-vuln-scanner
PHPのコンポーネントにおける既知の脆弱性を検出し、その報告書を作成するツールです。
📜 元の英語説明(参考)
PHP 组件版本漏洞检测工具。扫描 composer.json / composer.lock 或 jar/包元信息,匹配已知漏洞规则并输出报告(包含可能的触发点分析框架)。
🇯🇵 日本人クリエイター向け解説
PHPのコンポーネントにおける既知の脆弱性を検出し、その報告書を作成するツールです。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o php-vuln-scanner.zip https://jpskill.com/download/6021.zip && unzip -o php-vuln-scanner.zip && rm php-vuln-scanner.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/6021.zip -OutFile "$d\php-vuln-scanner.zip"; Expand-Archive "$d\php-vuln-scanner.zip" -DestinationPath $d -Force; ri "$d\php-vuln-scanner.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
php-vuln-scanner.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
php-vuln-scannerフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[Skill 名] php-vuln-scanner
PHP 依存関係脆弱性スキャナー(php-vuln-scanner)
PHP プロジェクトの Composer 依存関係をスキャンし、既知のセキュリティ脆弱性(CVE/Advisory)を特定し、ルート/エントリポイントとの関連性を推論するフレームワークを提供します。
入力
source_path:ソースコードのルートディレクトリ
サポート対象:
composer.jsoncomposer.lock- ディレクトリの再帰検索(複数のサブモジュールで composer.lock を検索)
ルールと出力
- ルールマッチング:組み込み/外部ルールセット(例:
references/php-vulnerability.yaml、存在する場合は優先)を使用します。 - 出力先:
{output_path}/vuln_report/ {project_name}_composer_vuln_report_{timestamp}.md
スキャンフロー(必須)
相互検証の推奨事項:プロジェクト環境で
composer auditを実行できる場合は、その出力と本スキルによるルールマッチング結果を相互比較して、CVE のカバレッジを向上させることをお勧めします。composer auditは Packagist のリアルタイムアドバイザリデータベースを使用しており、本スキルの組み込みルールセットに存在する可能性のある時間的盲点を補完できます。両者の和集合を最終的な脆弱性リストとしてください。
- 依存関係の列挙
- composer.lock を解析してパッケージ名とバージョンを取得します。
- 複数モジュールの場合、モジュールごとにグループ化して出力します。
- 脆弱性マッチング
- 既知の CVE ルールに対して影響バージョン範囲をマッチングします。
- トリガーポイント分析(フレームワーク)
- 既知の高リスクコンポーネントが入り込む可能性のある機能領域を特定します:ルーティングエントリ、シリアライズ/テンプレート、アップロード/ダウンロード、認証チェーン。
php-route-mapperを使用してルートを出力した後、「影響を受けるルートの推論」を行うことをお勧めします。
- コンポーネント->ルート関連付けの推論(必須、欠落している場合はパイプラインを駆動できません)
- 入力依存関係:
routes_{timestamp}.mdとparams_{timestamp}.mdを読み取ります(shared/IO_PATH_CONVENTION.mdと一致します。個別に保存される場合は通常route_mapping/下の同名ファイルです。パイプライン結合時は総レポートの同等章を読み取ります)。 - 証拠の優先順位:
- コード内で直接当該コンポーネントのクラス/関数を参照している場合(例:
use Vendor\\Pkg\\{value}、new {value}、Vendor\\{value}::) - テンプレート/シリアライズ/アップロード/ネットワーク関連の「既知のアクセスポイント」を通じて当該コンポーネントが存在する機能領域を特定する場合(その後ルートを逆引きします)
- 名前のみに基づく推論は最終手段です:
⚠️要検証と明記する必要があります。
- コード内で直接当該コンポーネントのクラス/関数を参照している場合(例:
- 各脆弱性コンポーネントについて以下を出力します:
- コンポーネントのコード参照位置(ファイルパス + 関数/クラス名、行番号がない場合は「要特定」と記述しますが、ファイルパスは提供します)
- コンポーネントがトリガーする可能性のあるシンク機能領域(SQL/TPL/DESER/FILE/UPLOAD/SSRF/XSS/AUTH など)
- 推論される影響を受けるルート/エントリポイント(ルートエントリを個別にリストアップする必要があります。省略は禁止です。各エントリには
route_idとルート文字列の両方を指定し、php-route-tracerに直接フィードバックできるようにする必要があります)。
- 入力依存関係:
出力レポート構造(必須)
# {project_name} - Composer コンポーネント脆弱性スキャンレポート
生成時間: {timestamp}
分析パス: {source_path}
## リスク統計
(Critical/High/Medium/Low で分類し、省略してはなりません)
## 脆弱性の詳細(個別にリストアップ)
=== [CVE-xxxx-xxxx] {コンポーネント} {バージョン} ===
- 影響バージョン:
- 現在バージョン:
- 深刻度:
- 可能性のあるトリガーポイント(推論フレームワーク):
- コード参照位置(証拠):
- ファイル: path/to/xxx.php
- 証拠: 関数/クラス/呼び出しスニペット(最小限の特定可能なスニペットを提供する必要があります)
- 影響を受けるルート/エントリポイント(route-mapper と組み合わせて、「推論理由」を提供します):
- ルートリスト(個別にリストアップし、省略は禁止です):(`route_id` とルート文字列の両方を指定する必要があります)
- 推論理由(1/2/3 のどの優先順位の証拠方法であるかを明確にする必要があります)
- 修正提案:
主要コンポーネントトリガーポイントマトリックス(必須:パイプラインフェーズ 3 を駆動するために使用)
| コンポーネント | ルール/影響レベル | 対応するシンク機能領域 | 影響を受けるルート/エントリポイント数 | 影響を受けるルート/エントリポイント(個別にリストアップ) | 証拠レベル(直接参照/機能領域/要検証) |
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
PHP 依赖漏洞扫描器(php-vuln-scanner)
扫描 PHP 项目的 Composer 依赖,识别已知安全漏洞(CVE/Advisory),并给出与路由/入口的关联推断框架。
输入
source_path:源码根目录
支持目标:
composer.jsoncomposer.lock- 目录递归(在多个子模块下找 composer.lock)
规则与输出
- 规则匹配:使用内置/外部规则集(例如
references/php-vulnerability.yaml,如存在则优先) - 输出到:
{output_path}/vuln_report/ {project_name}_composer_vuln_report_{timestamp}.md
扫描流程(必做)
交叉验证建议:若项目环境中可执行
composer audit,建议将其输出与本 skill 的规则匹配结果交叉比对,以提升 CVE 覆盖率。composer audit使用 Packagist 实时 advisory 数据库,可补充本 skill 内置规则集可能存在的时效性盲区。两者取并集作为最终漏洞清单。
- 依赖枚举
- 解析 composer.lock 获取 package 名称与版本
- 处理多模块时按模块分组输出
- 漏洞匹配
- 针对已知 CVE 规则匹配影响版本区间
- 触发点分析(框架)
- 识别已知高危组件可能进入的功能域:路由入口、序列化/模板、上传/下载、鉴权链
- 建议使用
php-route-mapper输出路由后做“受影响路由推断”
- 组件->路由关联推断(必做,缺失则无法驱动流水线)
- 输入依赖:读取
routes_{timestamp}.md与params_{timestamp}.md(与shared/IO_PATH_CONVENTION.md一致;独立落盘时常为route_mapping/下同名文件;流水线合并时读总报告等价章节) - 证据优先级:
- 代码中直接引用该组件的类/函数(例如
use Vendor\\Pkg\\{value}、new {value}、Vendor\\{value}::) - 通过模板/序列化/上传/网络相关的“已知接入点”识别该组件所在功能域(再反查路由)
- 仅基于命名推断属于兜底:必须标注为
⚠️待验证
- 代码中直接引用该组件的类/函数(例如
- 对每个漏洞组件输出:
- 组件的代码引用位置(文件路径 + 函数/类名,若无行号则写“待定位”但仍给出文件路径)
- 组件可能触发的 sink 功能域(SQL/TPL/DESER/FILE/UPLOAD/SSRF/XSS/AUTH 等)
- 推断受影响路由/入口(必须逐条列出路由条目,禁止省略;每条必须同时给出
route_id与路由字符串,确保可直接回填给php-route-tracer)
- 输入依赖:读取
输出报告结构(强制)
# {project_name} - Composer 组件漏洞扫描报告
生成时间: {timestamp}
分析路径: {source_path}
## 风险统计
(按 Critical/High/Medium/Low 分类,不得省略)
## 漏洞详情(逐条列出)
=== [CVE-xxxx-xxxx] {组件} {版本} ===
- 影响版本:
- 当前版本:
- 严重等级:
- 可能触发点(推断框架):
- 代码引用位置(证据):
- 文件: path/to/xxx.php
- 证据: 函数/类/调用片段(必须给出最小可定位片段)
- 受影响路由/入口(结合 route-mapper,给出“推断理由”):
- 路由清单(逐条列出,禁止省略):(必须同时给出 `route_id` 与路由字符串)
- 推断理由(必须明确是 1/2/3 优先级哪种证据方式)
- 修复建议:
关键组件触发点矩阵(强制:用于驱动流水线阶段 3)
| 组件 | 规则/影响等级 | 对应 sink 功能域 | 受影响路由/入口数量 | 受影响路由/入口(逐条列出) | 证据等级(直接引用/功能域/待验证) |