oclaw/skills/oclaw-skill-manager/references/skill-safety-rubric.md
oliver beb52006d8 refactor: move bundled skills tree to repo root skills/
- Relocate runtime/skills -> skills/; runtime_skills_root() prefers oclaw/skills
  with fallback to legacy runtime/skills for unmigrated trees.
- session-bootstrap hook handler resolves repo root via PROJECT_ROOT.
- Update architecture/migration docs and in-tree skill references.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-10 11:35:57 +08:00

5.1 KiB
Raw Blame History

Oclaw 说明:以下为评级与检查维度参考,供人工审阅 skill 时使用。Oclaw 不根据本文件自动打分或拦截安装;实际风险控制依赖权限、审计、工具白名单与运行环境隔离。

Skill 安全审查量表(参考)

本文件提供人工审阅时可用的检查维度与分级思路,不作为 Oclaw 运行时强制契约。

评级标准

S+ 级

  • 通过人工验证
  • T1/T2 来源
  • 满足所有 S 级要求

S 级

  • T1/T2 来源
  • 代码安全规范
  • 依赖版本锁定
  • 无动态代码加载

A 级

  • 代码安全规范
  • 依赖版本锁定
  • 无动态代码加载
  • 允许 T3 来源

B 级

  • 无 C/D 级问题
  • 存在改进空间

C 级

  • 存在潜在安全漏洞
  • 硬编码敏感信息

D 级(一票否决)

  • 使用 eval() 执行不可信网络代码
  • 存在 SQL 注入、命令注入等明显漏洞
  • 未经确认上传本地文件到远程(T3 来源)
  • 执行 rm -rf / 等系统破坏性命令

检查维度

1. 代码安全性检查

D级触发项:

  • 使用 eval() 执行不可信网络代码
  • 使用 exec()、system() 执行未过滤的用户输入
  • 存在 SQL 注入、命令注入、XSS 等明显漏洞
  • 存在已知的严重 CVE 漏洞

C级触发项:

  • 存在潜在的安全漏洞(路径遍历、不安全的反序列化)
  • 硬编码敏感信息(密码、API Key、Token)

2. 数据隐私性检查

D级触发项:

  • 未经用户确认上传本地文件到远程(T3 来源)
  • 静默收集密码、密钥等敏感信息
  • 将敏感数据传输到未加密通道

C级触发项:

  • 收集的数据超出功能说明范围
  • 未明确告知用户数据使用情况

3. 执行安全性检查

D级触发项:

  • 执行 rm -rf / 或类似系统破坏性命令
  • 无确认直接执行系统级危险操作
  • 修改系统关键配置且无备份机制

C级触发项:

  • 危险操作缺乏二次确认
  • 关键操作无回滚机制

4. 依赖可靠性检查

检查 skill 是否加载动态代码:

  • 从网络下载并执行代码
  • 使用 fetch 或 curl 获取远程脚本并执行
  • 动态 import() 不可信来源的模块

URL 递归检查(最多 2 层):

对动态加载的可执行文件进行递归检查:

  • 第 1 层:Skill 代码中直接引用的动态 URL
  • 第 2 层:第 1 层内容中引用的动态 URL
  • 超过 2 层:发现第 3 层及以上动态加载 → 强制标记为 C 级

评级规则:

动态加载层级 评级影响
无动态加载 正常评级流程
仅第 1 层 根据来源分级处理
存在第 2 层 最高评级为 C 级
第 2 层后仍有动态加载 强制 C 级

来源分级处理:

  • T1 来源:可加载官方动态代码,放宽至 B 级要求
  • T2 来源:动态代码需来源验证,放宽至 C 级要求
  • T3 来源:严格禁止未经验证的动态代码加载

C 级触发场景(多层动态加载):

// 示例:三层动态加载触发 C 级
// Skill 代码 → 加载 loader.js → 加载 runtime.js → 加载 exec.js
fetch('https://example.com/loader.js')      // 第 1 层
  .then(r => eval(r.text()))
  
// loader.js 中:
import('https://cdn.com/runtime.js')         // 第 2 层

// runtime.js 中:
fetch('https://third.com/exec.js')           // 第 3 层 → C 级

5. 来源可信度评估

T1 - 官方/顶级来源:

  • 知名大型技术公司(Google, Microsoft, OpenAI, Anthropic, Meta, AWS)
  • 顶级开源基金会(Apache, Linux 基金会)
  • 有官方代码签名

T2 - 可信组织来源:

  • 有实名认证的组织账号
  • GitHub 组织账号(非个人)
  • Stars > 1000 或有良好声誉

T3 - 社区/个人来源:

  • 个人开发者账号
  • 小型社区项目
  • 来源无法明确验证

6. Markdown 内嵌代码检查

SKILL.md 文件中的代码块也需要检查:

高风险代码块:

  • 包含代码执行类危险函数(如 eval/exec)
  • 包含系统破坏性命令
  • 包含敏感信息(凭据/密钥)
  • 包含未经验证的网络下载执行

中风险代码块:

  • 可执行的脚本代码
  • 包含网络请求或文件操作的代码

低风险代码块:

  • 配置/数据文件示例
  • 代码片段演示(不完整)
  • 单行简单命令(无害)

报告格式

# Cocoloop Safe Check 安全认证报告

## 基本信息
- Skill 名称: [名称]
- 来源: [GitHub 链接/本地路径]
- 来源等级: [T1/T2/T3]

## 评级结果
评级: [S+/S/A/B/C/D]
评价: [一句话评价]

## 检查依据
### 通过项
- [检查项]

### 注意事项
- [注意事项]

### 问题项
- [问题项]

## 详细检查结果
[各维度详细检查结果]

## 使用建议
[推荐使用场景和安全使用指南]

快速检查清单

  • 无 eval/exec/system 等危险函数
  • 无硬编码敏感信息
  • 无 SQL/命令注入漏洞
  • 依赖版本已锁定
  • 无未经验证的动态代码加载
  • 来源可信(T1/T2 优先)
  • 有完善的输入验证
  • 错误处理不泄露敏感信息