OpenClaw 安全问题与解决方案

Zane
10 min read
#OpenClaw#安全#AI
OpenClaw 安全问题与解决方案

OpenClaw 很好用,但它有一个特点你必须提前了解:它运行在你的本地机器上,拥有文件系统访问权限,还会向外部 API 发送请求。这三件事加在一起,如果配置不当,就会带来真实的安全风险。

值得注意的是,2026 年国家网安中心已就 OpenClaw 相关使用发布风险提示,百度百科的 OpenClaw 词条 也收录了官方安全说明,建议在部署前阅读。

这篇文章不是要吓你。OpenClaw 本身设计得相当谨慎,大多数漏洞来自用户操作失误,而不是软件本身的缺陷。但「OpenClaw 安全」这个话题值得认真对待,尤其是在你用它处理真实项目代码的时候。

我们从最高频的问题开始说起。


1. API 密钥泄露:最常见的 OpenClaw 漏洞

OpenClaw 需要连接到 AI 服务,这意味着你要配置 API 密钥。很多人第一次设置时,会直接把密钥写进配置文件或者粘贴到项目目录里,然后不小心把这个文件推送到 GitHub。

这是 OpenClaw 问题里最典型的一种,后果也最严重:密钥一旦公开,攻击者会在几分钟内发现并滥用。

正确做法:始终使用环境变量。

在你的 shell 配置文件(~/.zshrc~/.bashrc)里设置:

export ANTHROPIC_API_KEY="your-key-here"
export OPENAI_API_KEY="your-key-here"

或者在项目根目录创建 .env 文件,并立刻把它加到 .gitignore

# .env
ANTHROPIC_API_KEY=your-key-here
OPENAI_API_KEY=your-key-here
# .gitignore
.env
.env.local
.env.*.local

永远不要把 .env 文件提交到版本库。没有例外。

如果你已经不小心提交了密钥,处理步骤是:立刻去 API 提供商的控制台撤销那个密钥,生成新密钥,然后用 git filter-branch 或 BFG Repo-Cleaner 清除历史记录。仅仅删除文件然后再提交是不够的,历史记录里还有。


2. ClawHub 技能安全:安装前先审查

ClawHub 是 OpenClaw 的技能市场,里面有几千个社区贡献的技能。大多数没问题,但你在安装前应该做基本的审查,因为技能本质上是在你机器上运行的代码。

安装前检查这几点:

首先,看作者信息。官方认证的作者和有发布历史的账号比匿名新账号可信度高。

其次,看安装量和评分。一个安装量只有个位数、上传时间是三天前的技能,需要更仔细审查。

第三,直接看源码。ClawHub 的大多数技能都是开源的,点进去看看它在做什么。特别注意这几类操作:

// 警惕这类权限请求
{
  "permissions": {
    "fileSystem": "write",
    "network": "unrestricted",
    "shell": "execute"
  }
}

如果一个技能请求「不受限的网络访问」或者「shell 执行权限」,而它的功能描述只是「帮你格式化代码」,这个不匹配就是红旗。

关于推荐的安全技能,可以参考这篇文章:OpenClaw 最佳 Skills 推荐。里面列出了经过验证的常用技能,省去你自己筛选的时间。


3. 文件系统权限:控制 OpenClaw 能访问什么

OpenClaw 默认可以读取它被打开的目录下的文件。这通常够用,但如果你在一个大型 monorepo 里工作,或者项目目录里有敏感文件,你应该明确限制它的访问范围。中文社区的 X 讨论中有用户提到「洗机」风险(即权限配置不当导致整机文件被扫描),这类案例集中在没有配置 blockedPaths 的场景下,r/LocalLLaMA 上也有相关安全担忧的讨论线程。配置好访问范围是防范这类风险的第一步。

在 OpenClaw 的配置文件里,你可以设置允许访问的路径:

{
  "fileAccess": {
    "allowedPaths": [
      "/Users/yourname/projects/my-app/src",
      "/Users/yourname/projects/my-app/public"
    ],
    "blockedPaths": [
      "/Users/yourname/projects/my-app/.env",
      "/Users/yourname/projects/my-app/secrets",
      "/Users/yourname/.ssh"
    ]
  }
}

