mcpField
A
auditing-pre-release-security

auditing-pre-release-security

github.com/onekeyhq安全2.5k61 次安装今天更新
代码仓库

关于 auditing-pre-release-security

用于对比任意两个 Git 引用并进行发布前安全审查的技能,面向负责版本发布的开发者。它涵盖代码差异、依赖、安装包行为及 CI/CD 风险,并要求生成中文报告。

主要功能

  1. 01比较标签、分支或提交
  2. 02审查代码与依赖变更
  3. 03检查安装包新增行为
  4. 04评估 CI/CD 与构建风险
  5. 05生成带引用信息的中文报告

适用场景

  1. 01检查候选版本与基线间的安全回归
  2. 02核查依赖更新及锁文件确定性
  3. 03审查新增依赖的安装脚本与代码
  4. 04发布前检查工作流和构建配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/onekeyhq/app-monorepo --skill auditing-pre-release-security

安装后在 Claude Code 中输入/auditing-pre-release-security确认已加载。

详细介绍

发布前安全审计(任意两个 Git 引用之间)

此技能用于比较任意两个 Git 引用(标签/分支/提交 SHA),并审计:

  • 源代码差异中的安全回归
  • 依赖项变更(直接依赖+传递依赖)和锁文件确定性
  • node_modules 中新引入的包行为
  • .github/workflows 中的 CI/CD 工作流风险及构建配置(Expo/EAS)

输出为一份中文 Markdown 报告,并使用包含引用的唯一标题和文件名,以避免覆盖。

0)必须:确认审计范围(BASE_REF、TARGET_REF)

引用规则
  • 接受:标签/分支/提交 SHA
  • BASE_REF = 起点,TARGET_REF = 终点(候选发布版本)
如果用户未明确提供引用

开始任何工作前,只询问一次:

要比较哪两个 Git 引用?(例如 v5.19.0 → release/v5.20.0,或 main → feature/xxx)

如果只提供了一个引用

询问缺少的引用。除非用户明确说明以下内容,否则不要假设默认值:

  • “latest tag → HEAD”
  • 或提供等效指示。

1)输出要求(硬性约束)

  • 报告语言:中文
  • 报告文件名必须包含引用,以避免冲突:
    • security-audit__${BASE_REF_SAFE}__to__${TARGET_REF_SAFE}.md
    • 为确保文件系统安全,BASE_REF_SAFE/TARGET_REF_SAFE 必须将 / 替换为 __(或 -)。
  • 报告标题必须包含引用:
    • # 安全预审报告(${BASE_REF} → ${TARGET_REF})
  • 证据必须可追溯:文件路径+行号(如可行)+简短片段。

2)安全规则(必须遵守)

  • 切勿打印或粘贴机密信息:助记词/种子短语、私钥、签名载荷、API 密钥、令牌、Cookie、会话 ID。
  • 如果命令输出可能包含机密信息(环境变量转储、日志),写入报告前先进行脱敏。
  • 优先使用简短摘录;不要粘贴大型文件内容。

3)执行检查清单

步骤 A — 验证引用并收集上下文
  • 验证两个引用均存在:
    • git rev-parse --verify "${BASE_REF}^{commit}"
    • git rev-parse --verify "${TARGET_REF}^{commit}"
  • 记录:
    • BASE_SHA、TARGET_SHA
    • 工作树是否干净?git status --porcelain
  • 列出变更文件:
    • git diff --name-status "${BASE_REF}..${TARGET_REF}"
步骤 B — 收集关键差异

重点关注:

  • 源代码:**/*.{js,ts,tsx}
  • 依赖项:**/package.json、yarn.lock
  • CI:.github/workflows/**
  • Expo/EAS 配置:eas.json、app.json、app.config.*、构建脚本
步骤 C — 依赖项差异(直接依赖)
  • 对每个变更的 package.json,计算:
    • 新增/移除/更新的依赖项(包含工作区路径)
  • 版本范围策略检查:
    • 将 */latest 标记为高风险
    • 将 ^/~ 标记为中风险(解释这对发布确定性的影响)
  • 如果依赖项有变更,但 yarn.lock 未变更,则标记为高风险。
步骤 D — 锁文件确定性(尽力而为)
  • 检测 Yarn 版本:yarn -v
  • 尝试以下一项:
    • Yarn Berry:yarn install --immutable
    • Yarn Classic:yarn install --frozen-lockfile
  • 记录异常:resolutions、patches、非注册表来源、意外下载。
步骤 E — 已知漏洞扫描(尽力而为)
  • yarn audit(如可用)
  • 使用 osv-scanner 扫描 yarn.lock(如可用)
  • 如果缺少工具,注明“未运行+原因”。
步骤 F — 新增依赖深度检查(node_modules)

对于每个新增的直接依赖:

  • 检查 <pkg>/package.json:
    • preinstall、install、postinstall 脚本
    • 入口点(main、module、exports)
    • 二进制文件/原生构件(bin/、.node)
  • 在其已安装代码中进行关键词扫描(不区分大小写):
    • 敏感信息:privateKey|mnemonic|seed|keystore|passphrase
    • 存储:localStorage|indexedDB|AsyncStorage|keychain|keystore
    • 网络:fetch|axios|XMLHttpRequest|http|https|WebSocket|ws
    • 动态执行:eval|new Function|child_process|spawn|exec
    • 安装钩子:preinstall|install|postinstall
  • 如果有匹配项:包含路径 + 行号 + 简短代码片段,并说明其行为符合预期还是可疑。
  • 评定风险等级:低 / 中 / 高。
步骤 G — 源码差异安全审查(AI 推理步骤)

在 ${BASE_REF}..${TARGET_REF} 差异中,优先检查:

  • 签名流程/密钥处理/助记词
  • 网络层/RPC/遥测
  • 存储层(本地/安全存储)
  • 日志记录/分析/错误报告 输出:可疑变更列表(每项包含摘要、影响、证据摘录)。
步骤 H — CI/CD 与构建流水线风险

检查 .github/workflows/** 和构建配置:

  • 标记 uses: ...@latest(高风险)
  • 标记未固定到 SHA 的浮动标签(中风险,注明风险)
  • 检查 permissions: 是否授予过宽的权限范围
  • 标记远程脚本执行模式(curl|bash、远程下载)
  • 说明安装安全性(--ignore-scripts 等)
  • Expo/EAS:标记会下载远程代码、运行任意脚本或将环境变量泄露到日志中的钩子

4) 报告模板(必须遵循;中文输出)

将报告写入: security-audit__${BASE_REF_SAFE}__to__${TARGET_REF_SAFE}.md

评论

支持 Markdown