← 返回
未分类 中文

test0413-6348

Security audit + append-only logging + monitoring for OpenClaw skills (file-level diff, baseline approval, SHA-256 integrity).
安全审计 + 仅追加日志 + 监控,针对 OpenClaw 技能(文件级差异、基线审批、SHA‑256 完整性)
ucloud-sec
未分类 clawhub v1.5.3 1 版本 100000 Key: 无需
★ 0
Stars
📥 368
下载
💾 0
安装
1
版本
#latest

概述

test0413-6348

A security-oriented skill for managing OpenClaw skills safely. This package includes executable Python scripts (not instructions-only), with six core capabilities:

1) Threat scanning (static analysis)

2) Append-only audit logs (local NDJSON)

3) Skills monitoring & notifications (push alerts on changes)

4) File-level diff + content diff (git snapshots)

5) Baseline approval mechanism (approved skills don't repeat-alert)

6) Semantic analysis (dangerous functions + capability analysis)

> This skill performs static analysis of audited skills — it does not execute the code of the audited skill itself. However, the audit tool does execute local trusted commands/subprocesses such as git, Python helper scripts, and controlled local process calls needed for snapshotting, diffing, and notification generation.


Requirements

  • Python ≥ 3.9, standard library only (no third-party dependencies)
  • git (required for content diff snapshots and local repository history)
  • A normal local shell/process environment for controlled subprocess execution used by the audit tool itself
  • See scripts/requirements.txt for details

Core Capabilities

1) Threat Scanning (Static Risk Analysis)

skills_audit.py performs static inspection of installed skill directories:

Output fields:

  • risk.level: low | medium | high | extreme
  • risk.decision: allow | allow_with_caution | require_sandbox | deny
  • risk.risk_signals[]: evidence (file + snippet)
  • risk.network.domains[]: extracted domains
  • risk.source: local

2) Audit Logging (Append-only NDJSON)

All detections are appended as NDJSON to:

  • ~/.openclaw/skills-audit/logs.ndjson

State snapshot for diff:

  • ~/.openclaw/skills-audit/state.json

Schema defined by log-template.json. Key points:

  • sha256: SHA-256 of SKILL.md (integrity field)
  • diff: git commit info + per-file stat
  • file_changes: file-level added/removed/changed lists
  • approved: baseline approval status

3) Skills Monitoring & Push Notifications

Periodic monitoring of workspace/skills for additions, changes, and removals.

  • No changes → no output
  • Changes detected → one notification
  • Baseline-approved unchanged skills are excluded from notifications

Notification template: templates/notify.txt (see templates/README.md for customization).

4) File-level Diff + Content Diff (Git Snapshots)

Each scan snapshots the skills directory into a local git repo (~/.openclaw/skills-audit/snapshots/):

  • Each scan = one git commit
  • Change detection via git diff HEAD~1 HEAD
  • Notifications include per-file change summaries (+N -N lines)

Tiered display:

  • ≤ 5 changed files: show all with +N -N
  • 6–20: first 3 + "X more omitted"
  • \> 20: first 3 + omitted + ⚠️ large-scale change warning
  • \> 8 skills changed: high-risk expanded, low-risk compressed

View full diff:

git -C ~/.openclaw/skills-audit/snapshots diff HEAD~1 HEAD
git -C ~/.openclaw/skills-audit/snapshots diff HEAD~1 HEAD -- skills/<skill-name>/
git -C ~/.openclaw/skills-audit/snapshots log --oneline

6) Semantic Analysis (Dangerous Functions + Capability Analysis)

Each scan now also produces a semantic_analysis field in the audit log:

  • Dangerous function analysis: detects patterns such as eval, exec, os.system, subprocess with shell=True, curl|sh, and wget|bash
  • Capability analysis: infers whether the skill has network, filesystem, process execution, cron/scheduler, git, or config-handling capabilities
  • Combined result: evaluates execution-capability risk and malicious-intent risk separately, with semantic intent as the primary decision dimension, then emits level / decision / reason

Notes:

  • The current implementation is a local LLM-style heuristic analysis, with no external model dependency
  • This is a mandatory rule: every added or changed skill must go through semantic analysis during skills_audit.py scan
  • If semantic_analysis is missing or cannot produce a result, the scan should fail instead of silently skipping it
  • To reduce self-audit false positives, low-signal files such as rule configs, log templates, skill docs, and config/semantic-patterns.json are excluded from high-weight dangerous-function scoring
  • Risk-rule scanning now distinguishes hit contexts: real_execution / rule_sample / doc_example / config_sample
  • For skills_audit.py itself, semantic detection and risk scanning both prioritize real execution paths instead of treating the pattern-string tables as dangerous execution by default
  • Semantic analysis now separates execution capability from malicious intent, so normal engineering capabilities do not automatically imply a hostile result
  • Controlled local calls such as subprocess.run([...], shell=False) with fixed argv are treated as engineering capability rather than automatic malicious intent
  • The field is designed to be forward-compatible with a real LLM-backed semantic scanner later

