首页
/ RuView 仓库 claude-flow v3 安全改造技能全解:CVE 修复清单与 secure-by-default 编码模式

RuView 仓库 claude-flow v3 安全改造技能全解:CVE 修复清单与 secure-by-default 编码模式

2026-09-07 16:02:29作者:翟萌耘Ralph

本篇技术指南围绕仓库中 .claude/skills/v3-security-overhaul/SKILL.md 定义的 V3 Security Overhaul(v3 安全改造)技能展开,讲解它如何以"技能 + 安全 Agent 编排"的方式,对仓库采用的 claude-flow v3 Agent 编排系统完成从"漏洞修复"到"安全优先开发规范"的完整收口。读者读完将掌握:v3 安全域的三项关键修复(依赖漏洞、弱口令哈希、硬编码凭据)的具体落地写法,Zod 输入校验、路径穿越防护、无 Shell 命令执行三类 secure-by-default 编码模式,以及如何通过 security-architect / security-auditor 等专职 Agent 与安全扫描脚本完成自动化审计与度量。

一、技能定位:它在一个什么样的安全体系里工作

该技能是仓库 .claude/ 工作区中 claude-flow v3 技能(Skill)体系的一员,前导元数据定义了它的触发方式:

name: "V3 Security Overhaul"
description: "Complete security architecture overhaul for claude-flow v3. Addresses critical CVEs (CVE-1, CVE-2, CVE-3) and implements secure-by-default patterns. Use for security-first v3 implementation."

技能(Skill)在这里并不是一个可运行的库,而是一份可被 Agent 加载执行的作战手册:它以 YAML frontmatter 声明名称与适用场景,正文则给出并行任务编排、CVE 修复代码、安全编码范式与成功度量。它作用的运行底座由 .mcp.json 描述——仓库通过 MCP 接入 claude-flow:

{
  "mcpServers": {
    "claude-flow": {
      "command": "npx",
      "args": ["-y", "@claude-flow/cli@latest", "mcp", "start"],
      "env": {
        "CLAUDE_FLOW_MODE": "v3",
        "CLAUDE_FLOW_HOOKS_ENABLED": "true",
        "CLAUDE_FLOW_TOPOLOGY": "hierarchical-mesh",
        "CLAUDE_FLOW_MAX_AGENTS": "15",
        "CLAUDE_FLOW_MEMORY_BACKEND": "hybrid"
      },
      "autoStart": false
    }
  }
}

可以看到安全改造的运行前提是:MCP 模式下 CLAUDE_FLOW_MODE=v3、hooks 开启、采用 hierarchical-mesh 拓扑。技能文档面向的正是这一 v3 运行时。

二、技能主流程:并行三线并行的安全域编排

SKILL.md 用三段 Task 调用来概括技能的整体编排——三项工作并行执行,分别由不同的专职 Agent 承担:

# Initialize V3 security domain (parallel)
Task("Security architecture", "Design v3 threat model and security boundaries", "v3-security-architect")
Task("CVE remediation", "Fix CVE-1, CVE-2, CVE-3 critical vulnerabilities", "security-auditor")
Task("Security testing", "Implement TDD London School security framework", "test-architect")
并行任务 交付物 承担 Agent
Security architecture v3 威胁模型与安全边界设计 security-architect
CVE remediation 修复 CVE-1/CVE-2/CVE-3 三类高危漏洞 security-auditor
Security testing 以 TDD London School 方式落地安全测试框架 test-architect

需要说明的是,SKILL 正文中的 CVE-1CVE-2CVE-3 是技能内部的编号分类(对应三组典型高危问题),而非真实公开 CVE 编号;同工作区内其他文档(如安全架构 Agent)会以 CVE-2024-001 这类写法扩展具体案例(见下文第三节)。

三、三类关键修复(CVE-1 / CVE-2 / CVE-3)逐项落地

CVE-1:脆弱依赖 —— 升级与审计

CVE-1 对应"供应链依赖带病上线"类问题,修复动作分两步:先把核心依赖升级到已修复版本,再以 high 为阈值执行 npm 依赖审计:

