aidongise-cell/prism-scanner
GitHub: aidongise-cell/prism-scanner
Prism Scanner 是一款专为 AI Agent 技能、插件和 MCP 服务器设计的安全扫描工具,可在安装前深度检测恶意代码行为,卸载后清理系统残留威胁。
Stars: 0 | Forks: 0
# :large_blue_diamond: Prism Scanner
[](https://python.org)
[](LICENSE)
[]()
[]()
**针对 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嵌入, 请求拦截, 逆向工具, 错误基检测, 静态代码分析