🦀 Rust 1.94.1:紧急安全更新与多平台回归修复
发布日期: 2026 年 3 月 26 日 官方博客原文: Announcing Rust 1.94.1
一、 综述:此版本的核心价值是什么?
Rust 1.94.1 是紧随 1.94.0 之后发布的一个关键补丁版本。它的目标非常明确:打补丁、堵漏洞。
本次更新主要解决了 1.94.0 引入的三个破坏性回归(Regression),修复了特定操作系统下的构建故障,并------最重要的是------包含了一个针对 Cargo 的安全漏洞修复。
二、 核心修复与安全更新深度解析
1. ⚠️ Cargo 安全修复:防范恶意的 Tar 压缩包
原文参考: Security fix for Cargo (tar crate)
这是本次更新的重头戏。Cargo 在底层使用了 tar crate 来解压依赖包。
- 漏洞细节: 本次更新将
tar升级到了0.4.45版本,修复了 CVE-2026-33055 和 CVE-2026-33056 两个漏洞。这类漏洞通常与"路径穿越(Path Traversal)"有关,恶意构造的 tar 文件可能会在解压时覆盖你系统上的关键文件。 - 影响范围: 官方明确指出,直接使用 crates.io 的用户不受影响(因为官方源有严格的校验机制)。但如果你的项目配置了不受信任的第三方 Git 仓库或自定义注册表作为依赖源,则面临被攻击的风险。
2. 修复 WebAssembly 多线程创建失败
相关目标平台: wasm32-wasip1-threads
- 问题背景: WebAssembly 的 WASI 规范正在积极推进多线程支持。但在 1.94.0 中,如果开发者尝试在这个平台上调用
std::thread::spawn创建新线程,程序会发生错误。 - 修复意义: 1.94.1 修复了这一回归问题,让 Wasm 前沿开发者可以继续安心进行并发编程的探索。
3. Windows API 撤回:移除未密封的 OpenOptionsExt 方法
相关 API: std::os::windows::fs::OpenOptionsExt
这是一个非常经典的 Rust API 设计教训:
- 问题始末: 在 1.94.0 中,官方为 Windows 特有的
OpenOptionsExtTrait(特征)添加了几个新的不稳定方法。但是,这个 Trait 是**未密封(Unsealed)**的,意味着任何开发者都可以在自己的代码里为自定义类型实现这个 Trait。 - 导致后果: 在未密封的 Trait 中添加没有默认实现的新方法,是一个破坏性变更(Breaking Change)。因为那些自己实现了该 Trait 的第三方代码会突然因为"缺少实现的方法"而编译失败。
- 解决方案: 官方迅速移除了这些新方法,维持了向后兼容性。
4. 工具链修复:Clippy 与 Cargo 依赖
- Clippy 崩溃修复: 修复了在使用
match_same_arms(检测match语句中是否有相同的处理分支)规则时,导致编译器内部崩溃(ICE, Internal Compiler Error)的 Bug。 - 修复 FreeBSD 证书验证错误: 部分 FreeBSD 操作系统的用户在 1.94.0 中使用 Cargo 下载依赖时,会遇到 TLS 证书验证失败的问题。官方通过将 Cargo 底层的
curl-sys依赖紧急**降级(Downgrade)**到0.4.83版本,恢复了 FreeBSD 用户的网络访问。
三、 总结与建议:开发者需要立即升级吗?
升级指南
运行以下命令即可快速安全地获取补丁:
bash
rustup update stable
强烈建议升级的人群:
- 安全至上的企业用户: 只要你的 CI/CD 流程中包含拉取和构建外部 Rust 依赖,就应该为了 CVE 漏洞修复而升级,消除潜在的供应链攻击风险。
- FreeBSD 开发者: 如果你因为证书问题被卡住了构建,这个版本是你的救星。
- Wasm 多线程探索者: 修复
std::thread::spawn能让你继续你的工作。
对于其他普通的 Windows/Linux/macOS 开发者来说,虽然影响不大,但为了避免碰到 Clippy 的 ICE 崩溃,也建议顺手更新一下。