aidongise-cell/prism-scanner

GitHub: aidongise-cell/prism-scanner

Prism Scanner 是一款专为 AI Agent 技能、插件和 MCP 服务器设计的安全扫描工具,可在安装前深度检测恶意代码行为,卸载后清理系统残留威胁。

Stars: 0 | Forks: 0

# :large_blue_diamond: Prism Scanner [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-3776ab?style=flat-square&logo=python&logoColor=white)](https://python.org) [![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](LICENSE) [![Tests: 67 passed](https://img.shields.io/badge/tests-67%20passed-brightgreen?style=flat-square)]() [![Version: 0.1.0](https://img.shields.io/badge/version-0.1.0-7b2ff7?style=flat-square)]() **针对 AI Agent 技能、插件和 MCP 服务器的安全扫描器。** Prism 在你安装代码*之前*分析其是否存在恶意行为 —— 并在你卸载后检查系统中残留的威胁。 ## 为什么选择 Prism? | | 市场信任评分 | **Prism Scanner** | |--------------------|:------------------------:|:-----------------:| | **安装前 (Pre-install)** | :white_check_mark: 信誉评分 | :white_check_mark: 深度代码分析 | | **卸载后 (Post-uninstall)** | :x: | :white_check_mark: 残留与持久化扫描 | | **检查方式 (Inspection)** | 黑盒评级 | 代码级、逐条规则 | | **平台 (Platforms)** | 单一生态系统 | ClawHub, MCP, npm, pip | | **源码 (Source)** | 闭源 | 开源 (Apache 2.0) | | **执行方式 (Execution)** | 需上传 | 本地优先,支持离线 | ## 快速开始 ``` pip install prism-scanner # 扫描本地 skill 目录 prism scan ./my-skill/ # 直接扫描 GitHub repo prism scan https://github.com/user/skill-repo # 检查系统中的 agent residue prism clean --scan # 生成 cleanup plan (非破坏性) prism clean --plan # 执行 cleanup 并自动备份 prism clean --apply ``` ### Homebrew (macOS) ``` brew tap prismlab/tools brew install prism-scanner ``` ### npx (无需安装) ``` npx prism-scanner scan https://github.com/user/skill-repo ``` ### Docker ``` # 构建 image docker build -t prism-scanner . # 扫描本地目录 docker run -v $(pwd)/my-skill:/workspace/target:ro prism-scanner scan /workspace/target # 扫描远程 repo docker run prism-scanner scan https://github.com/user/skill-repo # 生成 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 ``` ## 检测内容 Prism 跨 **3 个分析层** 运行,每个层级针对 Agent 生命周期的不同阶段: | 层级 | 关注点 | 规则数 | 示例 | |-------|-------|:-----:|---------| | **1. 代码行为** (S1-S14) | 代码*做*什么 | 14 | Shell 执行、数据窃取、SSRF、持久化机制、不安全的反序列化、下载并执行 | | **2. 元数据** (M1-M6, P1-P9) | 包*声称*的内容与*实际包含*的内容对比 | 15 | 硬编码凭证、误植域名 (Typo-squatting)、安装脚本、混淆负载、提示注入、可疑域名 | | **3. 系统残留** (R1-R10) | *遗留*了什么 | 10 | LaunchAgents、crontab 条目、Shell 配置污染、孤立凭证、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** | 安全 (Safe) | 无发现或仅信息性提示 | 可安全使用 | | **B** | 注意 (Notice) | 仅有低严重性发现 | 可能安全 —— 有轻微观察结果 | | **C** | 警告 (Caution) | 1-4 个中等严重性发现 | 使用前需审查 —— 需人工检查 | | **D** | 危险 (Danger) | 1-2 个高严重性发现,或 5+ 个中等严重性发现 | 仅在沙箱中使用 —— 存在重大风险 | | **F** | 严重 (Critical) | 任何严重 发现,或 3+ 个高严重性发现 | **切勿安装** —— 存在严重安全风险 | ## 输出格式 ``` # Rich terminal output (默认) prism scan ./skill/ # 机器可读 JSON prism scan ./skill/ --format json # 独立 HTML report prism scan ./skill/ --format html -o report.html # 用于 GitHub Code Scanning 的 SARIF prism scan ./skill/ --format sarif -o results.sarif ``` ## 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 ``` 如果任何发现达到或超过指定的严重性级别(`critical`、`high` 或 `medium`),`--fail-on` 标志将以代码 1 退出,从而导致 CI 流水线失败。 ## 关键特性 - **污点分析 (Taint Analysis)** — 追踪数据在文件内从源(环境变量、用户输入)到汇(Shell、网络)的流动 - **多平台 (Multi-Platform)** — 使用平台感知规则扫描 ClawHub 技能、MCP 服务器、npm 包和 pip 包 - **目标零依赖** — 纯静态分析;绝不执行被扫描的代码 - **残留扫描器** — 检测已卸载工具留下的持久化机制、Shell 配置污染和凭证泄露 - **安全清理** — 三层工作流(`scan` -> `plan` -> `apply`),带有自动备份和 `--rollback` - **抑制 (Suppression)** — 使用 `.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 ``` ## 许可证 [Apache License 2.0](LICENSE) — 可免费用于商业和个人用途。 ## 致谢 Prism Scanner 由 **Prism Lab** 开发,旨在解决 AI Agent 生态系统中的一个空白:缺乏跨平台且覆盖完整 Agent 生命周期的透明、代码级安全工具。我们相信开发者值得在信任某个技能或插件并让其访问系统之前,确切了解它的功能。
标签:AI Agent 安全, AI 基础设施安全, ClawHub, DevSecOps, DNS 反向解析, LLM 插件扫描, MCP Server 安全, Python 安全工具, Skill Scanner, XSS注入, 上游代理, 后门检测, 安全专业人员, 安全合规, 持久化威胁清除, 本地安全扫描, 网络代理, 自动化payload嵌入, 请求拦截, 逆向工具, 错误基检测, 静态代码分析