Agent Skills
返回列表
技能安全审计

技能安全审计

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_5d0002c3/is-skill-safe。

技能介绍

要解决的安全问题

在 Agent 技能生态里,第三方 SKILL.md 与配套脚本是黑盒:一个声称“整理文件”的技能可能在后台执行不可逆删除,一个看似无害的网络调用可能外泄凭据。开发者很难快速判断某个技能的意图、它会触碰哪些系统资源,以及脚本里哪些动态执行或特权命令属于真实风险。

审计如何工作

这个技能把“读 SKILL.md + 审脚本”变成可重复的流程:

  • 解析元数据:从目标技能的 YAML frontmatter 中读取 name 和 description,先确认声明用途。
  • 扫描危险模式:检查 SKILL.md 与脚本中如 rm -rf、sudo、eval 等高风险写法,并定位到具体行号。
  • 分级输出:每条发现按 HIGH / MEDIUM / LOW 标注严重级别;最后给出发现总数与被抑制项汇总。
  • 生成评估结论:将输出整理成三段报告——技能用途解释、风险点及上下文原因、是否可用以及缓解建议。

抑制误报的三种方式

静态扫描会误伤“故意但安全”的代码,技能提供三种 allowlist 机制:

  1. 行内抑制:在目标脚本某行末尾加注释,按行忽略匹配项。
  2. .audit_ignore 文件:放在目标技能根目录,每行一个正则,匹配到的 finding 对该技能全局抑制。
  3. --allow 参数:运行时传入正则即时抑制,可叠加多个参数。

所有被抑制的项仍会计数并展示在 summary 里,避免“静默通过”。

适用边界

  • 静态分析有天花板:脚本使用正则匹配,可能漏掉混淆代码,也可能把安全写法标成高危;结论是初筛而非终审。
  • 必须人工复核:看到 subprocess.run 被标记时,要确认实际执行的命令;看到文件写入被标记时,要确认写入路径与内容。
  • 上下文决定风险:正常的 HTTP 请求或文件读写在技能声明用途下可能合理,不应仅凭单条规则下结论。
  • 白名单不等于安全:抑制 finding 表示你已审阅并接受风险,应在 .audit_ignore 注释里记录理由。

使用场景

  • 发布前对自研技能做安全自查,确认脚本不存在 `rm -rf` 或 `eval` 等高危写法再上架。
  • 评审从社区收集的第三方技能,输出用途说明与严重级别清单给团队评审。
  • 把 `.audit_ignore` 写入目标技能根目录,记录哪些正则已审阅并接受风险。
  • 发现某技能包含 `sudo` 调用时,定位行号并判断命令是否需要人工确认。

适合人员

  • 负责维护 Agent 技能市场的工程师,需要在上架前形成可留档的安全评估记录。
  • 开发内部 Agent 平台的团队,要把第三方技能的风险发现转成给使用者的说明。
  • 对 CI 脚本做权限收敛的 DevOps,想通过 allowlist 明确哪些静态扫描告警已被审阅。
  • 编写安全基线文档的合规人员,需要按严重级别整理技能安装前检查项。