安全审计 + 仅追加日志 + 监控,针对 OpenClaw 技能(文件级差异、基线审批、SHA‑256 完整性)
ter0413-6348. 一个安全管理 OpenClaw 技能的面向安全的技能是一项面向实际任务的技能,主要用于此软件包包括可执行的 Python 脚本( 不只指令), 具有6个核心能力 :. 危险扫描。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
一个面向安全的技能,用于安全地管理 OpenClaw 技能。本包包含可执行的 Python 脚本(非纯指令型),具备六大核心能力:
该技能执行的是对被审计技能的 静态分析 —— 它 不会执行被审计技能自身的代码。但审计工具本身会执行 本地可信命令/子进程,例如
git、Python 辅助脚本,以及为快照生成、差异比对和通知生成所必需的受控本地进程调用。
scripts/requirements.txtskills_audit.py 对已安装技能目录执行静态检查:
输出字段:
risk.level:low | medium | high | extremerisk.decision:allow | allow_with_caution | require_sandbox | denyrisk.risk_signals[]:证据(文件路径 + 代码片段)risk.network.domains[]:提取出的域名列表risk.source:local所有检测结果均以 NDJSON 格式追加写入:
~/.openclaw/skills-audit/logs.ndjson用于差异比对的状态快照:
~/.openclaw/skills-audit/state.json日志结构由 log-template.json 定义。关键字段说明:
sha256:SKILL.md 文件的 SHA-256 哈希值(完整性校验字段)diff:git 提交信息 + 各文件统计信息file_changes:文件级增/删/改列表approved:基线审批状态周期性监控 workspace/skills 目录下的新增、变更与删除操作。
通知模板位于:templates/notify.txt(自定义方法见 templates/README.md)。
每次扫描均将 skills 目录快照保存至本地 git 仓库(~/.openclaw/skills-audit/snapshots/):
git diff HEAD~1 HEAD 检测变更分级显示策略:
查看完整差异:
git -C ~/.openclaw/skills-audit/snapshots diff HEAD~1 HEAD git -C ~/.openclaw/skills-audit/snapshots diff HEAD~1 HEAD -- skills// git -C ~/.openclaw/skills-audit/snapshots log --oneline
每次扫描还会在审计日志中生成 semantic_analysis 字段:
eval、exec、os.system、subprocess 配合 shell=True、curl|sh、wget|bash 等模式level / decision / reason说明:
skills_audit.py scan 时必须经过语义分析semantic_analysis 缺失或无法生成有效结果,则扫描应失败,而非静默跳过config/semantic-patterns.json)将从高权重危险函数评分中排除real_execution / rule_sample / doc_example / config_sampleskills_audit.py 自身,语义检测与风险扫描均优先聚焦真实执行路径,而非默认将模式字符串表视为危险执行subprocess.run([...], shell=False) 且 argv 固定)被视为工程能力,而非自动归类为恶意意图通过 ~/.openclaw/skills-audit/baseline.json 管理已批准技能:
python3 {baseDir}/scripts/skills_audit.py approve --skill weather --workspace
python3 {baseDir}/scripts/skills_audit.py approve --all --workspace
python3 {baseDir}/scripts/skills_audit.py baseline --list
python3 {baseDir}/scripts/skills_audit.py baseline --revoke --skill weather
当 Agent 首次加载本技能时,可执行 本地初始化,但 不得自动创建 cron 任务。应引导用户显式创建监控:
~/.openclaw/skills-audit/state.json 是否存在python3 {baseDir}/scripts/skills_audit.py init --workspace
skills-audit-watch cron 任务(openclaw cron list)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
设计原则:
skills-audit负责扫描、日志记录与通知文本生成;调度与投递应由用户主导,而非默认自动创建。
⚠️ 强制规则:当用户询问技能变更详情时,Agent 必须 使用
show命令获取结构化变更数据。默认应先提供 安全摘要,而非直接向外发送完整原始 diff。
触发短语(用户可能表达为):
固定执行流程(不可跳过):
python3 {baseDir}/scripts/skills_audit.py show --skill
python3 {baseDir}/scripts/skills_audit.py show
show 输出生成的 安全摘要(含变更文件、行数、主要变更点),避免对外暴露敏感 diff 内容show 输出,并应向用户警示:diff 中可能出现敏感信息--commit-range:python3 {baseDir}/scripts/skills_audit.py show --commit-range HEAD~3..HEAD~2
禁止行为:
show 输出路径,直接运行 git diffshow 提供安全摘要;仅在用户明确请求时提供完整原始内容python3 {baseDir}/scripts/skills_audit.py init --workspace /root/.openclaw/workspace
python3 {baseDir}/scripts/skills_audit.py scan --workspace /root/.openclaw/workspace --who user --channel local
python3 {baseDir}/scripts/skills_watch_and_notify.py --workspace /root/.openclaw/workspace
risk.level 为 high 或 extreme 时,必须经人工审查或置于 sandbox 中执行。cron add / cron edit 命令。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章