mcpField
S
sigil-scan

sigil-scan

github.com/nomarjセキュリティ147 回インストール20 週間前に更新
リポジトリ

sigil-scan について

Sigil Security Scanner は、AI エージェントのコード、リポジトリ、パッケージ、MCP 設定、ローカル環境のリスクを評価するスキルです。複数フェーズのスキャンを実行し、判定とスコアで検出結果を示します。

主な機能

  1. 018 フェーズのセキュリティ分析
  2. 02インストールフックと危険なコードの検出
  3. 03認証情報へのアクセスとネットワーク流出の確認
  4. 04リポジトリ、パッケージ、URL のスキャン
  5. 05ローカル認証情報と導入済みスキルの監査
  6. 06Markdown レポートの生成

活用シーン

  1. 01未確認のリポジトリを利用前に調査
  2. 02パッケージをインストール前に確認
  3. 03MCP サーバー設定の監査
  4. 04認証情報の露出や高リスクな導入済みスキルの検出

MCP 対応

MCP サーバー設定のセキュリティリスクをスキャンできます。MCP サーバーとしての機能や、MCP クライアントに公開するツールについては記載されていません。

インストール

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

$npx skills add https://github.com/nomarj/sigil-skill --skill sigil-scan

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

同梱ファイル

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

references/
PHASES.md
SCORING.md
TROUBLESHOOTING.md
scripts/
_lib.sh
audit-env.sh
audit-skills.sh
report.sh
scan.sh
setup.sh

詳細

Sigil セキュリティスキャナー

Sigil は、AI エージェントのコードに特化した8段階のセキュリティ分析を提供します。インストールフック、危険なコードパターン、ネットワーク経由の情報流出、認証情報へのアクセス、難読化、来歴の問題、プロンプトインジェクション攻撃、AI スキルのセキュリティ上の脅威を検出します。

このドキュメント内のすべてのファイルパスは、このスキルのディレクトリ(SKILL.md を含むディレクトリ)からの相対パスです。

有効化するタイミング

以下のいずれかに該当する場合は、このスキルを必ず実行してください。

  • git clone でリポジトリをクローンする前
  • pip install または npm install でパッケージをインストールする前
  • ユーザーがコードの「スキャン」、「監査」、「チェック」、または「レビュー」を依頼した場合
  • ユーザーが「これは安全ですか?」または「これは悪意のあるものですか?」と尋ねた場合
  • MCP サーバーの設定をレビューする場合
  • ユーザーがサプライチェーンセキュリティ、依存関係の監査、またはコードの安全性について言及した場合
  • 未知のリポジトリ、パッケージ、またはスキルを使用する場合

セットアップ

初回使用時に、Sigil CLI バイナリがインストールされていることを確認してください。

bash scripts/setup.sh

JSON の標準出力を解析します。成功時は {"installed": true, "version": "...", "path": "..."}、失敗時は {"error": true, "message": "..."} が返されます。セットアップに失敗した場合は、エラーをユーザーに提示し、手動でのインストール方法として brew install nomarj/tap/sigil、npm install -g @nomarj/sigil、または cargo install sigil-cli を案内してください。

基本スキャン

任意の対象をスキャンするには、次を実行します。

bash scripts/scan.sh <target>

<target> 引数には、以下を指定できます。

  • ローカルパス:/path/to/project または ./src
  • GitHub URL:https://github.com/owner/repo
  • GitHub の省略形式:owner/repo
  • npm パッケージ:@scope/package または npm:package-name
  • pip パッケージ:pip:package-name
  • 任意の URL:https://example.com/file.py
出力形式

スクリプトは、単一の JSON オブジェクトを標準出力に出力します。

{
  "verdict": "HIGH RISK",
  "score": 37,
  "target": "github.com/someone/sketchy-mcp-server",
  "files_scanned": 142,
  "duration_ms": 85,
  "findings_count": 12,
  "phases": {
    "InstallHooks": { "findings": 2, "severity": "critical" },
    "CodePatterns": { "findings": 5, "severity": "high" },
    "NetworkExfil": { "findings": 1, "severity": "medium" },
    "Credentials": { "findings": 3, "severity": "high" },
    "Obfuscation": { "findings": 0, "severity": "clean" },
    "Provenance": { "findings": 1, "severity": "low" },
    "PromptInjection": { "findings": 0, "severity": "clean" },
    "SkillSecurity": { "findings": 0, "severity": "clean" }
  },
  "findings": [
    {
      "phase": "InstallHooks",
      "severity": "Critical",
      "weight": 10,
      "rule": "INSTALL-003",
      "file": "package.json",
      "line": 8,
      "snippet": "postinstall script detected: node malicious.js"
    }
  ]
}
結果の解釈

