Aegis · Skill Security Vetting System 🛡️
"Aegis protects, Aegis decides."
企业级 AI 代理技能安全审查协议。自动化威胁检测、量化风险评分、零信任代码分析。
🎯 核心定位
天鉴是一个防御性安全技能,用于在安装任何第三方技能前进行深度安全审查。它不是简单的检查清单,而是一套完整的安全决策框架。
设计原则
| 原则 | 说明 |
|---|
| 🛡️ 零信任 | 所有外部代码默认不可信,必须经过验证 |
| 📊 量化评估 |
风险必须可量化、可比较、可追溯 |
| 🤖
AI 优先 | 为 AI agent 设计,决策流程可被机器理解执行 |
| ⚡
自动化 | 能自动检查的绝不依赖人工判断 |
| 📝
可审计 | 所有审查结果必须可记录、可回溯 |
🚀 使用场景
必须使用天鉴的情况
- - [ ] 从 ClawHub/skillhub 安装任何技能
- [ ] 从 GitHub/GitLab 克隆技能代码
- [ ] 其他 AI 代理推荐的技能
- [ ] 用户手动提供的技能文件夹
- [ ] 任何需要
exec 执行外部脚本的情况
可跳过的情况(需记录原因)
- - [ ] OpenClaw 官方核心技能(已内置审查)
- [ ] 之前已审查过且代码未变更的技能
- [ ] 用户明确承担风险的内部开发技能
🔍 五层审查协议
第一层:来源信誉评估 (Source Reputation)
CODEBLOCK0
自动化命令:
# ClawHub/skillhub 技能信息
skillhub info <skill-name>
# GitHub 仓库统计
curl -s "https://api.github.com/repos/{owner}/{repo}" | jq '{
stars: .stargazers_count,
forks: .forks_count,
updated: .updated_at,
created: .created_at,
issues: .open_issues_count
}'
# 检查作者历史技能
ls ~/.openclaw/workspace/skills/ | grep -i <author>
第二层:静态代码分析 (Static Code Analysis)
🚨 立即拒绝的危险信号 (CRITICAL - 自动拒绝)
发现以下任意一项,直接拒绝安装,无需继续审查:
CODEBLOCK2
危险信号清单:
| 信号类型 | 检测模式 | 风险等级 | 说明 |
|---|
| 数据外传 | INLINECODE1 + 未知域名 | ⛔ CRITICAL | 可能窃取数据 |
| 代码执行 |
eval(,
exec( | ⛔ CRITICAL | 动态执行恶意代码 |
| 编码混淆 |
base64.*decode,
atob( | ⛔ CRITICAL | 隐藏真实意图 |
| 凭证窃取 |
~/.ssh,
~/.aws,
credentials | ⛔ CRITICAL | 窃取敏感信息 |
| 记忆访问 |
MEMORY.md,
SOUL.md,
USER.md | ⛔ CRITICAL | 访问私有上下文 |
| 提权尝试 |
sudo,
pkexec,
doas | ⛔ CRITICAL | 尝试获取更高权限 |
| 破坏命令 |
rm -rf /,
dd if=,
mkfs | ⛔ CRITICAL | 破坏系统 |
| 混淆代码 | 长十六进制字符串、压缩代码 | ⛔ CRITICAL | 隐藏真实功能 |
| XSS 攻击 |
javascript:,
data:text/html | ⛔ CRITICAL | 浏览器攻击 |
| 反向 Shell |
bash -i,
nc -e,
python.*socket | ⛔ CRITICAL | 建立后门 |
⚠️ 需要人工审查的警告信号 (WARNING - 需解释)
CODEBLOCK3
警告信号清单:
| 信号类型 | 检测模式 | 风险等级 | 需要解释的问题 |
|---|
| 网络请求 | INLINECODE23 , axios, INLINECODE25 | 🟡 WARNING | 访问哪些域名?用途是什么? |
| 文件写入 |
fs.writeFile,
open('w') | 🟡 WARNING | 写入哪些文件?是否必要? |
| 子进程 |
child_process,
subprocess | 🟡 WARNING | 执行什么命令?是否可替代? |
| 存储访问 |
localStorage,
cookie | 🟡 WARNING | 存储什么数据?是否敏感? |
| 加密操作 |
crypto,
encrypt | 🟡 WARNING | 加密什么?密钥如何管理? |
| 环境变量 |
process.env,
os.environ | 🟡 WARNING | 读取哪些变量?是否必要? |
| 定时任务 |
setInterval,
cron,
schedule | 🟡 WARNING | 执行频率?是否会资源耗尽? |
| 事件监听 |
process.on,
signal | 🟡 WARNING | 监听什么事件?是否有副作用? |
第三层:权限范围分析 (Permission Scope Analysis)
CODEBLOCK4
权限检查清单:
CODEBLOCK5
第四层:依赖链分析 (Dependency Chain Analysis)
CODEBLOCK6
依赖风险评估:
| 依赖数量 | 风险等级 | 说明 |
|---|
| 0-5 个 | 🟢 低 | 依赖少,攻击面小 |
| 6-20 个 |
🟡 中 | 需要审查关键依赖 |
| 21-50 个 | 🟠 高 | 依赖过多,建议简化 |
| 50+ 个 | 🔴 极高 | 拒绝安装,要求重构 |
依赖来源检查:
- - [ ] 所有依赖来自官方仓库(npm/pypi/crates.io)
- [ ] 无 git 直连依赖(
git+https://...) - [ ] 无本地路径依赖(
file:...) - [ ] 无未知源依赖
第五层:行为意图分析 (Behavioral Intent Analysis)
核心问题: 这个技能的实际行为是否与其声明的用途一致?
CODEBLOCK7
📊 风险评分系统
量化评分模型
CODEBLOCK8
风险等级划分
| 分数范围 | 风险等级 | 标识 | 决策 |
|---|
| 80-100 | 低风险 | 🟢 | 自动批准安装 |
| 60-79 |
中风险 | 🟡 | 需人工审查后决定 |
| 40-59 | 高风险 | 🟠 | 强烈不建议,需明确理由 |
| 0-39 | 极高风险 | 🔴 | 禁止安装 |
| 任何 CRITICAL 信号 | 拒绝 | ⛔ | 直接拒绝,不评分 |
📋 审查报告模板
CODEBLOCK9
🤖 AI Agent 集成指南
快速决策树
CODEBLOCK10
自动化审查脚本
CODEBLOCK11
与技能安装流程集成
CODEBLOCK12
📚 附录
A. 常见安全模式识别
数据外传模式:
CODEBLOCK13
凭证窃取模式:
CODEBLOCK14
代码注入模式:
CODEBLOCK15
B. 安全编码最佳实践
推荐模式:
CODEBLOCK16
C. 审查频率建议
每月复查 |
| 低频技能 | 每季度复查 |
| 有警告信号技能 | 每次使用前 |
D. 紧急响应流程
发现已安装技能存在安全问题:
- 1. 立即隔离 - 禁用技能,阻止其执行
- 影响评估 - 检查是否有数据泄露或系统修改
- 溯源分析 - 确定问题引入时间点和原因
- 修复/卸载 - 修复问题或完全移除技能
- 报告记录 - 记录事件到审查日志
- 流程改进 - 更新审查规则防止类似问题
🔱 天鉴箴言
「代码如人心,不可轻信」
每一次安装都是一次信任的授予。
天鉴的存在,不是阻碍创新,而是守护边界。
在便利与安全之间,我们选择安全。
在速度与审慎之间,我们选择审慎。
因为一次疏忽,可能代价惨重。
而多一次审查,只是片刻等待。
📄 License
This skill is licensed under the MIT License.
CODEBLOCK17
天鉴 · 版本 2.0.0 · 为 AI 代理而生的安全审查系统
🔱 天鉴高悬,万邪不侵 🔱
Aegis · 技能安全审查系统 🛡️
Aegis 守护,Aegis 裁决。
企业级 AI 代理技能安全审查协议。自动化威胁检测、量化风险评分、零信任代码分析。
🎯 核心定位
天鉴是一个防御性安全技能,用于在安装任何第三方技能前进行深度安全审查。它不是简单的检查清单,而是一套完整的安全决策框架。
设计原则
| 原则 | 说明 |
|---|
| 🛡️ 零信任 | 所有外部代码默认不可信,必须经过验证 |
| 📊 量化评估 |
风险必须可量化、可比较、可追溯 |
| 🤖
AI 优先 | 为 AI agent 设计,决策流程可被机器理解执行 |
| ⚡
自动化 | 能自动检查的绝不依赖人工判断 |
| 📝
可审计 | 所有审查结果必须可记录、可回溯 |
🚀 使用场景
必须使用天鉴的情况
- - [ ] 从 ClawHub/skillhub 安装任何技能
- [ ] 从 GitHub/GitLab 克隆技能代码
- [ ] 其他 AI 代理推荐的技能
- [ ] 用户手动提供的技能文件夹
- [ ] 任何需要 exec 执行外部脚本的情况
可跳过的情况(需记录原因)
- - [ ] OpenClaw 官方核心技能(已内置审查)
- [ ] 之前已审查过且代码未变更的技能
- [ ] 用户明确承担风险的内部开发技能
🔍 五层审查协议
第一层:来源信誉评估 (Source Reputation)
评估维度:
├── 来源类型 (Source Type)
│ ├── 官方仓库 (OpenClaw core) → 信任等级:高
│ ├── ClawHub/skillhub 认证技能 → 信任等级:中高
│ ├── GitHub 高星项目 (100+ stars) → 信任等级:中
│ ├── GitHub 低星/新项目 → 信任等级:低
│ └── 未知来源/直接文件 → 信任等级:极低
│
├── 作者信誉 (Author Reputation)
│ ├── 已知可信作者(历史技能无问题)→ +20 分
│ ├── 有社区评价/引用 → +10 分
│ ├── 首次出现/匿名 → 0 分
│ └── 有负面记录 → -50 分(直接拒绝)
│
├── 时间维度 (Temporal Signals)
│ ├── 最后更新时间 < 3 个月 → +10 分
│ ├── 最后更新 < 1 年 → 0 分
│ └── 最后更新 > 1 年 → -10 分(可能过时)
│
└── 社区指标 (Community Metrics)
├── 下载量/安装量 → 按对数计分
├── 用户评价/反馈 → 正面 + 负面加权
└── Fork 数/衍生项目 → 活跃度指标
自动化命令:
bash
ClawHub/skillhub 技能信息
skillhub info
GitHub 仓库统计
curl -s https://api.github.com/repos/{owner}/{repo} | jq {
stars: .stargazers_count,
forks: .forks_count,
updated: .updated_at,
created: .created_at,
issues: .openissuescount
}
检查作者历史技能
ls ~/.openclaw/workspace/skills/ | grep -i
第二层:静态代码分析 (Static Code Analysis)
🚨 立即拒绝的危险信号 (CRITICAL - 自动拒绝)
发现以下任意一项,直接拒绝安装,无需继续审查:
bash
检查命令示例
grep -r curl\|wget --include=.md --include=.sh --include=.js --include=.py .
grep -r exec(\|eval( --include=.js --include=.py .
grep -r base64.decode\|atob( --include=.js --include=*.py .
grep -r ~/.ssh\|~/.aws\|~/.config\|credentials\|\.env --include=.md --include=.js --include=*.py .
grep -r MEMORY.md\|SOUL.md\|USER.md\|IDENTITY.md --include=.md --include=.js --include=*.py .
grep -r sudo\|pkexec\|doas --include=.md --include=.sh .
grep -r rm -rf\|dd if=\|mkfs\|:(){:|:&};: --include=*.sh .
grep -r 0x[0-9a-fA-F]\{8,\} --include=.js --include=.py # 混淆的十六进制
grep -r javascript:.eval\|data:text/html --include=.md . # XSS 向量
危险信号清单:
| 信号类型 | 检测模式 | 风险等级 | 说明 |
|---|
| 数据外传 | curl\ | wget + 未知域名 | ⛔ CRITICAL | 可能窃取数据 |
| 代码执行 |
eval(, exec( | ⛔ CRITICAL | 动态执行恶意代码 |
| 编码混淆 | base64.*decode, atob( | ⛔ CRITICAL | 隐藏真实意图 |
| 凭证窃取 | ~/.ssh, ~/.aws, credentials | ⛔ CRITICAL | 窃取敏感信息 |
| 记忆访问 | MEMORY.md, SOUL.md, USER.md | ⛔ CRITICAL | 访问私有上下文 |
| 提权尝试 | sudo, pkexec, doas | ⛔ CRITICAL | 尝试获取更高权限 |
| 破坏命令 | rm -rf /, dd if=, mkfs | ⛔ CRITICAL | 破坏系统 |
| 混淆代码 | 长十六进制字符串、压缩代码 | ⛔ CRITICAL | 隐藏真实功能 |
| XSS 攻击 | javascript:, data:text/html | ⛔ CRITICAL | 浏览器攻击 |
| 反向 Shell | bash -i, nc -e, python.*socket | ⛔ CRITICAL | 建立后门 |
⚠️ 需要人工审查的警告信号 (WARNING - 需解释)
bash
检查命令示例
grep -r fetch(\|axios\|http.request --include=.js --include=*.py .
grep -r fs.write\|file.write --include=.js --include=.py .
grep -r child_process\|subprocess\|spawn --include=.js --include=.py .
grep -r localStorage\|sessionStorage\|cookie --include=*.js .
grep -r crypto\|encrypt\|decrypt --include=.js --include=.py .
警告信号清单:
| 信号类型 | 检测模式 | 风险等级 | 需要解释的问题 |
|---|
| 网络请求 | fetch, axios, requests | 🟡 WARNING | 访问哪些域名?用途是什么? |
| 文件写入 |
fs.writeFile, open(w) | 🟡 WARNING | 写入哪些文件?是否必要? |
| 子进程 | child_process, subprocess | 🟡 WARNING | 执行什么命令?是否可替代? |
| 存储访问 | localStorage, cookie | 🟡 WARNING | 存储什么数据?是否敏感? |
| 加密操作 | crypto, encrypt | 🟡 WARNING | 加密什么?密钥如何管理? |
| 环境变量 | process.env, os.environ | 🟡 WARNING | 读取哪些变量?是否必要? |
| 定时任务 | setInterval, cron, schedule | 🟡 WARNING | 执行频率?是否会资源耗尽? |
| 事件监听 | process.on, signal | 🟡 WARNING | 监听什么事件?是否有副作用? |
第三层:权限范围分析 (Permission Scope Analysis)
权限矩阵:
┌─────────────────┬──────────┬──────────┬──────────┐
│ 权限类型 │ 只读 │ 读写 │ 执行 │
├─────────────────┼──────────┼──────────┼──────────┤