AI News HubLIVE
站内改写2 分钟阅读

给你的沙盒代理提供它们无法读取的API密钥

Superserve 发布 Secrets 功能,允许开发者将 API 密钥绑定到沙盒,但密钥的真实值永远不会进入沙盒环境,从而防止代理泄露密钥。

来源Hacker News AI作者: Amit_Patil_010

Superserve 今天发布了 Secrets 功能,这是一项全新的安全机制,旨在解决沙盒化代理中 API 密钥泄露的问题。当开发者将 API 密钥作为环境变量设置到沙盒中时,任何在该沙盒中运行的命令都可以读取它——只需一个 cat 命令,密钥就会暴露。这与将 .env 文件提交到 Git 仓库是同样的错误,只不过现在读取它的是一个指向开放互联网的代理。

Secrets 的工作原理是:你将凭证附加到沙盒,代码像使用普通环境变量一样使用它,但真实值永远不会进入沙盒。代码只能看到一个占位符令牌。当请求离开沙盒时,平台会在出站时将其替换为真实凭证,并且仅针对你允许的主机。这样,即使代理被提示注入攻击,泄露的也只是无用的占位符。

为什么 API 密钥会从沙盒中泄露?通过环境变量传递 API 密钥是给代码提供凭证的常规方式。在你的笔记本电脑上,这没问题:你拥有密钥,并且你编写了代码。但沙盒不同,它运行你不完全信任的代码,并且处理你不控制的输入——例如仓库、网页或支持工单。一旦这些代码能够运行命令并读取实时凭证,一次提示注入就可能演变成密钥泄露。当你在沙盒内运行 Claude Code 或 Codex 等编码代理时,这个问题尤为严重,即使代理停留在你的服务器上,只使用沙盒来执行其工具调用,也是如此。无论如何,模型决定了沙盒内执行的内容。

Secrets 提供了一站式快捷方式,支持模型 API(OpenAI、Anthropic、Google Gemini、xAI、Perplexity、OpenRouter)、开发者工具(GitHub、GitLab、Vercel、Cloudflare、Sentry)、搜索服务(Exa、Firecrawl)以及常用的 SaaS 服务(Slack、Linear、Notion、Asana、Stripe、Resend)。列表持续增长,用户也可以创建自定义密钥,指定自己的请求头或认证方案以及允许的主机。

每个沙盒都是一个 Firecracker 微虚拟机,拥有自己的内核和文件系统,硬件隔离,而非与邻居共享主机内核的容器。真实密钥位于该边界之外,因此即使代码完全控制了沙盒,也无法触及密钥。撤销操作是即时的,并且以失败安全模式进行:删除密钥或沙盒后,占位符停止工作,依赖它的请求会失败,而不会回退到过期的密钥。轮换密钥值后,所有绑定的沙盒继续运行,因为它们从未持有真实值。

每个密钥都有自己的活动日志,记录哪些沙盒绑定到它,以及每次请求的详细信息,包括主机、路径、状态和延迟。当出现异常时,可以快速定位问题。

开发者可以通过一行代码启用 Secrets:将凭证存储一次,然后绑定到沙盒即可。目前已在 console.superserve.ai 上线,并提供了详细的指南。