mcpField
L
ln-621-security-boundary-auditor

ln-621-security-boundary-auditor

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

ln-621-security-boundary-auditor について

アプリケーションのコードベースを対象に、シークレット、インジェクション、XSS、入力検証など悪用可能なセキュリティ境界を監査するワーカーです。コードを自動変更せず、構造化された指摘とセキュリティ準拠スコアを出力します。

主な機能

  1. 01ハードコードされたシークレットの検出
  2. 02SQL インジェクションと XSS リスクの確認
  3. 03機密環境変数のデフォルト値の確認
  4. 04境界での入力検証の確認
  5. 05指摘と準拠スコアのレポート作成

活用シーン

  1. 01リリース前のアプリケーション監査
  2. 02ソースコード内の露出した認証情報の検出
  3. 03API ルートの入力検証不足の確認
  4. 04構造化されたセキュリティ監査レポートの作成

MCP 対応

このスキルはローカルファイルの読み取りや検索に hex-line MCP を優先し、データフロー分析に有効な場合は hex-graph を使用します。MCP が利用できない、または適さない場合は組み込みツールに切り替え、その旨をレポートに記載します。

インストール

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

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

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

同梱ファイル

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

references/
audit_output_schema.md
audit_scoring.md
audit_summary_contract.md
audit_worker_core_contract.md
mcp_integration_patterns.md
mcp_tool_preferences.md
security_rules.md
two_layer_detection.md
references/templates/
audit_worker_report_template.md

詳細

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

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

種類: L3 ワーカー

悪用可能なアプリケーションのセキュリティ境界を監査する専門ワーカーです。

目的と対象範囲

  • コードベースを監査し、セキュリティ境界の脆弱性(カテゴリ 1:最優先)を検出します
  • ハードコードされたシークレット、SQL インジェクション、XSS、入力検証の欠如、機密性の高い環境変数のデフォルト値をスキャンします
  • HARDEN_SECURITY_BOUNDARY、REMOVE_SECRET、または REMOVE_SENSITIVE_DEFAULT を出力します
  • 重要度、場所、作業量、対応策、推奨事項を含む構造化された検出結果を返します
  • セキュリティカテゴリのコンプライアンススコア(X/10)を算出します

入力

必ず読み込むこと: references/audit_worker_core_contract.md と references/mcp_tool_preferences.md を読み込みます。 ツールポリシー:ホストの AGENTS.md が対象範囲外となる独立したサブエージェントとして実行される場合があるため、ファイルの読み取り、検索、編集にはまず hex-line MCP を使用します。MCP の動作が不明確な場合に限り、references/mcp_integration_patterns.md を読み込みます。

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

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

ワークフロー

検出ポリシー:2 層の検出(候補のスキャン、その後のコンテキスト検証)を使用します。検証方法が曖昧な場合に限り、references/two_layer_detection.md を読み込みます。

  1. コンテキストの解析: contextStore から技術スタック、ベストプラクティス、コードベースのルート、output_dir を抽出します
  2. コードベースのスキャン(レイヤー 1): Glob/Grep のパターンを使ってセキュリティチェックを実行します(以下の監査ルールを参照)
  3. コンテキストの分析(レイヤー 2): 各候補について、周辺コードを読み取って分類します:
    • シークレット:テスト用フィクスチャ/サンプル/テンプレートなら誤検出。本番コードなら確認済み
    • SQL インジェクション:近くで ORM によるパラメーター化が行われていれば誤検出。ユーザー入力との生の文字列連結なら確認済み
    • XSS:フレームワークが自動エスケープする場合(React JSX、Go テンプレート)は誤検出。安全でないコンテキスト(innerHTML、| safe)なら確認済み
    • 機密性の高いデフォルト値:プレースホルダー/サンプルなら対象外。シークレット/トークン/キーに対する実際のフォールバックなら確認済み
    • 検証:内部のサービス間エンドポイントなら重要度を下げます。公開 API なら確認済み
  4. 検出結果の収集: 確認済みの違反について、重要度、場所(ファイル:行)、作業量の見積もり(S/M/L)、推奨事項を記録します
  5. スコアの算出: 重要度別に違反数を数え、コンプライアンススコア(X/10)を算出します
  6. レポートの作成: references/templates/audit_worker_report_template.md に従って、完全な Markdown レポートをメモリ上で作成し、単一の 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

重大度:

  • CRITICAL: サニタイズせずにユーザー入力を直接連結
  • HIGH: 本番コードで変数を連結
  • MEDIUM: 内部変数のみを連結

推奨事項: パラメーター化クエリ(プリペアドステートメント)または 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. 機密情報を含む環境変数のデフォルト値

内容: シークレット、トークン、キー、認証情報、または特権設定値に安全でないコード上のデフォルト値が設定されていること

検出:

  • 機密情報を含む名前(SECRET、TOKEN、KEY、PASSWORD、PRIVATE、CREDENTIAL)について、デフォルト値付きの環境変数読み取りを Grep で検索します。
  • 設定/セッティングのクラスに、ハードコードされた機密性の高いフォールバック値がないか確認します。
  • .env.example、テスト、ドキュメント、明らかなプレースホルダー(changeme、空文字列、example)は除外します。

重大度:

  • CRITICAL: 本番環境の認証情報のフォールバック、またはデフォルトの署名/暗号化シークレット
  • HIGH: デプロイ済みアプリから参照可能なランタイム設定に機密性の高いデフォルト値がある
  • MEDIUM: テスト専用ファイル以外に、開発/ステージング環境用の機密性の高いデフォルト値がある

推奨事項: 機密性の高いデフォルト値を削除し、明示的な設定を必須にして、起動時に即座にエラーを発生させます。

工数: S-M

5. 入力検証の欠如

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

検出:

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

重大度:

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

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

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

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

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

出力形式

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

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

{output_dir}/ln-621--global.md に、category: "Security Boundary" および次のチェック項目を含むレポートを書き込みます:hardcoded_secrets、sql_injection、xss_vulnerabilities、sensitive_env_defaults、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 を含めてください
  • 独自の観点: 悪用可能なアプリケーションセキュリティ境界のみを監査してください。パッケージの健全性や環境変数の同期は監査しないでください
  • 必要なアクション: 各指摘には HARDEN_SECURITY_BOUNDARY、REMOVE_SECRET、または REMOVE_SENSITIVE_DEFAULT を使用してください

完了の定義

読み込み済みの references/audit_worker_core_contract.md を適用してください。

  • contextStore が正常に解析された(output_dir を含む)
  • 5 つすべてのセキュリティチェックが完了した(シークレット、SQL インジェクション、XSS、機密情報を含む環境変数のデフォルト値、バリデーション)
  • 重大度、位置、作業見積もり、推奨事項を含めて指摘を収集した
  • ペナルティアルゴリズムを使用してスコアを算出した
  • {output_dir}/ln-621--global.md にレポートを出力した(Write を 1 回だけ使用したアトミックな書き込み)
  • コントラクトに従って概要を出力した

参照ファイル


バージョン: 3.0.0 最終更新日: 2025-12-23

コメント