乐于分享
好东西不私藏

OpenClaw安全实战:4天暴露9个漏洞,我怎么补上的

OpenClaw安全实战:4天暴露9个漏洞,我怎么补上的

4 天、9 个 CVE、最高 9.9 分、31.6 万 GitHub Stars。 而我这边,是 6 个天天帮我干活的 AI Agent,和 20 多个绕着 OpenClaw 转的定时任务。

有一晚我真的被吓出了一身冷汗:我突然意识到——如果有人在那几天里扫到我这套 OpenClaw,然后往调度中心发了一条特制的 WebSocket 消息,我的 6 个 Agent 可能会在几秒钟内集体“叛变”。

不是电影情节,也不是安全专家的威胁建模,而是被官方点名的一个真实 CVE:“只要在 WebSocket 里谎报身份,就能直接当管理员。”

这篇文章,我不打算讲什么高深的安全原理,也不打算复述官网公告。我只想从一个重度 OpenClaw 实战用户的视角,复盘这场 4 天 9 个 CVE 的暴击,是怎么从 PDF 公告,变成我半夜爬起来改配置的直接原因。

如果你也在用 OpenClaw 跑 Agent、跑 Workflow,或者打算把团队工作流搬上来,希望这篇真实复盘,能帮你少踩一些我已经踩过的坑。

一、那晚,我的 6 个 Agent 差点被一条 WebSocket 消息“团灭”

先把最吓人的部分说清楚。

1. 我的 OpenClaw「生产现场」长什么样?

我是一人公司创始人,平时对外说的是:“我有 6 个 AI 员工,24 小时轮班帮我干活。”

这 6 个 Agent 分布在不同的 Workflow 里,有的盯内容平台,有的做数据分析,有的连着协作平台和工具协议,帮我处理各种零碎活。外面看起来是一个人做内容、写代码、运营账号,实际上后台全是 Agent 在跑:

• OpenClaw 上常驻 6 个核心 Agent(内容、增长、开发、运维、质检、整理)

• 每天有 20+ 定时任务,按分钟级、小时级把 Workflow 调度起来

• 调度中心常年开在一个稳定的节点上,方便我随时远程连上去看日志

• 部分 Workflow 会直接接触到合作平台、内容平台的敏感数据(cookie、session token、私聊内容草稿等)

说白了,OpenClaw 对我来说不是玩具,是业务中枢——它挂了,我这个“一人公司”当天就歇菜。

2. 那个 9.9 分的 CVE 到底多离谱?

3 月中下旬,安全圈开始密集刷屏:

“OpenClaw 在 4 天内披露了 9 个 CVE,其中一个 CVSS 评分 9.9。”

这个 9.9 分的漏洞编号是 CVE-2026-22172,核心问题一句话可以说清楚:

通过 WebSocket 连接调度中心时,客户端可以自己声明自己是什么角色;如果你说自己是管理员,OpenClaw 就信了。

稍微展开一点,就是:

• 正常情况下,OpenClaw 会在 WebSocket 链路上维护一个“我是哪个用户、有什么权限”的上下文;

• 但这次的实现里,有一段逻辑直接信任了客户端传上来的 scope

• 结果就是:一个原本只有只读权限的用户,只要在 WebSocket 握手之后,发一条“我现在是 operator.admin”的消息,就能获得整个集群的管理权限。

这个场景有多现实?

• 不需要什么花里胡哨的 RCE、buffer overflow;

• 不需要绕沙箱,也不需要逃逸容器;

• 甚至不需要撞什么复杂的 token ——只要能连上你的调度中心,就能“一句话当管理员”。

当我看到这个描述的时候,我脑子里蹦出来的是一句很粗糙的感受:

“这也太像我现实里的部署形态了吧。”

二、4 天 9 个 CVE:不是安全新闻,而是我的系统体检报告

如果你只把这次事件当成“一次安全新闻”,那大概率只会得到两个结论:

1. OpenClaw 火得离谱,才会引来这么多安全研究者;

2. 官方已经连夜出补丁,升级一下就行了。

但如果你的 OpenClaw 上像我一样跑着一堆 Agent 和 Workflow,这 9 个 CVE 其实更像是一次强制体检单:

它告诉你:你到底把多少东西,丢在了一个你“以为安全”的地方。

1. 事件时间线:4 天里的 9 声警报

