mcpField
C
clawsec-clawhub-checker

clawsec-clawhub-checker

github.com/prompt-securityセキュリティ1.1k251 回インストール今日更新
リポジトリ

clawsec-clawhub-checker について

clawsec-suite の保護付きインストーラーに ClawHub のレピュテーション確認を加えるセキュリティスキルです。スキャナーの状態とメタデータに基づく評価を組み合わせ、基準未満の場合は明示的な承認を求めます。

主な機能

  1. 01ClawHub のスキルメタデータ取得
  2. 02スキャナー状態と VirusTotal 概要の確認
  3. 03経過期間、更新、作者、ダウンロード数の評価
  4. 04低評価のインストールに承認を要求

活用シーン

  1. 01インストール前の ClawHub スキル評価
  2. 02スキャナー警告と併せたレピュテーション確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/prompt-security/clawsec --skill clawsec-clawhub-checker

インストール後、Claude Code で/clawsec-clawhub-checkerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.clawhubignore
CHANGELOG.md
README.md
skill.json
hooks/clawsec-advisory-guardian/lib/
reputation.mjs
scripts/
check_clawhub_reputation.mjs
enhanced_guarded_install.mjs
setup_reputation_hook.mjs
test/
reputation_check.test.mjs
setup_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 の inspect/search エンドポイントを呼び出します
  • 信頼モデル:スコアはヒューリスティックに基づいており、確認が必要です

機能

  1. ClawHub からスキルのメタデータを読み込みます(inspect --json)
  2. スキャナーのステータスを評価します(利用可能な場合は VirusTotal の概要も含みます)
  3. 追加のレピュテーションヒューリスティック(経過期間、更新、作成者の履歴、ダウンロード数)を適用します
  4. スコアがしきい値を下回る場合、明示的な --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.mjs
  • scripts/check_clawhub_reputation.mjs
  • scripts/setup_reputation_hook.mjs
  • hooks/clawsec-advisory-guardian/lib/reputation.mjs

ライセンス

GNU AGPL v3.0 以降 - ClawSec セキュリティスイートの一部

コメント