adudley78/clean-skill

GitHub: adudley78/clean-skill

一款用于检测技能市场中恶意 AI 技能的开源扫描器,集成静态分析、YAML规则引擎、秘密扫描、LLM裁判与gVisor动态沙箱。

Stars: 0 | Forks: 0

# clean-skill **clean-skill** 是一个开源扫描器,用于检测隐藏在技能市场中的恶意 AI 技能 威胁行为者在 AI agent 技能中嵌入提示注入、数据外泄载荷和主机破坏逻辑 —— 这是 npm 供应链问题在 LLM 代理领域的变体。clean-skill 在技能**安装或执行前**进行扫描。 它是平台无关的:支持 Claude / Anthropic SKILL.md、MCP 服务器、OpenAI GPT Actions、LangChain 工具、AutoGPT 插件、OpenClaw/ClawHub 技能以及任何通用的 JSON/YAML 工具清单。 ## 为何需要另一个扫描器? | 工具 | 多平台支持 | 爬虫 | 社区规则 | 动态沙箱 | 许可证 | |----------------------------------------|:----------:|:----:|:--------:|:--------:|--------| | cisco-ai-defense/skill-scanner | 仅 MCP | 否 | 是 | 否 | OSS | | NMitchem/SkillScan | 单一平台 | 否 | 有限 | 是 | OSS | | Mondoo | 否 | 否 | 否 | 是 | 闭源 | | Bitdefender AI Skills Checker | 仅 OpenClaw | 否 | 否 | 否 | 闭源 | | **clean-skill** | **全部** | **是** | **是** | **是** | Apache-2 | ## 安装 需要 Python 3.11+。动态分析需要 Docker + gVisor(`runsc`);静态分析无需它们。 ``` git clone https://github.com/clean-skill/clean-skill && cd clean-skill python -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" cp .env.example .env.local # fill in API keys for LLM-as-judge ``` 构建沙箱镜像(可选;仅在使用 `--dynamic` 时需要): ``` docker build -f docker/sandbox.Dockerfile -t cleanskill/sandbox:latest . ``` ## 快速开始 ``` # 仅静态扫描本地技能目录 clean-skill scan --static-only tests/fixtures/skills/malicious_claude # 完整扫描:静态 + 动态沙箱 clean-skill scan tests/fixtures/skills/malicious_claude # 扫描远程清单 URL clean-skill scan https://example.com/some-skill/mcp.json # 输出机器可读报告 clean-skill scan --json tests/fixtures/skills/benign_claude > report.json # 列出已加载的检测规则 clean-skill rules list ``` 退出代码:`0` = 干净,`1` = 可疑,`3` = 恶意 / 阻断,`2` = 摄入错误。这使得 clean-skill 开箱即用且适合 CI。 ## 架构 ``` flowchart LR subgraph Ingestion A[path / URL] --> B{platform detector} B --> C1[Claude parser] B --> C2[MCP parser] B --> C3[OpenAI parser] B --> C4[LangChain parser] B --> C5[AutoGPT parser] B --> C6[OpenClaw parser] B --> C7[Generic JSON/YAML] C1 & C2 & C3 & C4 & C5 & C6 & C7 --> S[Skill model] end S --> ST[Static Analyzer] S --> DY[Dynamic Analyzer] subgraph Static ST --> R[YAML rule engine] ST --> K[Secret scanner] ST --> J[LLM-as-judge] end subgraph Dynamic DY --> SB[gVisor sandbox] SB --> MO[Mock LLM + audit log] MO --> BE[Behavioral scorer] end R & K & J & BE --> F[Findings] F --> V[Verdict aggregator] V --> OUT[ScanReport] subgraph Proactive CR[Marketplace crawler] --> Q[RQ queue] Q --> ST OUT --> TI[(Threat-intel DB)] end ``` 详细设计请参考 [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md)。 ## 检测规则 规则是位于 `rules/` 目录下的 YAML 文件。它们受 Sigma 启发,并欢迎社区贡献 —— 请参考 [`docs/rule_format.md`](./docs/rule_format.md) 和 [`CONTRIBUTING.md`](./CONTRIBUTING.md)。 起步规则包: | ID | 类别 | 严重性 | 信号 | |-------------|----------------------|----------|------------------------------------------------| | CS-PI-001 | 指令覆盖 | 高 | “忽略之前指令” 相关家族 | | CS-PI-002 | 提示注入 | 严重 | 伪造的 `` 角色标记 | | CS-OB-001 | 混淆 | 高 | Base64 数据块解码为 Shell / URL / ELF | | CS-EX-001 | 数据外泄 | 严重 | webhook.site、requestbin、Slack/Discord 钩子 | | CS-CH-001 | 凭证窃取 | 严重 | `.aws/credentials`、`id_rsa`、IMDS、环境变量转储 | ## 威胁模型 文档记录在 [`THREAT_MODEL.md`](./THREAT_MODEL.md)。简而言之,clean-skill 覆盖五类攻击:提示注入、混淆载荷、 outbound 数据外泄、凭证/主机数据窃取,以及通过工具滥用导致的沙箱逃逸。 ## 项目状态 v0.1 为工程预览版。静态分析器和 CLI 已足够稳定,可在 CI 中运行。爬虫和威胁情报 API 已有雏形,旨在由首批外部贡献者进行扩展。 ## 许可证 Apache-2.0。详见 [`LICENSE`](./LICENSE)。
标签:AI安全, Apache-2.0许可, C2, Chat Copilot, Docker沙箱, gVisor, JSON 请求, LLM裁判, Python, Web截图, YAML规则引擎, 主机妥协防御, 动态沙箱, 多平台支持, 威胁情报, 容器安全, 平台无关, 开发者工具, 开源安全工具, 恶意技能检测, 技能市场, 数据泄露防护, 无后门, 社区规则, 网络探测, 请求拦截, 运行时分析, 逆向工具, 逆向工程平台, 静态扫描