关于 clawsec-clawhub-checker
为 clawsec-suite 补充 ClawHub 技能信誉检查的安全技能。它结合扫描器状态与基于元数据的启发式评分,并要求低于阈值时明确确认安装。
主要功能
- 01读取 ClawHub 技能元数据
- 02检查扫描器状态及 VirusTotal 摘要
- 03按年龄、更新和下载量评估信誉
- 04低分安装需明确确认
适用场景
- 01安装前评估 ClawHub 技能
- 02复核扫描器警告之外的信誉信号
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ prompt-security/ clawsec --skill clawsec-clawhub-checker安装后在 Claude Code 中输入/clawsec-clawhub-checker确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.clawhubignoreCHANGELOG.mdREADME.mdskill.jsonhooks/clawsec-advisory-guardian/lib/reputation.mjsscripts/check_clawhub_reputation.mjsenhanced_guarded_install.mjssetup_reputation_hook.mjstest/reputation_check.test.mjssetup_reputation_hook.test.mjs详细介绍
ClawSec ClawHub 检查器
在 clawsec-suite 的受保护安装器之上添加信誉门禁。
Vercel Skills 安装
使用 Vercel Skills CLI 为此运行环境安装:
npx skills add prompt-security/clawsec --skill clawsec-clawhub-checker -a openclaw -y
运行说明
- 必需的运行时:
node、clawhub、openclaw - 依赖项:已安装的
clawsec-suite - 副作用:不会影响其他技能;此软件包不会重写已安装的套件文件
- 本版本中,咨询钩子的接线是可选且需手动完成
- 网络行为:信誉检查会调用 ClawHub 检查/搜索端点
- 信任模型:评分采用启发式方法,并需经过确认
功能说明
- 从 ClawHub 读取技能元数据(
inspect --json) - 评估扫描器状态(包括存在时的 VirusTotal 摘要)
- 应用额外的信誉启发式指标(年龄、更新、作者历史、下载量)
- 当评分低于阈值时,要求显式指定
--confirm-reputation
安装
在安装 clawsec-suite 后安装:
npx clawhub@latest install clawsec-suite
npx clawhub@latest install clawsec-clawhub-checker
可选的预检(验证本地路径并打印建议的命令):
node ~/.openclaw/skills/clawsec-clawhub-checker/scripts/setup_reputation_hook.mjs
发布工件验证
对于独立安装,请先验证已签名的发布清单,再信任 SKILL.md、skill.json 或归档文件。skill.json 文件是软件包元数据/SBOM 的来源,发布流水线会使用 ClawSec 发布密钥对 checksums.json 签名。
set -euo pipefail
SKILL_NAME="clawsec-clawhub-checker"
VERSION="0.0.8"
REPO="prompt-security/clawsec"
TAG="${SKILL_NAME}-v${VERSION}"
BASE="https://github.com/${REPO}/releases/download/${TAG}"
ZIP_NAME="${SKILL_NAME}-v${VERSION}.zip"
TMP_DIR="$(mktemp -d)"
trap 'rm -rf "$TMP_DIR"' EXIT
RELEASE_PUBKEY_SHA256="711424e4535f84093fefb024cd1ca4ec87439e53907b305b79a631d5befba9c8"
curl -fsSL "$BASE/checksums.json" -o "$TMP_DIR/checksums.json"
curl -fsSL "$BASE/checksums.sig" -o "$TMP_DIR/checksums.sig"
curl -fsSL "$BASE/signing-public.pem" -o "$TMP_DIR/signing-public.pem"
curl -fsSL "$BASE/$ZIP_NAME" -o "$TMP_DIR/$ZIP_NAME"
curl -fsSL "$BASE/SKILL.md" -o "$TMP_DIR/SKILL.md"
curl -fsSL "$BASE/skill.json" -o "$TMP_DIR/skill.json"
ACTUAL_PUBKEY_SHA256="$(openssl pkey -pubin -in "$TMP_DIR/signing-public.pem" -outform DER | shasum -a 256 | awk '{print $1}')"
if [ "$ACTUAL_PUBKEY_SHA256" != "$RELEASE_PUBKEY_SHA256" ]; then
echo "ERROR: signing-public.pem fingerprint mismatch" >&2
exit 1
fi
openssl base64 -d -A -in "$TMP_DIR/checksums.sig" -out "$TMP_DIR/checksums.sig.bin"
openssl pkeyutl -verify -rawin -pubin \
-inkey "$TMP_DIR/signing-public.pem" \
-sigfile "$TMP_DIR/checksums.sig.bin" \
-in "$TMP_DIR/checksums.json" >/dev/null
hash_file() {
if command -v shasum >/dev/null 2>&1; then
shasum -a 256 "$1" | awk '{print $1}'
else
sha256sum "$1" | awk '{print $1}'
fi
}
verify_manifest_file() {
asset="$1"
path="$2"
expected="$(jq -r --arg asset "$asset" '.files[$asset].sha256 // empty' "$TMP_DIR/checksums.json")"
if [ -z "$expected" ]; then
echo "ERROR: checksums.json missing $asset" >&2
exit 1
fi
actual="$(hash_file "$path")"
if [ "$actual" != "$expected" ]; then
echo "ERROR: checksum mismatch for $asset" >&2
exit 1
fi
}
expected_archive="$(jq -r '.archive.sha256 // empty' "$TMP_DIR/checksums.json")"
if [ -z "$expected_archive" ]; then
echo "ERROR: checksums.json missing archive.sha256" >&2
exit 1
fi
actual_archive="$(hash_file "$TMP_DIR/$ZIP_NAME")"
if [ "$actual_archive" != "$expected_archive" ]; then
echo "ERROR: archive checksum mismatch" >&2
exit 1
fi
verify_manifest_file "SKILL.md" "$TMP_DIR/SKILL.md"
verify_manifest_file "skill.json" "$TMP_DIR/skill.json"
echo "Signed release manifest, archive, SKILL.md, and skill.json verified."
只有在此验证成功后,才能安装或解压归档文件。
用法
直接通过此技能运行增强安装器:
node ~/.openclaw/skills/clawsec-clawhub-checker/scripts/enhanced_guarded_install.mjs \
--skill some-skill \
--version 1.0.0
如果某项技能低于阈值,只能在明确批准后重新运行:
node ~/.openclaw/skills/clawsec-clawhub-checker/scripts/enhanced_guarded_install.mjs \
--skill some-skill \
--version 1.0.0 \
--confirm-reputation
可选的咨询钩子接线(手动)
此版本不会自动修补 clawsec-suite 钩子文件。
如果你依赖包含 reputationWarning / reputationWarnings 的咨询警报,请手动接入检查器模块:
- 源模块:
~/.openclaw/skills/clawsec-clawhub-checker/hooks/clawsec-advisory-guardian/lib/reputation.mjs - 目标钩子文件:
~/.openclaw/skills/clawsec-suite/hooks/clawsec-advisory-guardian/handler.ts
请将此接线视为有意进行的本地自定义,并在启用前进行审查。
退出代码
0可以安全安装42需要确认咨询警报(来自 clawsec-suite)43需要确认信誉1错误
配置
环境变量:
CLAWHUB_REPUTATION_THRESHOLD- 最低评分(0-100,默认值:70)
安全说明
- 这是纵深防御措施,不能替代咨询匹配
- 扫描器输出可能产生误报和漏报
- 覆盖警告前,请务必审查技能代码
开发
关键文件:
scripts/enhanced_guarded_install.mjsscripts/check_clawhub_reputation.mjsscripts/setup_reputation_hook.mjshooks/clawsec-advisory-guardian/lib/reputation.mjs
许可证
GNU AGPL v3.0 或更高版本 - ClawSec 安全套件的一部分
评论
支持 Markdown