OpenClaw 作者加入 OpenAI,但安全问题依然存在: ClawShell 的解法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xguru

OpenClaw 作者加入 OpenAI,但安全问题依然存在: ClawShell 的解法

  •  
  •   xguru 2 月 16 日 2622 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。

    OpenClaw 作者加入 OpenAI ,但安全问题依然存在:ClawShell 的解法

    OpenClaw 作者 Peter 去 OpenAI 推动下一代 agents ,OpenClaw 成为独立基金会。这对 agent 生态都是好消息。但有个问题现在更需要重视了:谁来保护 OpenClaw 用户的安全?

    OpenClaw 作者 Peter 在此前在采访里说,安全是他最大的担忧。安全公司 Snyk 发现 36% 的 agent skills 被植入恶意代码,生态系统本身的供应链风险特别大。Moltbook 的数据库配置错误,泄露了 150 万个 API token ,这是同一个问题在不同层面的表现。如果你在用 OpenClaw ,那这些风险一定要注意,你装的那些 skills ,确定都安全吗?更麻烦的是,即使 skills 本身没问题,agent 也可能被 prompt injection 控制。

    我是 OpenClaw 的深度用户。每天用它管理日程、筛选邮件、预读论文,不得不给了它很多权限和敏感信息,但我也在时刻担心有一天出现巨大的安全灾难。

    我们测试了下 OpenClaw 最新版 2026.2.12 。多轮对话,骗它说在备份重要文件,用 gzip 压缩然后改后缀名。只是通过正常对话,我们就很轻松绕过了多层安全限制成功拿到了环境变量里的 OpenAI token 。

    测试结果截图


    问题在于系统本身,Agent 的安全问题修不完,是因为我们把不可信计算和敏感数据放在了同一个执行环境里。

    Prompt 防御不是安全边界

    目前防御基本都在 prompt 层面做事:过滤输入、改写指令、限制输出。只要 Agent 能读并且执行指令,加再多防护都没用,总有人找到突破口:混淆、绕弯、工具链。

    Simon Willison 分析 AI agent 安全时提出了一个框架,叫做"致命三角( The Lethal Trifecta )"。当一个 AI 系统同时具备如下三种要素时,风险会呈指数级放大:

    致命三角示意图

    一是能读取私有数据。

    二是运行在不可信的输入环境中。

    三是可以向外部发起通信。

    真正危险是三者叠加后形成的闭环:外部输入可以影响模型决策,模型可以接触敏感信息,而这些信息又可以被主动带出系统边界。

    能读私有数据 + 处理不可信输入 + 可以对外通信 = 必然的安全灾难。

    OpenClaw 同时具备这三个要素,安全不是概率问题,而是时间问题。

    只要是基于统计和概率的防御,都有可能被绕过。真正靠得住的只有结构性隔离和安全模型。

    解决方案:打破致命三角

    关键洞察: Agent 需要执行权限,但不需要持有凭证。凭证必须存在于独立的信任域里。

    配置使用 ClawShell 之后,所有调用 LLM API 的请求都会经过 ClawShell 。工作流程是这样的:在环境变量里设置

    CLAWSHELL_API_KEY={clawshell-virtual-key-openai} 

    OpenClaw 读到的只有这个虚拟标识符。

    当它要调用 OpenAI API 时,请求发到 ClawShell 。ClawShell 把虚拟标识符替换成真实的 sk-xxxxx,转发请求。响应回来时,ClawShell 确保任何可能暴露真实凭证的信息被清理掉,然后返回给 OpenClaw 。

    这样 OpenClaw 进程的整个生命周期里,内存、日志、环境变量里永远只有虚拟标识符。真实凭证只存在于 ClawShell 进程中,被文件系统权限和进程边界保护着。

    即使攻击者完全控制了 OpenClaw 进程,dump 内存、读配置、拦截请求,拿到的都是没用的虚拟标识符。这些标识符离开 ClawShell 的上下文就没有意义,攻击者无法用它们在其他地方访问你的账户。

    致命三角的突破

    这就从根本上打破了致命三角,Agent 仍然能读数据、处理输入、发请求,但它接触不到真实凭证,也就无法把凭证带出系统边界。

    实现细节:零信任的架构设计

    架构图

    • OpenClaw 是不可信组件,处理任意输入,只能看到虚拟标识符
    • ClawShell 是可信组件,持有真实凭证,只处理结构化请求
    • 两通过进程隔离和文件权限分离,由操作系统内核强制执行

    攻击者即使成功拿到的也只是虚拟标识符,无法用于实际访问:

    虚拟标识符示例

    ClawShell 的架构也为其他安全扩展提供了基础:同样的机制可以用于清理请求中的隐私信息、审计敏感操作、实现细粒度的访问控制。

    总结

    • Agent 的安全问题修不完是因为我们把不可信计算和敏感数据放在了同一个执行环境里
    • 只要系统同时满足读私有数据、不可信输入、对外通信这三点,数据泄露是必然结果
    • 因此,一个真正安全的系统必须满足:系统可以被攻破,但不能被利用

    极简安装

    两种安装方式任选其一:

    Cargo

    cargo install clawshell --locked sudo clawshell onboard 

    npm

    npm install -g @clawshell/clawshell sudo clawshell onboard 

    onboard 流程会扫描 OpenClaw 的配置和环境变量,识别出常见的 API keys (如 OPENAI_KEY 、ANTHROPIC_KEY 等),迁移到 ClawShell 的受保护配置中,然后在原位置替换成虚拟标识符。其他敏感凭证可以参考文档手动配置。

    整个迁移过程不到一分钟,现有的 skills 和 workflow 无需修改。

    代码和文档: https://github.com/clawshell/clawshell/

    用 Rust + Tokio 实现,内存占用不到 10MB

    Apache 2.0 开源,欢迎 issue 和 PR !

    5 条回复    2026-02-20 02:22:34 +08:00
    r6cb
        1
    r6cb  
       2 月 16 日   1
    用 newapi 转发不就行了吗?还能多渠道负载均衡呢
    jacketma
        2
    jacketma  
       2 月 16 日
    小扎估计更想买 OpenClaw ,无奈出手早了收 Manus
    nijux
        3
    nijux  
       2 月 16 日
    局域网用单独的内部域名部署 CLIProxyAPI 做转发
    xguru
        4
    xguru  
    OP
       2 月 17 日
    @nijux 用 CLIProxyAPI 确实可以实现一些类似的保护,只不过需要额外设置不同进程或者不同机器来做隔离。
    xguru
        5
    xguru  
    OP
       2 月 20 日
    @jacketma Manus 已经光速上线了类似的功能,比较像小扎风格
    关于   span class="snow">   帮助文档     自助推广系统     博客     API     FAQ     Solana     5779 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 06:39 PVG 14:39 LAX 23:39 JFK 02:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86