支持运行时解析的存储支持的秘密,而不保留明文

作者: roninjin10创建于 2026年7月18日更新于 2026年9月17日
标签SecurityVulnerability

环境说明

  • Microsandbox 运行时和 Go SDK:v0.6.6
  • 下游提供商:使用 GitHub.com/superradcompany/microsandbox/sdk/go v0.6.6 的 Plue Go Microsandbox 工作程序
  • Spike 主机:Apple Silicon 上的 macOS 26.2(arm64),Go 1.26.5,原生 HVF 运行时
  • 拒绝是在共享 Rust SDK 核心中发生的,在执行虚拟机特定代码之前,因此也适用于 KVM 主机。

最小重现

创建一个沙箱,然后请 Go SDK 计划一个由公共 Store 源支持的秘密:

bash
msb create alpine --name store-source-repro
mkdir store-source-repro && cd store-source-repro
go mod init store-source-repro
go get GitHub.com/superradcompany/microsandbox/sdk/[email protected]
go
package main
import (
	"context"
	"fmt"
	"log"
	microsandbox "GitHub.com/superradcompany/microsandbox/sdk/go"
)
func main() {
	ctx := context.Background()
	handle, err := microsandbox.GetSandbox(ctx, "store-source-repro")
	if err != nil {
		log.Fatal(err)
	}
	plan, err := handle.Modify(ctx, microsandbox.ModifyOptions{
		DryRun: true,
		Secrets: map[string]microsandbox.SecretModifySpec{
			"IRON_CAPABILITY": {
				Store:        "file:///run/iron-capabilities/workspace-repro",
				Placeholder:  "$IRON_CAPABILITY",
				AllowedHosts: []string{"iron.internal.example"},
			},
		},
	})
	if err != nil {
		log.Fatal(err)
	}
	for _, conflict := range plan.Conflicts {
		fmt.Println(conflict.Message)
	}
}
go run . 打印:
```text
secret IRON_CAPABILITY: store-backed secret sources are not supported yet

内容来源: superradcompany/microsandbox