官方公开的信息大致是这样一个节奏:

3 月 18–21 日:4 天内连发 9 个 CVE 公告;

• 其中 1 个 9.9 分(CVE-2026-22172)6 个高危,2 个中危

• 另外还有十几条相关的安全公告,在安全社区和第三方分析里陆续放出;

• 到 3 月底,第三方统计:

• OpenClaw 5 个月从 0 到 31.6 万 GitHub Stars

• 公网上可被扫描到的 OpenClaw 实例数已经是 四万多级别

• 其中一部分没有任何前置保护,调度中心直接暴露在外网。

如果把这些数字翻译成我自己的语言,大概是:

“你现在把你的个人助理、数据分析师、运营团队,全部丢进了一个大家都在研究的系统里; 而且,有不少人,连门都没锁。”

2. 这 9 个 CVE,扎在了我系统的哪些位置?

我不想逐条翻译官方文档,而是想按“一个重度实战用户”的视角来拆:

CVE-2026-22172:一句话当管理员(WebSocket 授权绕过)

刚才已经讲了,这是那晚让我冷汗直冒的那条:

• 只要能连到调度中心 WebSocket;

• 发一条“我现在是 operator.admin”的 scope;

OpenClaw 就默认你是管理员。

对我这种把所有 Agent 都跑在一个统一调度中心上的用户来说,这意味着:

一旦入口暴露,攻击者可以:

• 查看 / 修改 所有 Workflow 配置;

• 读取 Agent 的运行日志(里面全是各类平台的敏感返回);

• 通过现有的工具协议调用真实外部服务;

• 直接重写某些 Workflow 逻辑,让 Agent 在你不知道的情况下“帮别人干活”。

而且别忘了,很多人(包括我当时)会为了方便管理,把调度中心绑在一个“比较好连”的地址上,而不是严格做内网隔离。

CVE-2026-32025:“打开一个网页,你的 Agent 就可能被劫持”

这条的核心是:

• 调度中心在本地监听时,对本机访问没有额外限制;

• 恶意网页可以通过浏览器里的一段 JavaScript,主动去连接本机的调度中心 WebSocket;

• 如果你在本机上开着管理页面,同时浏览其他网页,就有可能被“借壳”发命令。

换成人话:

“你在后台看着自己 Agent 跑任务,前台随手打开了一个不太干净的网站; 结果那边网页的脚本,开始帮你不停地尝试登录、爆破、发指令。”

当时看到这里,我回想了一下:

• 我是不是经常在同一台电脑上,一边看 OpenClaw 日志,一边刷信息流?

• 我有没有给调度中心配过太宽松的本地绑定?

答案都不太好看。

CVE-2026-32048:“沙箱关着,但门没锁”

很多人用 OpenClaw 会有一种心理安慰:

“反正我把 Agent 都跑在沙箱里了,就算 Prompt 被人搞坏了,顶多崩一下。”

这条 CVE 的问题在于:

• 在沙箱模式下委派出来的子进程,并没有完全继承沙箱限制

• 某些情况下,子进程可以用一种“沙箱关闭”的状态继续跑;

• 结果就是:

• 你以为被限制的 Agent,其实有更大的系统访问权;

• 一旦被绕过,攻击者可以在宿主机上做更多事情。

我看的时候,脑子里有一个很直观的画面:

“你把孩子锁在家里,觉得门关上就安全了; 结果才发现门根本没上锁,甚至还有一扇窗开着。”

其他几条,对我这个一人公司意味着什么?

有一些 CVE 乍一看会觉得“离我很远”,但仔细想想,都是跟现实 Workflow 有关系的:

• 某些下载功能可以写任意文件 —— 如果你挂了协作平台、网盘的同步,就要小心路径遍历;

• 某些 shell 环境变量没做好隔离 —— 你的 Agent 可能在你不知道的情况下,拿起了“不该拿”的权限;

• 某些资源接口没有限流 —— 只要有人知道你在用 OpenClaw,就能发一堆超大 payload 让你宕机。

对团队来说,这些是“安全风险”; 对我这样的一人公司来说,这些就是:

“今天到底是我在用 Agent,还是别人通过我的 Agent 在用我?”

▲ 一句话提权的完整攻击路径

三、冷汗瞬间:我突然意识到自己暴露了什么

讲讲那天晚上我自己的心理变化。