npm update @anthropic-ai/claude-code@^2.0.31
npm audit --audit-level high
  • --audit-level high 的含义是:仅当存在 high/critical 级别漏洞时令命令以非零状态退出,便于 CI 门禁捕获。若团队使用 npm audit fix 自动修复,应仅用于锁文件内可无损升级的传递依赖,避免破坏主版本约束。
  • 在 v3 体系中这一环节还会被自动化 Worker 承接.claude/helpers/security-scanner.shcheck_npm_audit()run_scan() 会把审计结论写入 .claude-flow/security/audit-status.json;Worker 端 cves.tracked 字段即维护着 ["CVE-1", "CVE-2", "CVE-3"] 三项目标,并标记 "remediated": 3

CVE-2:弱口令哈希 —— 从 SHA-256 裸盐升级到 bcrypt(12)

CVE-2 的病灶是"手写哈希 + 硬编码盐"。原文档给出前后对照:

// ❌ Old: SHA-256 with hardcoded salt
const hash = crypto.createHash('sha256').update(password + salt).digest('hex');

// ✅ New: bcrypt with 12 rounds
import bcrypt from 'bcrypt';
const hash = await bcrypt.hash(password, 12);

实践要点:

  • 旧实现的问题在于 SHA-256 属于快速哈希,GPU 爆破成本极低,且盐被硬编码在代码中,同盐彩虹表可直接复用;digest('hex') 输出也不携带盐信息。
  • bcrypt.hash(password, 12)12cost factor(轮数对数),内部自动生成随机盐并随密文一并存储,校验时调用 bcrypt.compare(password, storedHash) 即可,无需自行管理盐。
  • 对 Node.js 运行时的替代可参考 crypto.scrypt(内置、免额外依赖),但该技能文档选择 bcrypt 并明确以 12 轮为基线。对于登录接口,还应叠加速率限制,避免在线爆破——这一点在 security-auditor 的 OWASP A07/A01 检测模式中有对应覆盖。

CVE-3:硬编码凭据 —— 用 CSPRNG 动态生成

CVE-3 针对代码/配置中写死的 API Key 与口令,修复范式是"运行时生成、绝不入库":

// ✅ Generate secure random credentials
const apiKey = crypto.randomBytes(32).toString('hex');
  • randomBytes(32) 基于操作系统级 CSPRNG,256 位熵足够作为高强度密钥;toString('hex') 输出 64 位十六进制字符串。
  • 与之配套的反向检测在 v3 安全域中是自动化的:.claude/helpers/security-scanner.shscan_secrets() 会按 password=api_key=secret=token=private_key 等模式在 src/v3/ 目录做正则扫描并剔除 node_modules/.gitsecurity-auditor 还内置了更精细的 Secret 正则库,可识别 AWS AKIA 前缀访问密钥、OpenAI sk- 密钥、GitHub ghp_ Token、JWT、数据库连接串与 PEM 私钥块等,用于在代码审查阶段拦截新凭据落盘。

四、secure-by-default:三类安全编码范式

技能文档将修复动作沉淀为三个可复用的"安全默认值"模式,并逐一给出可直接使用的代码。

模式一:Zod 驱动的输入校验

所有进入 Agent 编排系统的外部数据先过 Schema 白名单校验,拒绝而非容忍非法输入:

import { z } from 'zod';

const TaskSchema = z.object({
  taskId: z.string().uuid(),
  content: z.string().max(10000),
  agentType: z.enum(['security', 'core', 'integration'])
});
  • taskId 必须是合法 UUID(z.string().uuid()),防止在日志与索引中注入任意 ID;
  • contentmax(10000) 上限,限制提示词/任务内容的体积膨胀,间接缓解资源耗尽类风险;
  • agentTypez.enum([...]) 把取值收敛到白名单,从源头杜绝"未知 Agent 类型"被投递执行。
  • 该设计也呼应 security-auditor 中 OWASP A04:2021 Insecure Design 的检测规则——其正则会标记 req.body.xxx 周围缺少 validate/sanitize/zod 之类的代码路径,防止"无输入校验直连下游"。

