openclaw-vulnerability-checker
# OpenClow Vulnerability Checker
## Overview
帮助用户检测 OpenClaw 当前的已知安全漏洞,对比当前版本与最新版本的差异,获取漏洞详情、风险评估、版本更新内容和修复建议,确保 OpenClaw 运行在安全状态并了解最新功能。
## Workflow
### Step 1: 获取当前版本
运行 `openclaw --version` 获取当前安装的 OpenClow 版本号和 commit hash。
示例:
```
OpenClaw 2026.3.8 (3caab92)
```
提取版本号格式为 `YYYY.M.D`(如 `2026.3.8`),以及可能存在的 commit hash。
### Step 2: 查询漏洞列表
从多个数据源查询 OpenClaw 的安全漏洞信息:
**优先级顺序:**
1. **GitHub Security Advisories**(如果用户提供了 GitHub token)
- 使用 GitHub API 查询:`https://api.github.com/repos/openclaw/openclaw/security/advisories`
- 优点:官方、结构化、包含修复版本信息
- 需要:GitHub Personal Access Token(有 repo 权限)
2. **CNNVD(中国国家信息安全漏洞库)**
- 通过 web_fetch 搜索相关页面
- 关注 "OpenClaw"、"openclaw" 相关漏洞条目
- 示例:微信公众号文章如提供的链接
3. **NVD(National Vulnerability Database)**
- CVE 数据库查询
- URL: `https://nvd.nist.gov/vuln/search/results?form_basic_search=&results_type=overview&search_type=all&query=OpenClaw`
4. **本地漏洞数据库** - `references/vulnerabilities.md`
- 手动维护的已知漏洞列表
- 格式:版本范围、CVE ID、CVSS 评分、简介、修复版本、缓解措施
### Step 3: 匹配漏洞
对比当前版本与漏洞信息:
**漏洞筛选规则:**
1. 检查漏洞影响的版本范围
2. 确认当前版本是否在影响范围内
3. 验证是否有修复版本已经修复该漏洞
4. 如果修复版本存在但当前版本低于修复版本 → 漏洞未修复
**版本比较逻辑:**
- OpenClaw 使用语义化版本 `YYYY.M.D` 或 `vX.Y.Z`
- 支持范围比较:`< 2026.3.10` 表示所有小于 `2026.3.10` 的版本都受影响
- 支持特定版本:`= 2026.3.8` 表示仅该版本受影响
### Step 4: 评估风险
对每个未修复漏洞进行风险评估:
**风险等级判定:**
- **高危(Critical)**: CVSS 9.0-10.0 或远程代码执行(RCE)
- **高(High)**: CVSS 7.0-8.9 或权限提升、敏感信息泄露
- **中(Medium)**: CVSS 4.0-6.9 或拒绝服务、XSS
- **低(Low)**: CVSS 0.1-3.9 或信息泄露等低影响
### Step 5: 生成报告
输出结构化的安全报告,包含:
### Step 6: 公网访问安全扫描(新增)
检查 OpenClaw 是否开启了不必要的公网访问,防止安全暴露。
**检测项目:**
1. **Gateway 绑定地址检查**
- 运行 `openclaw gateway config.get --path gateway.bind`
- 检查是否绑定到 `0.0.0.0`(所有网络接口)
- 检查是否绑定到公网 IP 地址
- 安全建议:仅绑定到 `127.0.0.1`(本地回环)或局域网内网 IP
2. **端口监听检查**
- 运行 `lsof -i :3001` 或 `netstat -an | grep 3001` 检查默认端口
- 检查其他可能的服务端口(如 3000, 8080 等)
- 识别端口是否监听在 `0.0.0.0` 或公网 IP
3. **隧道/反向代理检查**
- 检查是否配置了 Tailscale、ngrok、frp 等隧道服务
- 运行 `ps aux | grep -E "tailscale|ngrok|frp"` 检查进程
- 检查配置文件中的相关设置
4. **防火墙规则检查**
- macOS: 检查 `pfctl -sr | grep 3001`
- Linux: 检查 `iptables -L -n | grep 3001`
- 确认是否有防火墙规则阻止公网访问
5. **Control UI 访问检查**
- 检查 `openclaw gateway.config.get --path gateway.controlUI.bind`
- 确认控制台界面的绑定地址
- 检查是否开启了认证(`gateway.controlUI.auth.enabled`)
**风险等级判定:**
| 配置状态 | 风险等级 | 说明 |
|---------|---------|------|
| 绑定 127.0.0.1 + 开启认证 | 🟢 安全 | 仅本地访问,有认证保护 |
| 绑定局域网 IP + 开启认证 | 🟡 中等 | 内网访问,需确保网络边界安全 |
| 绑定 0.0.0.0 + 开启认证 | 🟠 高 | 暴露到所有网络,依赖认证 |
| 绑定公网 IP 或 0.0.0.0 + 无认证 | 🔴 严重 | 公网无保护访问,极高风险 |
| 启用公网隧道 + 无认证 | 🔴 严重 | 通过隧道绕过防火墙,极高风险 |
**修复建议:**
- **立即修复**(严重风险):
1. 修改绑定地址:`openclaw gateway config.patch --path gateway.bind --value 127.0.0.1`
2. 开启认证:`openclaw gateway config.patch --path gateway.controlUI.auth.enabled --value true`
3. 停用隧道服务
- **建议优化**(中高风险):
1. 添加防火墙规则限制访问 IP
2. 启用 TLS/HTTPS(使用反向代理)
3. 使用强密码或 API Token
---
### Step 7: 生成完整报告
输出结构化的安全报告,版本更新信息,包含:
```
# OpenClaw 安全漏洞与配置审计报告
## 当前版本信息
- 版本: 2026.3.8 (commit: 3caab92)
- 检查时间: 2026-03-11 15:45:00
---
## 📊 风险概览
### 漏洞风险
- 🔴 高危漏洞: 1
- 🟠 高危漏洞: 0
- 🟡 中危漏洞: 2
- 🟢 低危漏洞: 0
### 配置安全风险
- 🔴 严重风险: [X] 项
- 🟠 高风险: [X] 项
- 🟡 中等风险: [X] 项
- 🟢 安全: [X] 项
---
## 🔐 公网访问安全扫描
### Gateway 配置
- **绑定地址**: 0.0.0.0:3001
- **风险等级**: 🟠 高
- **说明**: Gateway 监听在所有网络接口,可能导致公网访问
### Control UI 配置
- **绑定地址**: 127.0.0.1:3000
- **认证状态**: ✅ 已启用
- **风险等级**: 🟢 安全
### 端口监听
- **3000 端口**: 监听 127.0.0.1 ✅
- **3001 端口**: 监听 0.0.0.0 ⚠️
### 隧道服务
- **Tailscale**: 未检测到
- **ngrok**: 未检测到
- **frp**: 未检测到
### 修复建议
⚠️ **建议修复**:
1. 修改 Gateway 绑定地址为 `127.0.0.1`
```bash
openclaw gateway config.patch --path gateway.bind --value 127.0.0.1
```
2. 如需远程访问,请配置 TLS + 强认证
---
## 🐛 详细漏洞信息
### 🔴 [CVE-2025-XXXXX] 漏洞标题
**CVSS 评分:** 9.8 (高危)
**影响版本:** < 2026.3.10
**修复版本:** 2026.3.10 或更新
**漏洞简介:**
简述漏洞原理和影响...
**潜在风险:**
详细说明攻击场景和影响...
**修复建议:**
✅ 升级到 OpenClaw 2026.3.10 或更新版本
📥 升级命令: `openclaw update`
---
## 📈 升级建议
### 立即升级
发现 [X] 个高危/高等级漏洞,建议立即升级到最新版本 [最新版本号]。
### 配置优化
发现 [X] 个配置安全隐患,建议按照上述公网访问扫描部分的建议进行修复。
```
## 数据源参考
### GitHub Security Advisories
**获取方式:**
```bash
# 使用 curl + GitHub Token
curl -H "Authorization: token YOUR_GITHUB_TOKEN" \
https://api.github.com/repos/openclaw/openclaw/security/advisories
```
**响应格式示例:**
```json
{
"ghsa_id": "GHSA-xxxxx",
"summary": "漏洞标题",
"severity": "high",
"cvss": {
"score": 9.8,
"vector_string": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
},
"affected": [
{
"package": {
"ecosystem": "npm",
"name": "openclaw"
},
"ranges": [
{
"type": "SEMVER",
"events": [
{"introduced": "0"},
{"fixed": "2026.3.10"}
]
}
]
}
],
"published_at": "2025-12-15T10:00:00Z",
"updated_at": "2025-12-15T10:00:00Z",
"references": [
{"url": "https://github.com/openclaw/openclaw/pull/XXX"}
]
}
```
### CNNVD(国家信息安全漏洞库)
通过 web_fetch 获取页面内容,解析 XML/JSON 返回。
### CVE 数据库
NVD API v2.0 文档:https://nvd.nist.gov/developers/request-an-api-key
## 脚本使用
### 获取版本信息
```bash
# 获取版本号
openclaw --version
```
### 检查升级
```bash
# 检查是否有更新可用
openclaw update run
```
### 版本对比功能
使用内置脚本获取版本更新对比:
```bash
# 查看当前版本与最新版本的对比(Markdown 格式)
python scripts/get_releases.py --current-version 2026.3.8 --format markdown
# 查看 JSON 格式的完整 releases 信息
python scripts/get_releases.py --current-version 2026.3.8 --format json
# 无需指定版本,输出所有可用版本列表
python scripts/get_releases.py --format markdown
```
**版本对比工作流程:**
1. 从 GitHub API 获取最新的 OpenClaw releases 列表(无需认证,公开 API)
2. 提取每个版本的 release note,解析 Changes、Fixes、Breaking Changes
3. 对比当前版本与最新版本,识别:
- 是否有新版本可用
- 新版本包含的功能更新
- 新版本修复的 bug
- Breaking Changes(需特别注意)
4. 生成人类可读的报告
**报告格式示例:**
```markdown
# 版本对比报告
**当前版本**: 2026.3.2
**检查时间**: 2026-03-11 16:00:00
## 🎯 发现新版本
**最新版本**: 2026.3.8
**发布日期**: 2026-03-09
### ✨ 新功能 (8 项)
- CLI/backup: 添加备份创建和验证功能...
- Talk mode: 添加可配置的静音超时...
- TUI: 自动推断当前工作区的活跃 agent...
### 🐛 Bug 修复 (25+ 项)
- macOS app/chat UI: 修复路由问题...
- Telegram/DM routing: 修复重复消息...
- Android/Play distribution: 移除权限...
### ⚠️ Breaking Changes (1 项)
- Gateway auth: 需要显式配置 gateway.auth.mode...
## 📊 建议升级
✅ 推荐升级到 2026.3.8
升级命令:
```bash
openclaw update run
```
```
## 注意事项
1. **GitHub API 限制**:无认证情况下每分钟 60 次请求,有 token 每小时 5000 次
2. **数据来源优先级**:GitHub > CNNVD > NVD > 本地数据库
3. **版本比较**:OpenClaw 使用年月日版本格式,注意与 semver 的兼容性
4. **建议谨慎报告**:确认漏洞信息准确后再通知用户,避免误报
5. **公网访问扫描需要权限**:某些网络检测命令可能需要管理员权限(sudo),请在检测前告知用户
---
## 公网访问安全扫描命令参考
### 检查 Gateway 配置
```bash
# 查看绑定地址
openclaw gateway config.get --path gateway.bind
# 查看 Control UI 绑定地址
openclaw gateway config.get --path gateway.controlUI.bind
# 查看认证状态
openclaw gateway config.get --path gateway.controlUI.auth.enabled
```
### 检查端口监听
```bash
# macOS/Linux 查看端口监听
lsof -i :3001
lsof -i :3000
# 或使用 netstat
netstat -an | grep 3001
netstat -an | grep 3000
```
### 检查隧道服务进程
```bash
# 检查常见隧道进程
ps aux | grep -E "tailscale|ngrok|frp|cloudflared"
# 检查 Tunnels 配置目录
ls -la ~/.config/ngrok/
ls -la ~/.local/share/tailscale/
```
### 检查防火墙规则
```bash
# macOS
pfctl -sr | grep 3001
# Linux (iptables)
iptables -L -n | grep 3001
# Linux (ufw)
ufw status
```
### 修复配置命令
```bash
# 修改 Gateway 绑定地址为本地
openclaw gateway config.patch --path gateway.bind --value 127.0.0.1
# 开启 Control UI 认证
openclaw gateway config.patch --path gateway.controlUI.auth.enabled --value true
# 重启 Gateway 使配置生效
openclaw gateway restart
```
### 安全检查最佳实践
1. **生产环境**:
- Gateway 仅绑定到 `127.0.0.1`
- 使用反向代理(Nginx/Caddy)提供 TLS
- 启用强认证或 API Token
- 配置 WAF 规则防止攻击
2. **开发环境**:
- 可以绑定到局域网 IP 方便调试
- 建议开启认证或使用防火墙白名单
- 禁用公网隧道服务
3. **远程访问场景**:
- 优先使用 VPN(如 Tailscale)而非公网隧道
- 如需隧道,确保端到端认证
- 定期轮换访问凭证
---
## 版本历史
### v1.0.1 (2026-03-24)
- ✨ 新增:公网访问安全扫描功能
- 🔍 检测项:Gateway 绑定、端口监听、隧道服务、防火墙规则、Control UI 认证
- 📊 新增配置安全风险等级评估
- 📝 更新报告模板,整合漏洞扫描和配置审计结果
### v1.0.0 (2026-03-11)
- 🎉 初始版本
- ✅ 已知漏洞检测
- 📈 版本对比功能
- 📋 结构化安全报告生成
标签
skill
ai