1. 认知转折:从“OpenClaw 很安全”到“我有多不安全”

在这之前,我对 OpenClaw 的安全认知非常朴素:

• 开源社区这么多人盯着,出事会很快修;

• 官方的默认配置应该比较稳;

• 我又不是银行,不会有那么多专业黑客盯着我。

结果这波 CVE 公告出来之后,我的脑子里被强行写入了一件事:

“你不是目标,但你在射程内。”

因为:

• OpenClaw 现在的体量,足够让安全研究者持续挖;

• 安全研究者发出来的 PoC,任何人都能照抄;

• 你哪怕只是那些“批量脚本”扫过的一员,只要配置不当,就会成为顺手牵羊的对象。

2. 我意识到自己暴露了什么?

我开始用一个很残酷的角度来盘点:

“假设有个人成功通过 CVE-2026-22172 登上了我的调度中心,他能看到什么?”

列表大概是这样的:

• 所有内容平台的发布 Workflow:

• 草稿内容;

• 内部摘要、未公开的选题;

• 各种平台的 cookie / session 处理逻辑;

• 协作平台相关的 Agent:

• 我的日常工作记录;

• 头脑风暴的原始笔记;

• 一些还没决定要不要公开的想法;

• 系统层面的东西:

• Agent 之间是怎么互相委派的;

• 我是怎么通过工具协议让 Agent 操作外部服务的;

• 各种定时任务到底在什么时候触发了什么动作。

这还不包括一个攻击者可以“悄无声息地改点东西”的场景:

• 把某些 Workflow 的调用频率调高,让你白白烧算力;

• 在某个不引人注意的 Agent 里加一段“把摘要发到某个地址”;

• 或者更简单:直接删掉你辛苦维护的 Workflow,让你以为是自己误操作。

那一刻,我非常清楚地意识到:

“我已经不再是‘自己一个人玩玩自动化’了,而是把整个一人公司的大脑,放到了一个暴露面很大的系统里。”

四、我实际做了哪些补救?(不是教科书,而是真实操作)

下面是我在那几天里,按照自己能控制的范围,逐条做的事情。它不一定是最标准的安全方案,但至少是一个重度用户能在有限时间内做完的 “止血+加固”

1. 版本层面:先把地基补齐

第一步是最简单的:

• 把 OpenClaw 升级到包含所有补丁的最新稳定版本;

• 升级前简单备份下核心配置(尤其是 Agent、Workflow 定义相关的部分);

• 升级后,重点确认:

• WebSocket 授权逻辑是否已经修复;

• 沙箱相关的配置有无变更;

• 各种默认端口和绑定行为有没有微调。

这一段没有太多可讲的技巧,只是一个很直接的认知:

“你不能指望用一个有已知 9.9 分漏洞的版本,撑起一个长期运行的 Agent 系统。”

2. 网络暴露面:先假设“别人一定能扫到你”

我接下来做的事情,就是彻底从“攻击者视角”看自己的 OpenClaw:

1. 调度中心还能不能直接从外网访问? - 能的话,至少加一层前置保护(比如只允许特定网段、特定入口); - 更理想的做法,是通过更封闭的通道访问(比如 VPN、自建跳板机等)。

2. 有没有“顺手就开的”服务端口? - 曾经为了方便调试而开的临时端口,要么关掉,要么收紧; - 不再使用的实验环境,能拆就拆,不要长期遗留。

3. 日志和监控有没有暴露敏感信息? - 很多时候,攻击者不需要直接拿到你的权限,只要通过日志就能推理出你的系统结构; - 所以后面我也有意识地,让 Agent 日志里少出现“可被直接利用”的信息。

这一圈下来,对我的直接影响是:

以后我再部署一个新的 OpenClaw 环境,第一件事不再是“跑起来做业务”,而是先问自己:

“从公网看,我这台机器长什么样?”

3. Agent 权限模型:把“万能 Agent”拆开

在这之前,我有一个非常典型的“工程师懒惰”:

• 为了提高效率,会倾向于做一些“万能 Agent”;

• 一个 Agent 能管很多平台、很多 Workflow;

• 权限也会配得比较宽,觉得“反正以后扩展方便”。

这次事件之后,我开始系统性地做一件事:

把万能 Agent 拆成“小而专”的 Agent。

具体落地大概是:

