mcpField
P
picoclaw-self-pen-testing

picoclaw-self-pen-testing

github.com/prompt-security安全1.1k64 次安装今天更新
代码仓库

关于 picoclaw-self-pen-testing

此技能对现有 Picoclaw 安全态势配置文件执行本地只读审查,供维护 Picoclaw 安全配置的人员检查常见风险。它独立于更广泛的 guardian 包,可单独版本化和发布。

主要功能

  1. 01本地只读态势审查
  2. 02检查 Web UI 公开暴露与认证设置
  3. 03审查工作区、工具及 MCP 信任边界
  4. 04标记明文密钥及多渠道认证风险
  5. 05验证签名发布清单

适用场景

  1. 01检查 Picoclaw 配置中的 UI 访问风险
  2. 02审查工具权限和 MCP 信任边界
  3. 03安装前核验技能发布归档

MCP 相关

审查 Picoclaw 配置中的 MCP 信任边界;不提供 MCP 服务。

安装

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

$npx skills add https://github.com/prompt-security/clawsec --skill picoclaw-self-pen-testing

安装后在 Claude Code 中输入/picoclaw-self-pen-testing确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CHANGELOG.md
README.md
skill.json
lib/
format.mjs
self_pen_test.mjs
scripts/
self_pen_test.mjs
test/
self_pen_test.test.mjs

详细介绍

Picoclaw Posture Review(独立软件包)

目的:将 Picoclaw 的 posture-review 检查与更广泛的 guardian 软件包隔离,以便对涉及内容审核的敏感检查单独进行版本管理和发布。

Vercel Skills 安装

使用 Vercel Skills CLI 为此运行环境安装:

npx skills add prompt-security/clawsec --skill picoclaw-self-pen-testing -a openclaw -y

发布制品验证

对于独立安装,请先验证已签名的发布清单,再信任 SKILL.md、skill.json 或归档文件。skill.json 文件是软件包元数据/SBOM 的来源,发布流水线使用 ClawSec 发布密钥对 checksums.json 进行签名。

set -euo pipefail

SKILL_NAME="picoclaw-self-pen-testing"
VERSION="0.0.5"
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."

只有在验证成功后,才能安装或解压归档文件。

范围

此技能仅针对现有的 Picoclaw posture profile 执行本地、只读的 posture-review 分析。

它会标记:

  • 公开的 Web UI 暴露
  • 已禁用的 UI 身份验证
  • 不受限制的工作区/工具
  • 未签名的验证模式
  • MCP 信任边界审查需求
  • 调度程序持久化审查
  • 明文机密标记
  • 多渠道身份验证审查

用法

node scripts/self_pen_test.mjs --profile ~/.picoclaw/security/clawsec/current-profile.json

验证

python utils/validate_skill.py skills/picoclaw-self-pen-testing
node skills/picoclaw-self-pen-testing/test/self_pen_test.test.mjs

评论

支持 Markdown