SuperAPI AI 工具集

openclaw-ghsa-maintainer

安全与审计

查看项目

更新于 10-16 09:37

技能介绍

用途

OpenClaw GHSA Maintainer 是一个专门用于仓库安全公告(GitHub Security Advisories,GHSA)维护的技能。它仅适用于 OpenClaw 仓库安全公告工作流,不应被用于稳定版或测试版发布工作——那类任务应使用 openclaw-release-maintainer。

使用前准备

在审查或发布仓库公告之前,必须先阅读 SECURITY.md,并遵守公告护栏。任何发布动作之前都需要征求许可。

主要能力

获取并检查公告状态

获取当前公告以及最新已发布的 npm 版本:

gh api /repos/openclaw/openclaw/security-advisories/<GHSA>
npm view openclaw version --userconfig "$(mktemp)"

利用获取结果确认公告状态、关联的私有分支以及漏洞 payload 形态,然后再进行修补。

验证私有分支 PR 已关闭

发布前,验证公告的私有分支没有未关闭的 PR:

fork=$(gh api /repos/openclaw/openclaw/security-advisories/<GHSA> | jq -r .private_fork.full_name)
gh pr list -R "$fork" --state open

发布前该 PR 列表必须为空。

安全地准备公告 Markdown 和 JSON

通过 heredoc 将公告 Markdown 写入临时文件,不要使用转义的 \n 字符串。

使用 jq 构建 PATCH payload JSON,而不是手工转义的 shell JSON。

示例模式:

cat > /tmp/ghsa.desc.md <<'EOF'
<markdown description>
EOF

jq -n --rawfile desc /tmp/ghsa.desc.md \
  '{summary,severity,description:$desc,vulnerabilities:[...]}' \
  > /tmp/ghsa.patch.json

按正确顺序应用 PATCH 调用

不要在同一个 PATCH 调用中同时设置 severity 和 cvss_vector_string。当公告需要同时包含这两个字段时,使用分开的调用。

发布的方式是 PATCH 公告并设置 "state":"published",不存在单独的 /publish 端点。

示例形态:

gh api -X PATCH /repos/openclaw/openclaw/security-advisories/<GHSA> \
  --input /tmp/ghsa.patch.json

发布并验证成功

发布后重新获取公告并确认:

  • state=published
  • published_at 已设置
  • 描述中不包含字面转义的 \n

验证模式:

gh api /repos/openclaw/openclaw/security-advisories/<GHSA>
jq -r .description < /tmp/ghsa.refetch.json | rg '\\\\n'

常见 GHSA 陷阱

  • 如果缺少必需字段或私有分支仍有未关闭的 PR,发布会以 HTTP 422 失败。
  • 如果 Markdown 是用转义换行字符串拼装的,payload 在 shell 中看起来正确也可能出错。
  • 公告 PATCH 的顺序很重要;当 GHSA API 约束要求时,应将字段更新分开处理。

适用场景与限制

该技能仅适用于 OpenClaw 仓库的 GHSA 安全公告工作流,覆盖检查、修补、验证与发布公告等环节。不适用于常规发布(稳定版或测试版)任务。使用前必须阅读 SECURITY.md,发布前必须获得许可。具体字段、漏洞载荷与端点细节以资料提供的命令和约束为准,其他信息暂未提供。