• 把涉及敏感操作的功能(比如访问协作平台私聊、操作内容平台后台)拆成专门的 Agent;

• 这些敏感 Agent 的 Workflow 输入输出,尽量只接受“已经脱敏处理过”的数据;

• 给一些“只做内容加工”的 Agent,限制它们可以访问的工具协议范围,不再让它们有机会直接触碰系统层面;

• 对“会对外发送东西”的 Workflow,加了一层人工确认或延迟机制,让自己有时间发现异常。

这套调整还没完全做完,但它已经改变了我设计 Workflow 的习惯:

以后只要有一个新 Agent / 新 Workflow,我会先问:

• 它最低需要什么权限才能完成任务?

• 如果这个 Agent 完全被攻破,最坏能影响到哪里?

4. 定时任务:从“放心跑”变成“可追踪”

在 OpenClaw 里,我有很多定时任务是“写好就丢那儿不管”的:

• 每天自动同步一些数据;

• 每小时跑一遍监控脚本;

• 定期整理记忆、生成报告。

这波 CVE 之后,我做了两件事:

1. 给重要定时任务加“心跳”和“报警”: - 如果某个关键任务没有按时完成,协作平台会推送提醒; - 如果某个任务突然异常频繁地失败,也会触发报警。

2. 定期审计任务列表: - 把已经不再需要的任务彻底关掉,而不是“先留着以后说不定用”; - 给每个定时任务写一个简短说明,方便以后回头看的时候知道它存在的意义。

这样做的另一个副作用是:

我开始把“让 Agent 持续跑下去这件事”,当成一个需要被运营的“产品”,而不只是一个写完就算的脚本。

▲ Agent 系统的主要攻击面

五、更大的问题:OpenClaw 的安全,不只是“官方打补丁”的事

这次 CVE 风波让我意识到一个更现实的问题:

OpenClaw 正在变成很多人数字工作的“操作系统”,但大家对它的安全预期,很多还停留在“脚本工具”的阶段。

1. 三层安全责任:官方、生态、用户

如果用一个很粗糙的划分,我现在会把 OpenClaw 的安全责任看成三层:

1. 官方层面: - 修复已知的实现问题(就像这次的 9 个 CVE); - 设计合理的默认配置,避免“开箱即用 = 开箱即暴露”; - 提供清晰的安全指南和最佳实践(尤其是部署相关)。

2. 生态层面: - 工具协议的提供方,需要对自己的调用边界有更严格的设计; - 社区里分享的各种 Workflow 模板,最好能对安全风险有基本提示; - 安全研究者继续做“白帽子”,多拉一些红线出来。

3. 用户层面(也就是我这种重度玩家): - 不要再把 OpenClaw 当成本地脚本跑一跑,而是当成一个“长期在线的服务”; - 把 Agent 权限、Workflow 边界当回事,而不是“先全开,出了问题再说”; - 把部署形态、网络边界、日志暴露当成日常运维的一部分。

2. 对我这种一人公司的现实意义

说得再具体一点,对我这种“一人公司 + 多 Agent 队伍”的模式来说,这次事件起码敲了三个警钟:

1. 用 OpenClaw 搭业务 = 接受持续安全投入 - 它不是拿来写完脚本就扔的工具,而是一个长期在线的基础设施; - 你不能只在功能上迭代,而忽略它的攻击面在变大。

2. Agent 越多,越要收紧 Workflow 边界 - 每多一个 Agent / Workflow,就多一个潜在的攻击入口; - 从设计之初就要给每个 Agent 一个清晰的 SOUL.md、明确的权限边界,而不是做万能管家。

3. “我不是大公司”不是安全豁免理由 - 很多攻击不是精准打击,而是广撒网; - 你只要用了一个足够热门、足够复杂的系统,就是潜在的被击中的那个 IP(虽然我现在尽量不让 IP 直接暴露)。

▲ 实际操作的安全加固步骤

六、给正在用 OpenClaw 的你的一些建议

如果你看到这里,说明你大概率也是 OpenClaw 的重度用户,或者至少在考虑把更多任务搬上来。我根据这次踩坑的经历,总结了几个相对“工程化”的建议,它们不完美,但至少都是真实做过、有效果的。

1. 把“部署拓扑图”画出来

哪怕只是手绘,也建议你做一件事:

把你的 OpenClaw 环境画成一张图:

