SuperAPI AI 工具集

security

安全与审计

查看项目

更新于 10-16 08:20

技能介绍

用途

该技能为 Claude Code 插件提供安全扫描模式目录与风险门控逻辑,用于识别执行面风险、供应链漏洞、数据外泄途径和提示注入模式。它由 security-scanner 代理使用,输出结构化的安全扫描报告。

主要能力

上下文感知的文件分类

在赋予任何发现严重性之前,先按执行上下文对文件分类:

  • Shell 脚本(.sh、.bash):可执行,应用完整严重性表
  • 代码文件(.py、.js、.mjs、.ts):可执行,应用完整严重性表
  • 钩子定义(hooks/hooks.json):每次工具调用时运行,应用完整严重性表
  • MCP 配置(.mcp.json):可执行(服务器启动),应用完整严重性表
  • 包清单(package.json):通过 npm 脚本执行,应用完整严重性表
  • 文档(*.md,如 SKILL.md、CLAUDE.md、README.md):不可执行,上限为低风险

文档文件规则:.md 文件中的模式属于说明性内容,不是可执行代码。任何在 .md 文件中发现的严重或高风险模式一律降级为低风险(信息性),并注明“文档中的说明性内容——不可执行”。例外:如果 .md 文件通过 hooks.json 中的 command: 被显式引用为脚本,或通过 bash file.md 执行,则视为可执行并应用完整严重性。

扫描工作流

  1. 分类文件——按执行上下文对每个文件分类
  2. 识别执行面——映射钩子、脚本、MCP 配置、命令和安装脚本
  3. 扫描每个执行面——应用模式表,对文件内容进行正则匹配
  4. 应用上下文调整——按 markdown 规则将文档发现降级为低风险
  5. 验证发现——在最终确定前确认每个严重/高风险发现处于可执行上下文
  6. 生成报告——产出结构化报告

执行面

Claude Code 插件有五个必须扫描的执行面:

  • 钩子(hooks/hooks.json、引用的脚本):严重,每次工具调用自动运行
  • 脚本(scripts/.sh、.py、*.js):高,由命令/代理执行
  • MCP 服务器(.mcp.json):高,网络访问、数据流
  • 命令中的 Bash(commands/*.md 配合 Bash 工具):中,通过 Claude 执行 shell
  • 安装脚本(package.json postinstall、setup 脚本):中,安装时运行

危险 Shell 模式

严重(即时风险):管道到 shell(curl|sh、wget|bash)、带变量的 eval、反向 shell、base64 解码并执行、SSH 密钥外泄、令牌外泄。

高(可能危险):shell=True 的子进程、os.system 调用、动态 require/import、带动态字符串的 new Function、仓库外文件写入、sudo 使用、PATH 修改。

中(上下文相关):网络调用、环境访问、仓库外文件读取、运行时包安装、shell 执行函数。

MCP 配置风险

扫描 .mcp.json 中的远程服务器、未知域名、宽泛权限、文件系统访问、shell 访问、缺失认证。已知安全 MCP 域名:localhost、127.0.0.1、modelcontextprotocol.io、github.com、api.anthropic.com。

钩子安全规则

扫描 hooks/hooks.json 中的钩子运行 shell 脚本、钩子使用用户输入、钩子在每个事件上触发、钩子修改文件、钩子进行网络调用。

依赖供应链

扫描 package.json 中的 postinstall/preinstall 脚本、Git URL 依赖、未固定版本(存在锁文件时抑制)。扫描 requirements.txt / pyproject.toml 中的 Git URL 依赖、未固定版本、直接 URL。

提示注入面

检查提示中的不可信文件内容、用户输入传入 shell、模板展开。

严重性定义

  • 严重:即时利用风险(RCE、凭据窃取、后门)——阻止贡献,提交安全问题
  • 高:可能危险(shell 注入、数据外泄、权限提升)——阻止贡献,在审计中报告
  • 中:上下文相关(网络调用、环境访问、运行时安装)——在审计中报告,标记审查
  • 低:轻微关注(未固定依赖、宽泛权限)——作为信息性报告

预匹配上下文过滤

在生成任何严重/高风险发现之前,验证匹配模式处于可执行位置——不是被显示、记录、回显或用作测试数据的引用文本。若匹配位于 echo/printf/cat 参数内、heredoc 主体内(除非馈送给 shell)、赋值右侧的引号字符串内、对象/字典字面量作为测试/夹具数据、shell 注释内、usage()/help() 输出函数内、.md 文件中的 markdown 代码围栏内,则静默丢弃该发现。

公开设计标识符

许多嵌入客户端代码的“API 密钥”是公开设计的——它们向第三方 SDK 标识项目但不携带特权访问。当文件位于 public/、static/、assets/、dist/、build/、site/ 等发布输出目录,或密钥匹配已知公开设计模式(如 PostHog phc、Google Analytics G-/UA-、GTM、Mixpanel、Sentry DSN、Stripe pk_live_/pk_test_、Algolia searchOnly 等),或文件名指示客户端初始化时,静默丢弃硬编码 API 密钥发现。

仍然属于发现(永不丢弃):Stripe 秘密密钥、AWS 访问密钥、GitHub PAT、OpenAI 密钥、Anthropic 密钥、带嵌入凭据的数据库连接 URL、私钥、Twilio Auth Token、SendGrid API 密钥等服务器端凭据,以及任何在服务器端路径中匹配的密钥。

发现验证

在预匹配过滤后,验证每个存活的严重或高风险结果:确认文件处于可执行上下文、验证模式在运行时可达、与项目测试套件交叉引用。

报告格式

审计报告中的安全扫描部分遵循以下结构:严重性计数表(严重/高/中/低),以及发现表(编号、严重性、文件、行、模式、描述)。

风险门控

如果存在任何严重或高风险发现,不得应用 contribute-approved 标签。审计报告必须包含醒目警告,跟踪问题必须链接到安全发现。

适用场景

适用于对 Claude Code 插件进行安全审计,特别是检查钩子、脚本、MCP 配置、命令和安装脚本中的执行面风险、供应链漏洞、数据外泄和提示注入。

限制

该技能覆盖安全模式目录和风险门控逻辑。关于扫描器检查的可执行工件模式(钩子、脚本、MCP 配置),参见 nlpm:conventions。关于非安全风险的更广泛反模式目录,参见 nlpm:patterns。