请不要通过公开 issue 报告安全问题。请在 GitHub 仓库的 Security → Report a vulnerability 提交私密报告,或直接联系维护者。我们会在 7 天内回应,并在修复发布后致谢(如果你希望署名)。
SkillHub 会在你的机器上创建链接、读写文件、并可选地监听网络端口。以下是它默认做的事:
| 操作 | 保护措施 |
|---|---|
| 创建链接 | 目标必须存在;已存在的路径绝不覆盖 |
| 移除链接 | 先 lstat 确认是链接;真实目录一律拒绝 |
| 删除技能 | 仅删除 hub/<name>,拒绝路径穿越,拒绝删除链接本身 |
| 解压 zip | 逐条目校验目标路径必须位于解压目录内(防 zip slip) |
| 覆盖安装 | 需要显式 --overwrite;链接形式的中心条目拒绝覆盖 |
已知的边界:如果你手工把中心里的技能目录替换成指向别处的链接,remove 会拒绝执行而不是猜测你的意图。
| 场景 | 行为 |
|---|---|
skillhub serve(默认) |
只监听 127.0.0.1,无鉴权 |
skillhub serve --host 0.0.0.0 |
自动生成随机 token;所有写接口需要 x-skillhub-token 或 ?token= |
skillhub add |
只向 codeload.github.com 发 HTTPS GET,不发送任何本地数据 |
| MCP over HTTP | 与 REST 同一套鉴权 |
公网暴露不在支持范围内。若确需,请置于带 TLS 与访问控制的反向代理之后。
技能是指令文本(SKILL.md),SkillHub 不会执行它们。但如果技能里让模型运行 shell 命令,那就是模型与你的工具在决定——安装第三方技能前请阅读其内容,这与安装任何 agent skill 的风险相同。
- 监听
0.0.0.0且未设 token 时,局域网内他人可读写(这是文档化的行为,请用--token)。 - 第三方技能自身包含危险指令。
- 需要本地管理员权限才能触发的场景(本项目不要求提权)。
| 版本 | 安全更新 |
|---|---|
| 0.1.x | ✅ |