Anonymous Intelligence Signal
RUSTSEC-2024-0437: protobuf 2.28.0 存在崩溃漏洞,影响依赖链
Rust 安全团队发布关键安全公告 RUSTSEC-2024-0437,指出 `protobuf` 库的 2.28.0 版本存在一个可导致崩溃的漏洞。该漏洞源于解析特定 Protobuf 消息时发生的无限递归,可能引发拒绝服务(DoS)。虽然其严重性被标记为“中等”且并非远程代码执行(RCE),但它直接阻塞了依赖审计和持续集成(CI)流程,迫使相关项目必须采取行动。
受影响的依赖链清晰显示了问题的传导路径:有问题的 `protobuf 2.28.0` 版本被 `prometheus 0.13.4` 所依赖,而后者又被 `dewey 0.1.0` 项目使用。官方建议的修复方案是升级到 `protobuf >= 3.7.2` 版本。然而,由于上游 `prometheus` 库将该依赖固定在 2.x 系列,直接升级存在障碍。这为下游开发者带来了实际的操作压力。
面对这一审计障碍,项目维护者现面临几个选择:一是尝试升级 `prometheus` 到依赖 `protobuf` 3.x 的版本(如果可用);二是彻底切换到不依赖 `protobuf` 的官方 OpenMetrics 实现库 `prometheus-client`;三是在项目的 `Cargo.toml` 中通过 `[patch]` 部分手动指定一个已修复的兼容版本。尽管在 `dewey` 项目的正常使用场景中(不解析不可信的 Protobuf 数据)可能无法直接利用此漏洞,但安全工具的告警使其成为一个必须解决的合规性与供应链风险点。