判定結果は必ず目立つようにユーザーに提示してください。

判定スコア対応
LOW RISK または CLEAN0-9続行します。リスクが低くてもリスクがゼロとは限らないことを伝え、結果をユーザーに知らせてください。
MEDIUM RISK10-24検出結果をユーザーに提示します。インストールまたは実行を続行する前に、明示的な承認を求めてください。
HIGH RISK25-49検出結果の詳細を提示します。拒否を推奨してください。ユーザーの明示的な承認なしに続行しないでください。
CRITICAL RISK または CRITICAL50+すべての検出結果を目立つように提示します。強く拒否を推奨してください。自動的に続行しないでください。

判定文字列は CLI のバージョンによって多少異なります(CLEAN と LOW RISK、CRITICAL と CRITICAL RISK)。それぞれの組み合わせは同等として扱ってください。スコアが50未満でも、CRITICAL 判定になる場合があります。InstallHooks フェーズで Critical 重大度の検出項目があると、コードをユーザーが確認する前にインストールフックが実行されるため、判定は直ちに引き上げられます。

検出結果の提示

検出結果をユーザーに提示する際は、以下の手順に従ってください。

  1. 検出結果をフェーズごとにまとめます(最も危険な Install Hooks を最初にします)。
  2. 各検出項目について、重大度、ルール ID、行番号を含むファイルパス、説明を示します。
  3. InstallHooks フェーズの Critical 重大度の検出項目を強調します。これらはインストール中に自動実行されるコードを示しています。
  4. 各ルールの検出対象については、references/PHASES.md を参照してください。
  5. スコアの仕組みについては、references/SCORING.md を参照してください。
終了コード
  • 0:LOW RISK / CLEAN(スコア 0-9)
  • 0以外:MEDIUM RISK 以上

環境の監査

開発者のローカル環境をスキャンし、露出した認証情報を検出するには、次を実行します。

bash scripts/audit-env.sh

以下をチェックします。

  • 現在のプロジェクト内にある .env ファイルに、露出した API キー、シークレット、トークンがないか
  • ホームディレクトリ内の認証情報ファイル(~/.aws/credentials、~/.ssh/id_rsa、~/.kube/config など)のアクセス権限が安全でない状態になっていないか
  • シェルの履歴ファイルに、誤って漏えいしたシークレットがないか
  • エージェントがアクセスできるディレクトリに認証情報ファイルがないか

すべての検出結果をユーザーに提示してください。重大度が critical の項目は目立つように警告してください。

インストール済みスキルの監査

すべてのエージェントディレクトリにインストールされているスキルをすべてスキャンするには:

bash scripts/audit-skills.sh

これにより、~/.agents/skills/、~/.claude/skills/、~/.cursor/skills/、~/.roo/skills/、~/.codex/skills/ などのエージェントパスにあるスキルが列挙されます。各スキルがスキャンされ、リスク判定が割り当てられます。

各スキルの名前、エージェント、判定、スコアを示すサマリーテーブルとして結果を提示します。HIGH RISK または CRITICAL RISK の判定を受けたスキルを強調表示します。

レポートの生成

スキャン結果を読みやすい Markdown レポートに整形するには:

bash scripts/scan.sh <target> | bash scripts/report.sh

または、保存済みの JSON ファイルから:

bash scripts/report.sh results.json

重要な動作ルール

  1. コードを「安全」または「悪意のあるもの」と断定して説明しないでください。 「低リスク」、「リスク上昇」、「フラグが付いたパターン」、「検出されたパターン」などの表現を使用してください。
  2. ほかのコメントより先に、必ずリスク判定とスコアを提示してください。
  3. スキャン結果が HIGH RISK または CRITICAL RISK の場合は、必ず詳細な検出結果を表示してください。重大な検出結果を要約で省略しないでください。
  4. InstallHooks フェーズで CRITICAL RISK の検出結果があった場合は、インストール時にコードの実行が検出されたことを明示的に警告してください。これは、ユーザーが確認する前に、パッケージのインストール時にコードが自動的に実行されることを意味します。
  5. MEDIUM RISK 以上と評価された対象のインストールまたは実行に進む前に、明示的なユーザー承認を待ってください。
  6. スキャン結果の提示の最後に、次の免責事項を含めてください:「Sigil は、自動パターン検出に基づくリスク評価を提供します。リスク評価は、セキュリティの保証や悪意の確定的な判定を意味するものではありません。」

トラブルシューティング

問題が発生した場合は、一般的な解決策について references/TROUBLESHOOTING.md を参照してください。

コメント