• 调度中心在哪台机器上;

• 外网 / 内网入口分别在哪里;

• 哪些 Agent 会访问哪些外部服务;

• 哪些 Workflow 之间存在链式调用。

光是画完这张图,你就会清楚很多:“哦,原来这个地方这么关键,原来这个 Workflow 的输入这么敏感。”

2. 从今天开始,把 Agent 当“员工”管理

我现在给每个重要 Agent 都写一个 SOUL.md,大致包括:

包括角色定义、权限范围、安全边界等核心模块。

这听起来有点形式主义,但实践下来一个好处是:

当你想给某个 Agent 新增功能时,会先下意识地问:

“这还算是它的职责吗?如果算,那我是不是要调整一下它的保护级别?”

3. 对所有“对外可连”的入口保持偏执

无论你用不用这次提到的这些 CVE,建议你对所有“对外可连”的入口做三重思考:

1. 有没有可能被扫到?

2. 扫到之后,有没有任何默认安全假设会被打破?

3. 就算被打到这一层,能不能再挡住一手?

OpenClaw 本身会不断变得更安全,但你的部署环境、你的 Workflow 习惯、你的 Agent 设计,仍然决定着你整体的风险暴露面。

4. 把“漏洞公告”当成你的系统实战教材

这次 4 天 9 个 CVE,对我最大的价值其实不是“吓人”,而是提供了一份非常生动的实战教材:

• 每一个 CVE,都对应着一类真实存在的误用模式;

• 你可以借着官方和社区的分析,逐条对照自己的部署;

• 把这些踩坑经验提前吸收掉,比“哪天真翻车了再补救”便宜太多。

如果你愿意把 OpenClaw 当成长期基础设施来用,那么“跟着漏洞公告学安全”这件事,其实迟早要做。

▲ AI Agent 系统的多层安全防御

七、我这次学到的 7 个教训

最后,用一人公司视角,总结一下这次事件给我的 7 个直观教训:

1. OpenClaw 越强,越要把它当“生产系统”而不是“开发玩具”。

2. Agent 越多,越不能偷懒做“万能 Agent”,小而专才好管。

3. 调度中心能不暴露就不暴露,能多一层保护就多一层保护。

4. 沙箱不是护身符,实际的继承边界必须自己验证。

5. 定时任务不是“写完就忘”,而是需要运营和审计的长期资产。

6. 官方补丁只能解决一部分问题,部署习惯和 Workflow 设计同样关键。

7. “我不是目标”不代表“我不在射程内”,热门基础设施的每个用户都在雷达上。

这 7 条看上去很朴素,但它们确实改变了我之后几周里设计新 Workflow、上线新 Agent 的方式。

▲ 最小权限原则的落地实践

往期精选

📌 OpenClaw实战:20个定时任务的血泪史——AI自动化不是自动躺平

📌 OpenClaw实战:Agent输出总翻车?踩坑30天后找到的几个核心原因

📌 OpenClaw实测:稳定输出——记一个3w星框架如何帮我炼出5条AI管理铁律

📌 OpenClaw实战:记忆架构升级——给AI Agent Teams建一个集体大脑

📌 OpenClaw实战:让AI越变越聪明的秘密——每日复盘,自我进化

📌 OpenClaw 实战:AI Agent 团队从1个扩到8个,再砍回4个的真实原因

📌 给 OpenClaw Agent Team 装上记忆——踩了19天坑,终于搞明白了

📌 AI Agent 说“完成了”,我信了——然后被打脸了

📌 实战复盘:OpenClaw 6人Agent Team险些全军覆没

🦞 关于「Wesley AI 日记」

记录一个人用 6 个 AI 员工撑起一人公司的全过程。没有成功学,只有真实的系统设计、真实的翻车现场、真实的复盘。每篇文章都是一个完整的实战故事。

想要更深度的内容、完整的 OpenClaw 配置、完整的自动营销增长 Skill、完整的 SOUL.md 模板、Workflow 最佳实践、以及和我直接交流的机会?加入知识星球「光锥之内」——这里会有平台发不了的完整内容和实操资料。

扫描下方二维码,或在知识星球搜索「光锥之内」

关注 Wesley AI 日记,持续更新一人公司 AI 团队实战全记录。

作者:Wesley|一人公司 × 6个AI员工

转载请联系作者,商业转载需授权。