mcpField
P
Prism Scanner

Prism Scanner

ローカル
github.com/aidongise-cellセキュリティ2829 週間前に更新

Prism Scanner について

Prism Scanner は、AI エージェントのスキル、プラグイン、MCP サーバーを対象としたオープンソースのセキュリティスキャナーです。インストール前にコードを解析し、アンインストール後にシステムへの残留物を確認します。サードパーティ製コンポーネントを検証する開発者やチーム向けです。

主な機能

  1. 01インストール前の静的コード解析
  2. 023 つのレイヤーにまたがる 39 の検出ルール
  3. 03ファイル内のテイント解析
  4. 04A から F までの等級評価
  5. 05アンインストール後の残留物と永続化の検出
  6. 06JSON と HTML レポート、CI 連携

活用シーン

  1. 01インストール前にサードパーティ製のエージェントスキルや MCP サーバーを確認
  2. 02--fail-on により CI で危険なリリースを停止
  3. 03アンインストールしたツールが残したログイン項目や認証情報の整理

MCP 対応

Prism Scanner は MCP サーバーとして動作し、prism_scan、prism_grade、prism_clean_scan、prism_clean_plan の 4 つのツールを AI アシスタントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"prism-scanner": {
"command": "uvx",
"args": [
"prism-scanner"
]
}
}
}
起動コマンドuvx prism-scanner

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiprism-scanner0.1.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

:large_blue_diamond: Prism Scanner

Python 3.10+ License: Apache 2.0 Tests: 40 passed Version: 0.2.2 Awesome

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)残されたもの10LaunchAgents、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 (安全):

[![Prism Grade A](https://img.shields.io/badge/Prism-Grade%20A-brightgreen?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHoiLz48L3N2Zz4=)](https://github.com/aidongise-cell/prism-scanner)

すべてのグレード:

グレードバッジ
A![Prism Grade A](https://img.shields.io/badge/Prism-Grade%20A-brightgreen?style=flat-square)
B![Prism Grade B](https://img.shields.io/badge/Prism-Grade%20B-green?style=flat-square)
C![Prism Grade C](https://img.shields.io/badge/Prism-Grade%20C-yellow?style=flat-square)
D![Prism Grade D](https://img.shields.io/badge/Prism-Grade%20D-orange?style=flat-square)
F![Prism Grade F](https://img.shields.io/badge/Prism-Grade%20F-red?style=flat-square)

プレビュー:

Prism Grade A Prism Grade B Prism Grade C Prism Grade D Prism Grade F


サポート

Prism Scanner がセキュリティリスクの発見に役立った、あるいは安心をもたらしたなら、GitHub で ⭐ を付けることをご検討ください — それは他の人がこのプロジェクトを見つける助けとなり、開発を継続する力になります。

Star on GitHub


謝辞

Prism Scanner は Prism Lab によって、AI エージェントエコシステムにおけるギャップに対応するために開発されました。それは、プラットフォームをまたいで動作し、エージェントのライフサイクル全体をカバーする、透明性のあるコードレベルのセキュリティツールが不足していることです。私たちは、開発者がスキルやプラグインを自分のシステムで信頼する前に、それが正確に何を行うのかを理解する価値があると考えています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。