Prism Scanner について
Prism Scanner は、AI エージェントのスキル、プラグイン、MCP サーバーを対象としたオープンソースのセキュリティスキャナーです。インストール前にコードを解析し、アンインストール後にシステムへの残留物を確認します。サードパーティ製コンポーネントを検証する開発者やチーム向けです。
主な機能
- 01インストール前の静的コード解析
- 023 つのレイヤーにまたがる 39 の検出ルール
- 03ファイル内のテイント解析
- 04A から F までの等級評価
- 05アンインストール後の残留物と永続化の検出
- 06JSON と HTML レポート、CI 連携
活用シーン
- 01インストール前にサードパーティ製のエージェントスキルや MCP サーバーを確認
- 02--fail-on により CI で危険なリリースを停止
- 03アンインストールしたツールが残したログイン項目や認証情報の整理
MCP 対応
Prism Scanner は MCP サーバーとして動作し、prism_scan、prism_grade、prism_clean_scan、prism_clean_plan の 4 つのツールを AI アシスタントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
:large_blue_diamond: Prism Scanner
AI エージェントのスキル、プラグイン、MCP サーバー向けのセキュリティスキャナー。
Prism は、インストールする前にコードの悪意ある挙動を分析し、アンインストールした後にシステムに残った脅威をチェックします。
マーケットプレイス限定の信頼スコアとは異なり、Prism はコードレベルの透明性を備えた完全なライフサイクルカバレッジを提供します — インストール前、実行時、アンインストール後 — あらゆるプラットフォームに対応し、完全にオープンソースです。
:sparkles: v0.2.x の新機能
- P10 — エージェントの心理的操作の検出: スキルの説明、プロンプト、コード文字列に埋め込まれたガスライティング、罪悪感の植え付け、権威のなりすまし、緊急性の圧力、感情的な強要のパターンを検出します。AI エージェントの会話的操作に関する Northeastern/Harvard/MIT の研究に基づいており、私たちの知る限り、この攻撃クラスに対する初のオープンソース自動検出器です。
- M7 — 公開衛生チェック: ソースマップ、
.envファイル、秘密鍵、IDE 設定、パッケージマネージャーの認証情報が出荷される前に捕捉します。npm 経由で Claude Code の内部 51.2 万行を露出させた Anthropic の 2026 年 4 月のソースマップ漏洩に触発されました。CI に組み込みましょう:prism scan ./dist --fail-on high - 実世界のスキルにおける誤検知が 47〜93% 減少 (S1、S4、S8、S12 エンジンの修正。以前は誤フラグが大量発生していた 3 つの代表的な ClawHub スキルに対して検証済み)。
- 合計 41 件の検出ルール — S1〜S14 (挙動)、M1〜M7 (メタデータ + 公開衛生)、P1〜P10 (パターン + 操作)、R1〜R10 (残留物) にわたります。
- v0.2.2 は、見た目上のバージョン文字列の不一致 (
0.2.1にアップグレードした後、prism --versionが0.1.3を報告する) を修正します。検出動作は v0.2.1 と同一です。
なぜ Prism なのか?
| マーケットプレイスの信頼スコア | Prism Scanner | |
|---|---|---|
| インストール前 | :white_check_mark: 評判スコア | :white_check_mark: 詳細なコード分析 |
| アンインストール後 | :x: | :white_check_mark: 残留物と永続化のスキャン |
| 検査 | ブラックボックス評価 | コードレベル、ルールごと |
| プラットフォーム | 単一のエコシステム | ClawHub、MCP、npm、pip |
| ソース | クローズド | オープン (Apache 2.0) |
| 実行 | アップロードが必要 | ローカルファースト、オフライン対応 |
クイックスタート
pip install prism-scanner
# Scan a local skill directory
prism scan ./my-skill/
# Scan a GitHub repo directly
prism scan https://github.com/user/skill-repo
# Check your system for agent residue
prism clean --scan
# Generate a cleanup plan (non-destructive)
prism clean --plan
# Execute cleanup with automatic backups
prism clean --apply
Homebrew (macOS)
brew tap prismlab/tools
brew install prism-scanner
npx (インストール不要)
npx prism-scanner scan https://github.com/user/skill-repo
GitHub Action (CI/CD)
Prism を CI パイプラインに追加しましょう — 検出結果は GitHub の Security タブに表示されます:
# .github/workflows/prism-scan.yml
name: Prism Security Scan
on: [push, pull_request]
permissions:
security-events: write
contents: read
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: aidongise-cell/prism-scanner@main
with:
path: '.'
fail-on: 'high'
MCP サーバー (Claude Desktop / Cursor / VS Code)
Prism Scanner は MCP サーバーとして実行でき、AI アシスタントにセキュリティスキャンツールへの直接アクセスを提供します。
pip install "prism-scanner[mcp]"
Claude Desktop の設定 (~/Library/Application Support/Claude/claude_desktop_config.json) に追加します:
{
"mcpServers": {
"prism-scanner": {
"command": "prism-mcp"
}
}
}
または Claude Code の場合:
claude mcp add prism-scanner prism-mcp
これにより 4 つのツールが公開されます: prism_scan、prism_grade、prism_clean_scan、prism_clean_plan。
Docker
# Build the image
docker build -t prism-scanner .
# Scan a local directory
docker run -v $(pwd)/my-skill:/workspace/target:ro prism-scanner scan /workspace/target
# Scan a remote repo
docker run prism-scanner scan https://github.com/user/skill-repo
# Generate HTML report
docker run -v $(pwd):/workspace/output prism-scanner scan https://github.com/user/repo --format html -o /workspace/output/report.html
または公開されているイメージを使用します:
docker run ghcr.io/prismlab/prism-scanner scan <target>
検出内容
Prism は 3 つの分析レイヤー で動作し、それぞれがエージェントのライフサイクルの異なるフェーズを対象としています:
| レイヤー | 焦点 | ルール | 例 |
|---|---|---|---|
| 1. コードの動作 (S1-S14) | コードが何をするか | 14 | シェル実行、データ窃取、SSRF、永続化メカニズム、安全でないデシリアライズ、ダウンロードして実行 |
| 2. メタデータ (M1-M6, P1-P9) | パッケージが主張する内容と含む内容の比較 | 15 | ハードコードされた認証情報、タイポスクワッティング、インストールスクリプト、難読化されたペイロード、プロンプトインジェクション、不審なドメイン |
| 3. システムの残留物 (R1-R10) | 残されたもの | 10 | LaunchAgents、crontab エントリ、シェル設定の汚染、孤立した認証情報、systemd ユニット、ログイン項目 |
合計: 39 件の検出ルール と軽量なファイル内テイント解析。
出力例
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Prism Scanner v0.1.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Target: evil_skill
Platform: clawhub
Duration: 42ms
[1/3] Behavior Analysis
✗ CRITICAL S8 Data exfiltration: secrets sent to external endpoint evil_skill.py:10
✗ CRITICAL S10 Download and execute: fetches remote payload evil_skill.py:24
✗ HIGH S1 Shell execution with untrusted input evil_skill.py:14
✗ HIGH S13 Persistence: writes LaunchAgent plist evil_skill.py:36
⚠ MEDIUM S6 Dynamic code execution (eval/exec) evil_skill.py:21
[2/3] Metadata Analysis
✗ CRITICAL P1 Hardcoded credential: AWS Access Key evil_skill.py:47
⚠ MEDIUM P2 Base64-encoded executable content evil_skill.py:50
⚠ MEDIUM P6 Prompt injection pattern in string literal evil_skill.py:53
[3/3] Residue Scan
(skipped — use `prism clean --scan` for system-level checks)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Grade: F (Critical)
Key Risks:
▸ CRITICAL: Data exfiltration to external endpoint (S8)
▸ CRITICAL: Download and execute remote payload (S10)
▸ CRITICAL: Hardcoded AWS credential (P1)
▸ HIGH: Shell execution with user input (S1)
▸ HIGH: Persistence mechanism installed (S13)
Behavior Profile:
exfiltrates_data, executes_shell, downloads_and_executes, installs_persistence
Recommendation: DO NOT INSTALL — Critical security risks detected.
Findings: 3 critical, 2 high, 3 medium
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
グレーディングシステム
| グレード | ラベル | 意味 | 推奨事項 |
|---|---|---|---|
| A | 安全 | 検出結果なし、または情報レベルのみ | 使用しても安全 |
| B | 注意 | LOW 重大度の検出結果のみ | おそらく安全 — 軽微な所見 |
| C | 警告 | MEDIUM の検出結果が 1〜4 件 | 使用前に確認 — 手動での検査が望ましい |
| D | 危険 | HIGH が 1〜2 件、または MEDIUM が 5 件以上 | サンドボックス内でのみ使用 — 重大なリスク |
| F | 致命的 | CRITICAL が 1 件でも、または HIGH が 3 件以上 | インストールしないでください — 重大なセキュリティリスク |
出力フォーマット
# Rich terminal output (default) — color-coded severity, grade highlighting
prism scan ./skill/
# Machine-readable JSON
prism scan ./skill/ --format json
# Standalone HTML report — dark-themed, self-contained, shareable
prism scan ./skill/ --format html -o report.html
# SARIF for GitHub Code Scanning
prism scan ./skill/ --format sarif -o results.sarif
HTML レポート
完全な検出結果、グレードの可視化、リスクの内訳を含む スタンドアロンで自己完結型の HTML レポート を生成します — チームメンバーとの共有やアーカイブに最適です:
prism scan https://github.com/user/skill-repo --format html -o report.html
HTML レポートは、色分けされた重大度レベル、インタラクティブなグレードリング、完全な検出結果テーブルを備えたダークテーマの UI を特徴としています。外部依存関係はありません — .html ファイルを任意のブラウザで開くだけです。
CI/CD 統合
Prism を GitHub Actions ワークフローに追加して、セキュリティ検出結果に基づいてデプロイを制御できます:
name: Security Scan
on: [push, pull_request]
jobs:
prism-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Prism Scanner
run: pip install prism-scanner
- name: Run security scan
run: prism scan . --format sarif -o results.sarif --fail-on high
- name: Upload SARIF results
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
--fail-on フラグは、指定された重大度 (critical、high、または medium) を満たすか超える検出結果がある場合にコード 1 で終了し、CI パイプラインを失敗させます。
主な機能
- テイント解析 — 各ファイル内で、ソース (環境変数、ユーザー入力) からシンク (シェル、ネットワーク) へのデータフローを追跡します
- マルチプラットフォーム — プラットフォームを認識するルールで、ClawHub スキル、MCP サーバー、npm パッケージ、pip パッケージをスキャンします
- ターゲットへの依存ゼロ — 純粋な静的解析。スキャン対象のコードを実行することはありません
- 残留物スキャナー — アンインストールされたツールによって残された永続化メカニズム、シェル設定の汚染、認証情報の漏洩を検出します
- 安全なクリーンアップ — 3 段階のワークフロー (
scan->plan->apply) と自動バックアップおよび--rollbackを備えています - 抑制 —
.prismignoreを使用して、正当な理由とともにルール ID ごとに既知の検出結果を抑制できます - オフラインモード —
--offlineを付けて実行すると、すべての外部ルックアップをスキップします
カスタムルールの追加
検出ルールは rules/ ディレクトリ配下の YAML ファイルで定義されています:
rules/
├── malicious_signatures.yaml # Known malicious code signatures and hashes
├── permissions.yaml # Permission baseline definitions
└── suspicious_domains.yaml # C2 domains, dynamic DNS, disposable TLDs
パターンエンジン (P1-P9) とマニフェストエンジン (M1-M6) は、スキャン時にこれらのファイルからルールを読み込みます。エントリを追加することで、Python コードを変更せずに検出を拡張できます。
プロジェクト構成
src/prism/
├── cli.py # CLI entry point and output formatting
├── scanner.py # Orchestrator — runs engines, collects findings
├── models.py # Finding, ScanResult, Severity, Layer data models
├── scoring.py # Letter-grade risk assessment (A-F)
├── report.py # HTML report generator
├── fetcher.py # Git clone / URL fetching with security guards
├── cleaner.py # System cleanup: plan, apply, rollback
├── suppression.py # .prismignore parsing
├── rules_loader.py # YAML rule loading
└── engines/
├── ast_engine.py # AST-based analysis (S1-S14)
├── pattern_engine.py # Regex pattern matching (P1-P9)
├── manifest_engine.py # Metadata & manifest analysis (M1-M6)
├── residue_engine.py # System residue scanner (R1-R10)
└── taint.py # Intra-file taint tracking
コントリビューション
コントリビューションを歓迎します。以下のガイドラインについては CONTRIBUTING.md をご覧ください:
- 新しい検出ルールの追加
- テストの作成と実行
- コードスタイルとコミットの規約
ライセンス
Apache License 2.0 — 商用および個人利用は無料です。
Prism 検証済みバッジ
あなたのプロジェクトが Prism によってスキャンされたことを示しましょう。README にバッジを追加できます:
グレード A (安全):
[](https://github.com/aidongise-cell/prism-scanner)
すべてのグレード:
| グレード | バッジ |
|---|---|
| A |  |
| B |  |
| C |  |
| D |  |
| F |  |
プレビュー:
サポート
Prism Scanner がセキュリティリスクの発見に役立った、あるいは安心をもたらしたなら、GitHub で ⭐ を付けることをご検討ください — それは他の人がこのプロジェクトを見つける助けとなり、開発を継続する力になります。
謝辞
Prism Scanner は Prism Lab によって、AI エージェントエコシステムにおけるギャップに対応するために開発されました。それは、プラットフォームをまたいで動作し、エージェントのライフサイクル全体をカバーする、透明性のあるコードレベルのセキュリティツールが不足していることです。私たちは、開発者がスキルやプラグインを自分のシステムで信頼する前に、それが正確に何を行うのかを理解する価値があると考えています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。