OpenClaw被称为安全"垃圾场",但有办法保持安全

Snyk工程师扫描发现OpenClaw市场超过7%的技能存在暴露敏感凭据的缺陷,会导致API密钥、密码等明文传输。文章介绍了Deno Sandbox作为安全解决方案,通过轻量级Linux微虚拟机运行不可信代码,提供隔离保护。作者演示了如何使用Deno部署环境,包括密钥混淆和替换功能,确保敏感数据在沙盒中得到保护。

本年2月,Snyk工程师在博客中表示,他们扫描了整个ClawHub(OpenClaw市场)并发现超过7%的技能包含会暴露敏感凭据的漏洞。他们报告称:"这些都是功能性的、受欢迎的智能体技能,指示AI智能体错误处理机密信息,强制它们将API密钥、密码甚至信用卡号码以明文形式通过大语言模型的上下文窗口和输出日志传递。"

好的,正如我们之前报道的,我们知道OpenClaw目前在安全方面确实是个"垃圾场"。

我之前研究过Deno,它将TypeScript作为一等公民对待。我忍不住注意到他们最近沙箱更新中的这个细节:

你不希望在服务器上直接运行不可信代码(由你的大语言模型、用户的大语言模型生成,甚至是用户手写的代码)。这会危害你的系统,窃取你的API密钥,并调用恶意网站。你需要隔离。

Deno沙箱为你提供轻量级Linux微虚拟机(运行在Deno Deploy云中)来运行不可信代码,具有深度防御安全性。

好的,沙箱并不新鲜,但Deno的部署环境引起了我的注意。

距离我上次写关于Deno和TypeScript的文章已经有一段时间了,所以在查看新的沙箱功能之前,我会快速回顾我的示例,确保我还记得一切。

让我们在Mac上安装Deno。幸运的是,这看起来和以前一样。

和之前一样,Deno正确检测了我的shell。重启后,我检查了一切是否正常。

我不是TypeScript专家,但在那篇文章中,我写了一些代码来说服自己TypeScript只是查看内容的等价性。

让我们像上次一样使用项目初始化器来运行TypeScript测试。

我用上面的驱动方法示例替换了main.ts,并运行它。

所以Deno将我的TypeScript作为一等对象处理,并证明它是一个结构化类型系统。但让我们进入正题,登录到Deno本身。

在使用沙箱之前,我们需要通过一个小的验证环节。

别担心——它只是检查你的信用卡是否存在,使用方便的StripeLink,它会像钓鱼请求一样出现在你的手机上。现在我们可以设置了——我将跟随右列的代码集成。

现在,我们面临着将身份连接到请求的典型问题。你可以直接在代码中创建沙箱,这很不错——但首先,我们需要一个令牌。

所以我将创建一个组织令牌来将我的身份连接到Deno。我按照上面面板的建议安装了SDK,并使用漂亮的蓝色按钮创建了一个令牌。这里有一个小抱怨是"访问令牌"、"组织令牌"和"部署令牌"这些术语似乎可以互换使用。

好的,在我的shell中设置了DENO_DEPLOY_TOKEN环境变量后,我们应该准备好运行一些代码并在Deno的云上创建我们自己的沙箱。

我将以下代码保存为main.ts。我假设await是某种promise,因为这显然是异步代码。

记住为了证明这发生了,Deno必须保留沙箱的记录,即使它已经过期。由于我们处理的是安全解决方案,我们确实需要告诉Deno我们乐意使用正确标志的网络。

好的,根据语句的调用方式,这似乎有效。更好的证明必须来自沙箱在我记录中的出现。

我们可以从仪表板上一个不错的可过滤事件日志中看到实例的更多细节。

好的,那很好。我在笔记本电脑上写了一些代码,并在Deno云上的沙箱中运行了它。但我们需要做更多的事情来避免数据泄露的恐怖。

什么是数据泄露?当然,我可以举一个流行多人游戏的例子(你知道它们,或者你不知道),其目的就是作为游戏服务器中的化身出现,窃取东西,然后逃脱。这在现实生活中也可能意外发生;当媒体设法看到政治家在私人会议中做的笔记,只是自信地走到外面,暴露了他们持有的笔记时,你就见过这种情况。在这种情况下,政治家误解了他们的安全边界——或者从未使用过相机的变焦功能。

这不是一篇安全文章,我也不是Bruce Schneier——但你明白了。你不希望在舒适的沙箱中运行捕获并逃脱机密信息的代码。对抗这种情况的一种方法是限制出口点,另一种方法是在私人数据驻留在沙箱内时对其进行混淆。这就是Deno所说的机密编辑和替换。

配置的机密永远不会进入沙箱环境变量。相反,Deno Deploy替换它们,只有当沙箱向批准的主机发出出站请求时才会显示它们。

我会部分展示这个过程。我们可以很简单地设置一个机密,以及它将被显示的批准主机:

这意味着Deno将混淆它在我笔记本电脑中找到的环境密钥,但将其发送到Anthropic,只有在离开沙箱后才会显示。

我不会在沙箱中真正调用大语言模型(我当然可以,因为我可以通过CLI访问沙箱并让它持续我需要的时间),但我会在我的笔记本电脑环境中设置一个机密,就像我会做的那样。

修改代码后,我运行代码并查看沙箱中机密的值是什么。

如我所说,为了完全证明这一点,我必须用我的密钥联系Anthropic来证明这个过程——但我会把这留给你。

我只关注一个方面,混淆,但你也可以同样轻松地控制允许的出站地址。我们已经看过Deno Deploy服务的其他方面。

显然,时机再好不过了。随着生成的和不可信代码的指数级增长(尽管人们希望信任它们),这种类型的服务是黄金。我相信它很快就会出现在不同的服务中。

Q&A

Q1:什么是OpenClaw的安全问题?

A:OpenClaw被称为安全"垃圾场",Snyk工程师扫描发现超过7%的技能包含暴露敏感凭据的漏洞,会错误处理API密钥、密码和信用卡号码等机密信息。

Q2:Deno沙箱如何保护不可信代码的执行?

A:Deno沙箱提供轻量级Linux微虚拟机运行在云端,通过隔离环境和深度防御安全性来安全执行不可信代码,防止系统被攻击和API密钥被窃取。

Q3:Deno的机密编辑和替换功能是如何工作的?

A:配置的机密不会进入沙箱环境变量,Deno会对其进行混淆处理,只有当沙箱向批准的主机发出请求时才会显示真实的机密信息。

来源:The New Stack

0赞

好文章,需要你的鼓励

2026

03/16

10:29

分享

点赞

邮件订阅