mcpField
L
ln-621-security-auditor

ln-621-security-auditor

github.com/levnikolaevichセキュリティ584337 回インストール2 日前に更新
リポジトリ

ln-621-security-auditor について

ln-621-security-auditorは、コードベースのセキュリティ問題を調査し、結果をコーディネーターに報告するスキルです。5種類の脆弱性を確認し、セキュリティ適合スコアを算出します。

主な機能

  1. 01ハードコードされた秘密情報の検出
  2. 02SQLインジェクションとXSSの確認
  3. 03依存関係の脆弱性監査
  4. 04入力検証の確認
  5. 05深刻度・場所・工数の報告
  6. 06セキュリティスコアの算出

活用シーン

  1. 01コードベースのセキュリティ欠陥の調査
  2. 02検出結果に基づく修正優先度の決定

MCP 対応

このスキルは、ファイル横断分析にhex-graph、局所的なコード読み取りにhex-lineを使用できます。これらのMCPツールが利用できない、または適さない場合は、組み込みのファイル・検索ツールに切り替えます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-621-security-auditor

インストール後、Claude Code で/ln-621-security-auditorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
audit_output_schema.md
audit_scoring.md
audit_summary_contract.md
audit_worker_core_contract.md
cleanup_evidence_contract.md
evaluation_coordinator_runtime_contract.md
evaluation_parallelism_policy.md
evaluation_research_contract.md
evaluation_summary_contract.md
evaluation_worker_runtime_contract.md
loop_health_contract.md
mcp_integration_patterns.md
mcp_tool_preferences.md
refinement_trace_contract.md
security_rules.md
two_layer_detection.md
references/scripts/evaluation-runtime/
cli.mjs
references/templates/
audit_worker_report_template.md

詳細

パス: ファイルパス(references/、../ln-*)は、このスキルディレクトリからの相対パスです。

セキュリティ監査担当(L3 ワーカー)

タイプ: L3 ワーカー

コードベースのセキュリティ脆弱性を監査する専門ワーカーです。

目的と範囲

  • コードベースをセキュリティ脆弱性(カテゴリ 1:最優先)について監査します
  • ハードコードされたシークレット、SQL インジェクション、XSS、安全でない依存関係、入力検証の不足をスキャンします
  • 重大度、場所、工数、推奨事項を含む構造化された検出結果をコーディネーターに返します
  • セキュリティカテゴリのコンプライアンススコア(X/10)を算出します

入力

必須読み込み: references/audit_worker_core_contract.md を読み込みます。 必須読み込み: references/mcp_tool_preferences.md と references/mcp_integration_patterns.md を読み込みます

次の情報を含む contextStore を受け取ります:tech_stack、best_practices、principles、codebase_root、output_dir。

データフロー分析またはファイル間参照分析によって確信度が大きく高まる場合は、まず hex-graph を使用します。利用可能な場合、ローカルコードの読み取りにはまず hex-line を使用します。MCP を利用できない場合、サポートされていない場合、またはインデックス化されていない場合は、組み込みの Read/Grep/Glob/Bash を使って続行し、レポートにフォールバックしたことを記載します。

ワークフロー

必須読み込み: 検出方法について references/two_layer_detection.md を読み込みます。

  1. コンテキストの解析: contextStore から技術スタック、ベストプラクティス、コードベースのルート、output_dir を抽出します
  2. コードベースのスキャン(レイヤー 1): 監査ルール(以下を参照)に従い、Glob/Grep パターンを使用してセキュリティチェックを実行します
  3. コンテキストの分析(レイヤー 2): 候補ごとに周辺コードを読み取り、次のように分類します:
    • シークレット:テスト用フィクスチャ/サンプル/テンプレート -> FP。本番コード -> 確定
    • SQL インジェクション:近くで ORM によるパラメーター化が行われている -> FP。ユーザー入力を含む生の文字列連結 -> 確定
    • XSS:フレームワークが自動エスケープする(React JSX、Go テンプレート) -> FP。安全でないコンテキスト(innerHTML、| safe) -> 確定
    • 依存関係:脆弱な API がプロジェクトで呼び出されていない -> 重大度を下げます。悪用可能な経路がある -> 確定
    • 検証:内部のサービス間エンドポイント -> 重大度を下げます。公開 API -> 確定
  4. 検出結果の収集: 重大度、場所(ファイル:行)、工数見積もり(S/M/L)、推奨事項とともに、確認済みの違反を記録します
  5. スコアの算出: 重大度別に違反数を数え、コンプライアンススコア(X/10)を算出します
  6. レポートの作成: references/templates/audit_worker_report_template.md に従って完全な Markdown レポートをメモリ上に作成し、1 回の Write 呼び出しで {output_dir}/ln-621--global.md に書き込みます
  7. 概要の返却: コーディネーターに最小限の概要を返します(出力形式を参照)

監査ルール(優先度:重大)

1. ハードコードされたシークレット

内容: ソースコード内の API キー、パスワード、トークン、秘密鍵

検出:

  • 検索パターン:API_KEY = "..."、password = "..."、token = "..."、SECRET = "..."
  • ファイル拡張子:.ts、.js、.py、.go、.java、.cs
  • 除外対象:.env.example、README.md、モックデータを含むテストファイル

重大度:

  • 重大: 本番環境の認証情報(AWS キー、データベースのパスワード、API トークン)
  • 高: 開発環境/ステージング環境の認証情報
  • 中: テスト以外のファイルにあるテスト用認証情報

推奨事項: 環境変数(.env)に移し、シークレット管理(Vault、AWS Secrets Manager)を使用します