blockedPaths 里应该包含:

  • 所有 .env 文件
  • SSH 密钥目录(~/.ssh
  • 包含数据库连接字符串的配置文件
  • 任何包含生产环境凭证的目录

即使你设置了允许路径,也要养成习惯:不在包含敏感文件的目录下直接打开 OpenClaw。把工作目录和凭证目录物理隔离是最简单的防护。


4. 网络安全:API 调用的代理配置

OpenClaw 向 AI 服务发送的请求包含你的代码片段和对话内容。在某些网络环境下,你可能需要通过代理设置来路由这些请求,或者需要对请求内容有更多控制。

OpenClaw 支持代理配置:

{
  "network": {
    "proxy": {
      "http": "http://proxy.yourcompany.com:8080",
      "https": "http://proxy.yourcompany.com:8080",
      "noProxy": ["localhost", "127.0.0.1", "internal.yourcompany.com"]
    },
    "timeout": 30000,
    "retries": 3
  }
}

如果你在企业环境里使用 OpenClaw,IT 部门可能要求所有外部请求通过审计代理。这个配置就是用来满足这类需求的。

另外,注意 noProxy 列表。本地服务和内网地址应该绕过代理直接访问,否则会造成不必要的延迟甚至连接失败。


5. Docker 沙箱:更安全的代码执行环境

如果你用 OpenClaw 执行 AI 生成的代码(而不只是让它帮你写代码),Docker 沙箱是一个值得考虑的选项。

核心思路是:让 AI 生成的代码在一个隔离的容器里运行,而不是直接在你的宿主机上执行。即使代码有问题,破坏范围也被限制在容器内部。

基础配置如下:

# Dockerfile.openclaw-sandbox
FROM node:20-alpine

# 创建非 root 用户
RUN addgroup -S sandbox && adduser -S sandbox -G sandbox

# 设置工作目录
WORKDIR /workspace

# 只挂载必要的目录
COPY --chown=sandbox:sandbox . /workspace

USER sandbox

# 限制网络访问(根据需要调整)

在 OpenClaw 配置里启用 Docker 执行:

{
  "execution": {
    "sandbox": "docker",
    "dockerImage": "openclaw-sandbox:latest",
    "mountReadOnly": true,
    "networkMode": "none"
  }
}

networkMode: "none" 会完全切断容器的网络访问,适合只需要本地计算的场景。如果代码需要访问网络,改为 bridge 并配置防火墙规则。

Docker 沙箱会增加一些延迟,但对于安全要求较高的场景,这个代价是值得的。


6. 敏感数据处理:防止 AI 读取凭证

这个问题比你想象的更微妙。OpenClaw 在理解上下文时,会读取你工作目录里的文件。如果你的项目里有包含真实数据的测试 fixture,或者你在对话里粘贴了数据库查询结果,这些内容会被发送到 AI 服务。

几个实用建议:

用假数据替代真实数据。 测试 fixture 和 seed 文件里不应该有真实的用户数据、真实的 API 密钥或真实的业务数据。

在对话里用占位符。 如果你需要展示一个 JSON 结构,用这样的格式:

{
  "userId": "user_xxxx",
  "apiKey": "[REDACTED]",
  "email": "user@example.com"
}

而不是直接粘贴真实值。

设置上下文白名单。 在 OpenClaw 配置里,你可以指定哪些文件类型会被自动读入上下文:

{
  "context": {
    "includeExtensions": [".ts", ".tsx", ".js", ".jsx", ".json", ".md"],
    "excludePatterns": [
      "**/.env*",
      "**/secrets/**",
      "**/*.key",
      "**/*.pem",
      "**/credentials*"
    ]
  }
}

excludePatterns 用 glob 语法,确保凭证文件永远不会被自动包含进上下文。


7. 定期更新:修补已知漏洞

OpenClaw 的更新日志通常包含安全修复,但很多用户装好之后就不再更新。这是个坏习惯。

检查当前版本:

openclaw --version

通过 npm 更新到最新版:

npm update -g openclaw

或者如果你用的是 brew:

brew upgrade openclaw

建议每隔两周检查一次更新。如果有 OpenClaw 漏洞被公开披露,通常会在几天内发布补丁版本,这时候要立刻更新。

ClawHub 的技能也需要定期更新。进入 OpenClaw 的技能管理界面,检查有没有待更新的技能,安全相关的修复通常会在更新说明里标注。


常见 OpenClaw 问题排查

除了上面的安全配置,这里列几个用户经常遇到的 OpenClaw 问题及解决方法。

问题:OpenClaw 无法连接到 API

先检查 API 密钥是否正确设置,然后检查网络连接。如果你在企业网络里,可能需要配置代理设置(见第 4 节)。

# 测试 API 连接
openclaw test-connection

问题:技能安装失败

通常是网络问题或者 npm 权限问题。

# 检查 npm 权限
npm config get prefix

# 如果前缀是系统目录,考虑使用 nvm 管理 Node 版本

问题:文件访问被拒绝

检查你的 allowedPaths 配置,确认目标目录在允许列表里。同时检查操作系统级别的文件权限。

问题:响应速度变慢

可能是代理配置问题,也可能是上下文文件太多导致每次请求的 token 数量过大。检查 excludePatterns 配置,排除不需要的文件类型。


安全配置检查清单

在把 OpenClaw 用于真实项目之前,过一遍这个清单:

  • API 密钥存储在环境变量里,不在配置文件里
  • .env 文件已加入 .gitignore
  • blockedPaths 包含所有凭证和密钥文件
  • ClawHub 技能安装前已检查权限请求
  • excludePatterns 排除了 .env* 和凭证文件
  • 测试数据使用占位符,不含真实用户数据
  • OpenClaw 版本保持最新
  • 高安全要求场景启用了 Docker 沙箱

关于安装和基础配置,参考这篇文章:OpenClaw 完全安装指南 2026。安全配置需要在安装完成后才能生效,如果你还没装好,先从那里开始。

OpenClaw 的设计思路是让开发者有控制权,安全配置也是这个思路的延伸。花半小时把上面这些配置做好,之后就不用再担心了。