5) Baseline Approval Mechanism

Manage approved skills via ~/.openclaw/skills-audit/baseline.json:

  • Approved skills (matching tree_sha256) won't trigger repeated alerts
  • Any file change automatically breaks approval → re-triggers risk detection
python3 {baseDir}/scripts/skills_audit.py approve --skill weather --workspace <workspace>
python3 {baseDir}/scripts/skills_audit.py approve --all --workspace <workspace>
python3 {baseDir}/scripts/skills_audit.py baseline --list
python3 {baseDir}/scripts/skills_audit.py baseline --revoke --skill weather

Initialization and Manual Monitoring Setup (Agent Directive)

When the Agent first loads this skill, it may perform local initialization, but it must not automatically create cron jobs. Instead, it should guide the user to create monitoring explicitly:

  1. Check if ~/.openclaw/skills-audit/state.json exists
  2. If not, run initialization:

```bash

python3 {baseDir}/scripts/skills_audit.py init --workspace

```

  1. Check if a skills-audit-watch cron job already exists (openclaw cron list)
  2. If not:
    • Do not auto-create cron
    • Tell the user they can create it manually
    • Provide a suggested command example (to be executed by the user, or only after explicit user approval):

```bash

openclaw cron add \

--name "skills-audit-watch" \

--cron "/1 *" \

--tz "Asia/Shanghai" \

--session isolated \

--message "python3 {baseDir}/scripts/skills_watch_and_notify.py --workspace " \

--announce \

--channel \

--to

```

  1. Remind the user to verify the push target before enabling it, especially if raw diffs or large change details may be sent externally
  2. Do not default to pushing large raw diffs to external channels; prefer a concise summary first, with details on demand

> Design principle: skills-audit handles scanning, logging, and notification text generation. Scheduling and delivery should be user-directed rather than auto-created by default.


Viewing Change Details (Agent Mandatory Flow)

> ⚠️ Mandatory rule: When a user asks about skill change details, the Agent MUST use the show command to obtain structured change data. By default, it should provide a safe summary first, rather than sending the full raw diff externally.

Trigger phrases (user may say):

  • "what changed" / "show diff" / "what's different" / "change details"
  • "具体改了什么" / "哪里变了" / "看一下变更"
  • Any request for diff / change / modification details

Fixed execution flow (cannot be skipped):

  1. If user mentions a specific skill:

```bash

python3 {baseDir}/scripts/skills_audit.py show --skill

```

  1. If no specific skill mentioned:

```bash

python3 {baseDir}/scripts/skills_audit.py show

```

  1. By default, send only a safe summary derived from show output (files changed, line counts, major change points), to avoid externally exposing sensitive diff content
  2. Only when the user explicitly asks for raw/full content should the full show output be sent, and the user should be warned that sensitive information may appear in diffs
  3. For older history, use --commit-range:

```bash

python3 {baseDir}/scripts/skills_audit.py show --commit-range HEAD~3..HEAD~2

```

Prohibited behaviors:

  • ❌ Running git diff and bypassing the structured show output path
  • ❌ Defaulting to send raw full diff content to external channels without warning
  • ❌ Automatically pushing large raw change content to external channels
  • ✅ Prefer a safe summary based on show; provide full raw content only on explicit request

Manual Usage

Initialize

python3 {baseDir}/scripts/skills_audit.py init --workspace /root/.openclaw/workspace

Manual Scan

python3 {baseDir}/scripts/skills_audit.py scan --workspace /root/.openclaw/workspace --who user --channel local

Local Notification Test

python3 {baseDir}/scripts/skills_watch_and_notify.py --workspace /root/.openclaw/workspace

Safety Notes

  • Static analysis only: never execute unknown skill code during audit.
  • When risk.level is high/extreme, require human review or sandbox.
  • Prefer OpenClaw cron add / cron edit for scheduling.
  • Integrity checks use SHA-256.

版本历史

共 1 个版本

  • v1.5.3 当前
    2026-05-07 12:20 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-intelligence

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,358 📥 318,360
ai-intelligence

ontology

oswalpalash
类型化知识图谱,用于结构化智能体记忆与可组合技能。支持创建/查询实体(人员、项目、任务、事件、文档)及关联...
★ 712 📥 243,824
developer-tools

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 668 📥 324,156