工数: S(ハードコードされた値を process.env.VAR_NAME に置き換えます)

2. SQL インジェクションのパターン

内容: パラメーター化クエリの代わりに、SQL クエリで文字列連結を使用すること

検出:

  • パターン:query = "SELECT * FROM users WHERE id=" + userId、db.execute(f"SELECT * FROM {table}")、`SELECT * FROM ${table}`
  • 言語:JavaScript、Python、PHP、Java

重大度:

  • 重大: ユーザー入力がサニタイズされずに直接連結されている
  • 高: 本番コードでの変数連結
  • 中: 内部変数のみを使った連結

推奨事項: パラメーター化クエリ(プリペアドステートメント)または ORM クエリビルダーを使用します

工数: M(クエリをリファクタリングしてプレースホルダーを使用します)

3. XSS 脆弱性

内容: サニタイズされていないユーザー入力が HTML/テンプレートにレンダリングされます

検出方法:

  • パターン:innerHTML = userInput、dangerouslySetInnerHTML={{__html: data}}、echo $userInput;
  • テンプレートエンジン:エスケープされない出力({{ var | safe }}、<%- var %>)を確認します

重大度:

  • CRITICAL: ユーザー入力がサニタイズされずに DOM に直接挿入されています
  • HIGH: ユーザー入力が部分的にサニタイズされています(エスケープが不十分)
  • MEDIUM: 内部データが侵害された場合に XSS が発生する可能性があります

推奨事項: フレームワークのエスケープ機能を使用します(React は自動的にエスケープします。textContent を使用してください)。DOMPurify でサニタイズします

工数: S-M(innerHTML を textContent に置き換えるか、サニタイズします)

4. 安全でない依存関係

内容: 既知の CVE(Common Vulnerabilities and Exposures)がある依存関係です

検出方法:

  • npm audit(Node.js)、pip-audit(Python)、cargo audit(Rust)、dotnet list package --vulnerable(.NET)を実行します
  • 古くなった重要な依存関係がないか確認します

重大度:

  • CRITICAL: 本番環境の依存関係に悪用可能な脆弱性を含む CVE があります
  • HIGH: 開発用の依存関係に CVE があるか、重要度の低い本番環境の CVE があります
  • MEDIUM: 既知の CVE はないものの、セキュリティリスクとなる古いパッケージがあります

推奨事項: パッチ適用済みのバージョンに更新し、メンテナンスされていないパッケージを置き換えます

工数: S-M(package.json を更新してテストします)、L(破壊的変更がある場合)

5. 入力検証の欠落

内容: システム境界(API エンドポイント、ユーザーフォーム、ファイルアップロード)で検証が欠落しています

検出方法:

  • 検証ミドルウェアのない API ルート
  • 入力サニタイズのないフォームハンドラー
  • タイプ/サイズのチェックがないファイルアップロード
  • CORS 設定の欠落

重大度:

  • CRITICAL: 検証のないファイルアップロード、認証バイパスの可能性があります
  • HIGH: 機密性の高いエンドポイント(決済、認証、ユーザーデータ)で検証が欠落しています
  • MEDIUM: 読み取り専用または内部エンドポイントで検証が欠落しています

推奨事項: 検証ミドルウェア(Joi、Yup、express-validator)を追加し、入力サニタイズを実装します

工数: M(検証スキーマとミドルウェアを追加します)

スコアリングアルゴリズム

必ず読むこと: references/audit_worker_core_contract.md と references/audit_scoring.md を読み込みます。

出力形式

必ず読むこと: references/audit_worker_core_contract.md と references/templates/audit_worker_report_template.md を読み込みます。

references/audit_summary_contract.md に従って JSON サマリーを作成します。管理モードでは、呼び出し元から runId と summaryArtifactPath の両方が渡されます。スタンドアロンモードでは、ワーカーが共通コントラクトに従い、実行ごとのアーティファクトパスを独自に生成します。

{output_dir}/ln-621--global.md に、category: "Security" および次のチェック項目を含むレポートを作成します:hardcoded_secrets、sql_injection、xss_vulnerabilities、insecure_dependencies、missing_input_validation。

references/audit_summary_contract.md に従ってサマリーを返します。

スタンドアロンモードでも、共通コントラクトに従い、ワーカー所有の実行ごとのアーティファクトパスに同じ JSON サマリーを書き込みます。

重要なルール

必ず読むこと: references/audit_worker_core_contract.md を読み込みます。

  • 自動修正しないこと: 違反のみを報告します。修正タスクはコーディネーターがユーザー向けに作成します
  • 技術スタックを考慮すること: contextStore を使用して、フレームワーク固有のパターンを適用します(例:React の XSS と PHP の XSS)
  • 誤検知を減らすこと: テストファイル、設定例、ドキュメントは除外します
  • 工数を現実的に見積もること: S = 1 時間未満、M = 1~4 時間、L = 4 時間超
  • 場所を正確に示すこと: プログラムから移動できるよう、常に file:line を含めます

完了の定義

必ず読むこと: references/audit_worker_core_contract.md を読み込みます。

  • contextStore の解析に成功した(output_dir を含む)
  • 5 つすべてのセキュリティチェックが完了した(シークレット、SQL インジェクション、XSS、依存関係、検証)
  • 重大度、場所、工数、推奨事項を含む検出結果を収集した
  • ペナルティアルゴリズムを使用してスコアを算出した
  • {output_dir}/ln-621--global.md にレポートを書き込んだ(単一の Write 呼び出しでアトミックに書き込み)
  • コントラクトに従ってサマリーを書き込んだ

Reference Files


Version: 3.0.0 Last Updated: 2025-12-23

コメント