cftcai/ai-skill-scanner

GitHub: cftcai/ai-skill-scanner

针对公开 AI agent 技能的独立静态安全扫描器,检测代码执行、数据泄露、prompt injection 及供应链风险。

Stars: 1 | Forks: 0

# ai-skill-scanner 用于公开可用或已下载 AI agent 技能的独立安全扫描器。 **Web 界面**:https://github.com/cftcai/ai-skill-scanner-web ## GitHub Actions 我们的自动化由 GitHub Actions 驱动。所有工作流都位于 `.github/workflows/` 中。 **CI 与质量** 🚀 **ci.yml** — Linting • 自扫描 • Docker 构建 • 每周定期扫描 [![CI](https://github.com/cftcai/ai-skill-scanner/actions/workflows/ci.yml/badge.svg)](https://github.com/cftcai/ai-skill-scanner/actions/workflows/ci.yml) **部署** 📦 **pages.yml** (ai-skill-scanner-web) — 部署静态站点到 GitHub Pages **安全示例** 🔐 **oidc-demo.yml** — OIDC token 交换示例(无长期有效的密钥,演示了 audience claims) **测试** 🧪 通过 `test_malicious_skill_fixture` 使用规范的 **mock malicious_skill.py** 夹具 这是针对高严重性检测(危险执行、数据泄露、prompt injection、代码混淆)的参考测试用例。 **遵循的最佳实践** - 最小权限 - OIDC 示例中没有长期有效的密钥 - 轻量级静态工作流 查看所有工作流 → [Actions 标签页](https://github.com/cftcai/ai-skill-scanner/actions) ## 存在原因 公开的 AI 技能(Python 模块、SKILL.md prompt 文件、工具定义)代表了一个不断增长的攻击面。恶意或受损的技能可能会执行任意代码、通过 callback 泄露 agent 内存或环境变量、投毒 prompt,或者通过文件系统更改进行持久化。此工具提供了一个快速、本地、独立的防御前线。 ## 快速开始 直接克隆并运行: ``` git clone https://github.com/cftcai/ai-skill-scanner.git cd ai-skill-scanner python scanner.py --help ``` 扫描公开的技能仓库: ``` python scanner.py --github-url https://github.com/example/vulnerable-skill-repo ``` 扫描本地路径: ``` python scanner.py --path /path/to/your/skills --output my_report.json ``` 作为命令安装(推荐): ``` pip install -e . ai-skill-scanner --path . ``` 为 GitHub 代码扫描生成 SARIF(在 Security 标签页中显示结果): ``` ai-skill-scanner --path . --format sarif --output ai-skill-scanner.sarif ``` 然后使用 `github/codeql-action/upload-sarif` 上传(参见 `.github/workflows/ci.yml`)。严重程度映射到 SARIF 级别:high → error,medium → warning,low → note。 ## Docker(推荐用于隔离) ``` docker build -t ai-skill-scanner . docker run --rm -v $(pwd)/target-skill:/scan:ro ai-skill-scanner --path /scan ``` 对于 GitHub URL 扫描,容器需要临时的网络访问权限才能执行 git clone。 ## 检测范围 扫描器跨以下向量执行静态分析: - 危险的 Python 执行(eval、exec、subprocess、pickle 反序列化) - 网络数据泄露和 callback 模式(向未加入白名单的主机发送请求、密钥泄露) - SKILL.md 和 markdown 定义中的 prompt injection 和覆盖指令 - 高熵混淆字符串和解码链 - requirements.txt、setup.py 和工作流文件中的供应链指标 - 文件持久化尝试 查看 JSON 报告以获取每个检测项的严重程度(high/medium/low)、行号、代码片段和建议。 ## 架构 - 纯标准库实现。运行时无外部依赖。 - AST 遍历,用于精确的 Python 调用检测。 - Regex + Shannon 熵,用于模式和混淆发现。 - 对技能定义文件(SKILL.md)进行特殊处理。 - 临时目录克隆,并带有自动清理功能。 - 结构化的 JSON 输出,可供 CI/CD 摄取或进一步自动化。 该设计遵循现代 SAST 工具和最新 AI agent 安全扫描器中使用的纵深防御原则。它特意设计为静态的。在生产环境中使用时,请结合容器运行时控制和可选的动态追踪。 ## 签名更新 扫描器支持可选的 `--update-signatures` 标志。如果存在该标志,它将使用 git 浅克隆从 ai-skill-signatures 仓库中提取最新模式,并存入本地 signatures/ 缓存中。git pull 更新模型保持了扫描器二进制文件的稳定性,同时允许检测规则独立演进。 示例: ``` ai-skill-scanner --path /my/skills --update-signatures --output report.json ``` 有关清单版本比较逻辑,请参见 ai-skill-signatures 仓库。 ## GitHub Actions 集成 添加以下工作流以在 pull request 或定时任务上扫描技能: ``` name: Skill Security Scan on: [pull_request, schedule: [{cron: '0 3 * * 1'}]] jobs: scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run ai-skill-scanner run: | pip install -e . ai-skill-scanner --path . --output scan-report.json - name: Upload report uses: actions/upload-artifact@v4 with: name: skill-scan-report path: scan-report.json ``` ## 限制与建议 - 仅限静态分析。行为确认需要沙盒执行。 - 可能会对合法的动态或元编程代码产生误报。始终仔细甄别高严重性项目。 - 在扫描期间不会执行任何技能代码或联系外部服务。 - 为获得最大安全性,请在带有只读挂载和 seccomp 的 Docker 中运行。 通过添加自定义 regex 规则、集成 YARA 签名以及使用本地 LLM 裁判进行语义分析来扩展该工具。 ## 许可证 MIT 许可证。参见 LICENSE 文件。 ## 安全策略 通过仓库安全建议私下报告安全问题。不要为漏洞公开 issue。
标签:LNA, 安全专业人员, 请求拦截, 逆向工具