近一周我连续收到好几条求助,都是同一类问题:自己或同事部署的OpenClaw实例被陌生会话登录了,有的连API密钥都被人拷走。起初我也觉得只是个例,但排查过程中看到的痕迹基本一致——不是人工手动点的,而是脚本化扫描后的批量命中。结合威胁情报平台和几个活跃安全社群的讨论,方向已经比较明确:攻击者正在全网扫描配置不当的OpenClaw服务,批量窃取配置文件里的登录凭证和密钥,然后尝试远程接管这些AI Agent实例。受影响实例很可能已经数以万计。这篇文章会完整拆解这次风险的形成链条——OpenClaw配置为什么成了突破口,登录凭证是怎么被批量偷走的,以及从自查到加固的完整操作。不贩卖焦虑,只想帮正在用、准备用的人把安全账补上。
1. OpenClaw攻击面全景:为什么这次不是普通漏洞通告
1.1 OpenClaw 的部署模型与配置落点
先简单说下OpenClaw是什么。它本质上是AI Agent类的工具,能按自然语言指令工作,替你读写文件、执行Shell命令、调用API、操作Git仓库,甚至通过配置接入飞书这类通讯软件收发任务消息,也可以对接外部模型服务,比如配置NVIDIA NIM或自定义中转站。你可以把它理解成一个高权限的自动化管家:它能干很多事,但也意味着如果门没锁好,进来的人能直接在你的机器上为所欲为。
它的配置和数据主要落在几个地方:
- 主配置目录,Linux和macOS下通常是
~/.openclaw/,Windows下是C:\Users\<用户名>\.openclaw\ - 命令执行审批文件
exec-approvals.json,记录哪些命令会被自动放行 - workspace 目录,Agent读写文件的默认工作区
- 日志与会话数据
- 环境变量或配置文件里存放的API凭证
这些文件本身并不是秘密,问题是大量部署教程根本没提权限和鉴权。用户按教程跑起来就用,默认监听地址、默认目录权限、默认审批策略,等于给攻击者留了一条不需要暴力破解就能进来的路。
1.2 “数万实例”不是夸大:是谁把攻击面铺大的?
从威胁情报视角看,这次影响面之所以大,几个因素叠加在一起。
第一,OpenClaw的部署门槛比过去低。流行的安装方式包括PowerShell脚本、便携包、云端一键部署。脚本执行完就算装好了,但很多脚本只保证了软件能跑,并没有做端口绑定、防火墙策略、鉴权配置。热词里你能看到大量“openclaw安装”“openclaw部署”“如何在云端部署openclaw”“powershell安装openclaw”这类搜索,说明涌入的新手开发者非常多,他们大多只关心能不能跑起来。
第二,大量“配置教程”和“调校包”在加速风险扩散。市面上出现了不少非官方渠道的配置包、第三方配置源、Skill市场里的免费技能,这类内容通常能提升功能,但没人审查它们会不会在配置里夹带后门,或者诱导用户把审批策略改成全自动放行。我见过某个“已更新”的配置源说明,里面最重要的一句提示不是“请做好密钥隔离”,而是“下载后放这里就能用”。这种操作方式就是在给攻击者送入口。
第三,使用场景让它更危险。很多人不止在本地跑,还把OpenClaw部署到云服务器、内网机器、备机上,为的是随时访问、远程调度、接到飞书机器人做自动化。云端部署意味着公网可达;就算部署在内网,如果开机自启、端口未限制,同一个局域网里的其他设备也可能访问到。
第四,使用者群体以个人开发者、研究人员、项目管理者为主,安全意识和投入普遍有限。最常见的情况是:一个人负责把功能跑通,没人负责安全基线。
1.3 攻击者眼中的OpenClaw价值排序
攻击者为什么对OpenClaw感兴趣,不是因为它本身是明星产品,而是因为它能连接外部世界。拿到一个失控的OpenClaw实例,相当于拿到了:
- 一台能执行任意命令的机器
- 一个能读取代码仓库和文档的入口
- 一个可能存有云厂商AK/SK、数据库密码、第三方Token的保险柜
- 一个可以对外发起请求的跳板
- 一个能横向进入内网的节点
- 一个可被滥用的AI API额度,甚至可能被用于发送钓鱼消息
这也是为什么“远程接管”对攻击者有真实价值。普通服务器被攻破后,攻击者可能只是拿到一台“资源机”;OpenClaw被接管后,攻击者拿到的是一个能自主行动的Agent身份,它可以在你毫无感知的情况下持续产生命令、读写文件、调用外部服务。对攻击者来说,控制一个Agent比控制一台空置的服务器划算得多。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从配置失守到凭证失窃:一次完整的攻击链推演
2.1 第一步:配置信息怎么“出的网”
要批量窃取凭证,攻击者必须先拿到配置文件。注意,不是所有攻击都像电影里那样先攻破防火墙才叫入侵,更多时候是配置自己把自己暴露了。
路径一:服务监听在公网且无鉴权。很多云端部署教程会让用户直接跑默认启动命令,服务默认绑定到 0.0.0.0,配合云厂商安全组放行端口,
