Skip to content2026.05.18 发布 v0.2.2
🛡️ 安全修复
hypervisor:vmm-sys-util 升级到 0.12.1(CVE-2023-50711,GHSA-875g-mfp6-g7f9):FamStructWrapper::deserialize 未验证头部长度与可变数组长度,允许从安全 Rust 代码进行越界内存访问。现在固定为所有其他 hypervisor crate 共享的工作区版本。agent / hypervisor:bytes 和 env_logger 安全升级,作为同一批依赖刷新的一部分。- 回退
time crate 升级(CVE-2026-25727):CubeSandbox 仅使用 Rfc3339 进行出站时间戳格式化,从不解析不受信任的 Rfc2822 输入 —— 受影响的攻击向量不可达。升级在等待 MSRV 升级期间回退,将单独跟踪。
🛠️ 关键修复
- 修复重复模板镜像任务创建(
CubeMaster):request_id 列上的唯一索引 (request_id, operation) 使任务提交幂等,防止并发或重试 API 调用导致的重复构建任务。 - 修复
cubecli exec stdin EOF 时的 nil 解引用 panic:StdinCloser.Read 在 stdin EOF 时触发空指针解引用,静默中止 exec 生命周期。使用 errors.Is(err, io.EOF) 修复以实现正确的错误包装兼容性;shim 日志现在发出预期的配对 exec 生命周期条目。 - 修复 PVM 模板的 ext4 产物运行时文件物化:
RefreshArtifactRuntimeFiles、validateArtifactRuntimeFilesPresent 和 ensureArtifactRuntimeFiles 简化为仅处理内核文件;copyKernelFileAtomically 重命名为 CopyFileAtomically 以便在包外重用。
✨ 增强功能
- E2B 兼容默认暴露端口:默认沙箱暴露端口更改为 49983 以匹配 E2B 沙箱协议。
CubeMaster 现在是唯一真实来源 —— 从 Cubelet 和 network-agent 中移除硬编码默认值。 cubelet:通过存储插件 TOML 配置可配置 cmdTimeout:新的可选 cmd_timeout 字段替换硬编码的 3 秒默认值,让运维人员可以为多 GiB ext4 操作提高限制而无需重新编译。字段不存在时默认行为不变。cubelet:newExt4RawByReflinkCopy 失败时更丰富的诊断:错误消息现在包含耗时、文件大小和可用空间 —— 例如 [step=N/4 cmd="…" elapsed=…ms target=size=… base=size=… free=…B]。- 部署:从
.env 同步 CubeMaster 自定义端口:cubemaster.yaml 现在使用环境变量模板。