模式二:路径穿越防护

凡是把用户输入拼接进文件路径的位置,都必须先做归一化再校验前缀归属:

function securePath(userPath: string, allowedPrefix: string): string {
  const resolved = path.resolve(allowedPrefix, userPath);
  if (!resolved.startsWith(path.resolve(allowedPrefix))) {
    throw new SecurityError('Path traversal detected');
  }
  return resolved;
}
  • path.resolve(allowedPrefix, userPath) 会先把 ../../etc/passwd 这类相对穿越量折叠成绝对路径;随后用 startsWith 断言结果仍位于授权目录内,从而拦截目录穿越(对应 OWASP A01:2021 中的 Path Traversal 检测模式)。
  • 使用 startsWith 判断前缀时建议携带路径分隔符边界(如 path.resolve(prefix) + path.sep)以避免"前缀撞名"误判——该技能给出的示例为教学基线,落地时可在边界上进一步收紧。

模式三:无 Shell 解释的命令执行

child_process.execFile 替代 exec/spawn + shell 字符串,从根上消除命令注入面:

import { execFile } from 'child_process';

// ✅ Safe: No shell interpretation
const { stdout } = await execFile('git', [userInput], { shell: false });
  • shell: false(默认值)时,参数以数组形式直接交给操作系统,;|$()、反引号等元字符不会被 shell 解释,用户输入最多成为普通参数。
  • 这正是 v3 威胁模型的直接对应物:security-architect 在 CVE 追踪表中为命令注入类问题给出的安全替代同样是 execFile(cmd, args.map(arg => shellEscape(arg)), ...),并把 child_process.exec(shelljs.exec(、模板字符串拼命令列为待检模式;security-auditor 的 OWASP A03:2021 Injection 正则亦会捕获 exec/spawn/execSync 直接吞入请求输入的情况。

五、技能背后的专职 Agent 与检测纵深

SKILL 负责"编排与规范",真正的检测/修复能力由 .claude/agents/v3/ 下的专职安全 Agent 文档提供,它们构成安全改造的纵深。以下文件在技能快速启动中被显式或隐式引用:

  • security-architect.md:负责威胁建模与安全架构。其正文定义了 STRIDE 六类威胁(Spoofing / Tampering / Repudiation / Information Disclosure / Denial of Service / Elevation of Privilege)与 DREAD 风险量化评分(damage + reproducibility + exploitability + affectedUsers + discoverability 取均值,>=8 判 critical、>=6 判 high、>=4 判 medium),并提供 Zero-Trust"永不信任、持续验证"的参考实现。同时它维护一份 criticalCVEs 追踪表,把通用问题映射为带 CVSS 分值与补丁版本的具体案例:

    • CVE-2024-001:经 eval/new Function 触发的任意代码执行,CVSS 9.8,修复建议为改用 vm.runInContext 沙箱;
    • CVE-2024-002:经 shell 元字符导致的命令注入,CVSS 9.1,修复建议为 execFile 显式参数化;
    • CVE-2024-003:配置深合并时的原型污染,CVSS 7.5,修复建议为递归合并时跳过 __proto__/constructor/prototype
  • security-auditor.md:负责漏洞扫描、CVE 检索与合规审计。其正文给出覆盖 OWASP Top 10 (2021) 全部 10 类的检测模式集合(A01 越权到 A10 SSRF),以及依赖审计(npm audit、Python safety check -r、Snyk)、合规审计(SOC2 的 CC6.1/CC6.6/CC7.2,GDPR 的删除权/可携带权/同意,HIPAA 的 PHI 保护与审计追踪)等可落地模式。

  • aidefence-guardian.md:AI 安全防御侧翼,监控各 Agent 输入/输出中的提示注入、越狱、角色切换、编码攻击与 PII 泄露,并对输入做 <10ms 量级的安全检测(其声明"实际约 0.06ms"),构成面向 LLM 编排自身的第二道防线。

此外,.claude/agents/v3/ 还包含 claims-authorizer.md(基于声明的细粒度授权)、injection-analyst.mdpii-detector.md 等,说明 v3 安全域是一个成建制的多 Agent 体系。

六、自动化审计 Worker:把度量接到脚本上

技能定义的"成功度量"需要可观测出口。仓库内的 .claude/helpers/security-scanner.sh 就是一个与技能配套的独立安全扫描 Worker,它提供四种调用模式:

# 执行一次完整扫描
bash .claude/helpers/security-scanner.sh run
# 节流检查(距上次扫描不足 30 分钟则跳过)
bash .claude/helpers/security-scanner.sh check
# 忽略节流强制扫描
bash .claude/helpers/security-scanner.sh force
# 读取最近一次扫描状态
bash .claude/helpers/security-scanner.sh status

Worker 的核心逻辑与技能口径一一对应:

  1. 机密扫描 scan_secrets():对 password=api[_-]?key=secret=token=private[_-]?key 五类模式做全量 grep;
  2. 漏洞模式扫描 scan_vulnerabilities():统计 execute((注入风险)、exec(/spawn((命令注入风险)、eval((动态执行风险)三类的出现频次(测试文件除外);
  3. 依赖审计 check_npm_audit():检测 package-lock.json 是否存在,存在即认为受控;
  4. 状态机收敛:总问题数 >10critical>0warning,否则 clean;结果落盘为 .claude-flow/security/scan-results.json,同时把 audit-status.json 更新为 {"status":"CLEAN","cvesFixed":3}

由此,SKILL 中"100% 修复三类关键 CVE"的声明在脚本侧有可复核的状态字段支撑,二者互为印证。

七、成功度量与使用边界

SKILL.md 将改造完成度收敛为四项成功度量(它们属于技能设定的验收基线,需结合实际扫描结果复核,而非已证实的仓库事实):

  • Security Score: 90/100(npm audit + 自定义扫描综合评分);
  • CVE Resolution: 三类关键漏洞 100% 修复;
  • Test Coverage: 安全关键代码测试覆盖率 >95%;
  • Implementation: 全部安全模式完成文档化与测试化。

使用该技能时的边界与前提,依据仓库现状可以归纳为:

  • 技能的运行依托 claude-flow v3 CLI 与 MCP 接入(见 .mcp.json),例如 Agent hooks 中出现的 npx claude-flow@v3alpha memory search-patternssecurity cve --searchhooks session-start 等命令,均以 @claude-flow/cli 的 v3alpha 版本为前提;
  • 技能与同目录其他 v3 技能(memory-unification、performance-optimization、swarm-coordination、integration-deep 等)共同构成对该 v3 运行时多个维度(记忆、性能、协同、集成)的改造覆盖,安全域是其中横向贯穿的一环;
  • SKILL 中的 CVE-1/2/3 属技能内部问题分类编号,不应与公开 CVE 数据库条目直接等同;需要公开 CVE 检索与比对时,应由 security-auditor 的 CVE 检索能力负责。

八、小结:一份可被 Agent 与工程师共同执行的"安全第一"作战手册

.v3-security-overhaul SKILL 的价值在于把一次完整的安全改造同时编码为机器可执行的编排(并行 Task + 专职 Agent)与人可审阅的规范(三类 CVE 修复代码 + 三种 secure-by-default 模式)。它既不取代安全工程师的判断,也不依赖一次性人工检查——修复动作被 bcrypt、Zod、execFile、securePath 等样板沉淀为可复用的"默认正确写法",检测动作被 Agent 正则库与 security-scanner.sh 自动化,度量动作被 audit-status.json 等状态文件持续追踪。对于希望在自己团队复刻这套打法的读者,最直接的路径是:先阅读本技能原文 SKILL.md,再对照两个专职 Agent 文档补齐检测纵深,最后用 security-scanner 脚本把度量接入日常 CI。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.74 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
857
1.35 K
docsdocs
暂无描述
Markdown
897
5.81 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
531
595
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
920
1.84 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.63 K
1.02 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.36 K
1.46 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.02 K
518
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
547
389