Chrono 0.4依赖旧time crate触发漏洞,能否忽略cargo audit告警?
关于Chrono 0.4.22依赖time 0.1.44的漏洞告警处理建议
问题背景
我正在用Rust开发应用,使用带Chrono(0.4.22)特性的PostgreSQL客户端连接池做日期时间计算,Cargo.toml配置如下:
[dependencies] postgres = {version = "0.19", features = ["with-chrono-0_4"]} chrono = "0.4" chrono-tz = "0.6"
运行cargo audit后触发RUSTSEC-2020-0071漏洞告警,原因是Chrono依赖旧版本time crate(0.1.44):
# cargo audit Fetching advisory database from `https://github.com/RustSec/advisory-db.git` Loaded 458 security advisories (from /root/.cargo/advisory-db) Updating crates.io index Scanning Cargo.lock for vulnerabilities (138 crate dependencies) Crate: time Version: 0.1.44 Title: Potential segfault in the time crate Date: 2020-11-18 ID: RUSTSEC-2020-0071 URL: https://rustsec.org/advisories/RUSTSEC-2020-0071 Solution: Upgrade to >=0.2.23
该漏洞CVSS评分为6.2(中等)。
官方相关说明
在Chrono项目的官方讨论中提到:
出于兼容性原因,此版本尚未移除time 0.1依赖,但chrono 0.4.20并未使用time 0.1.x版本中的脆弱部分。在未来的0.5版本中,我们将移除time依赖。
用户疑问
- 这是否意味着可以安全忽略
cargo audit的这条告警? - 执行
cargo update后,chrono已升级到0.4.22,但仍依赖time 0.1.44,能否将上述官方说明作为审计报告的依据?
处理建议
- 可以安全忽略这条告警:Chrono 0.4.20及后续版本(包括你使用的0.4.22)并未调用time 0.1.44中存在漏洞的代码路径,不会受到该segfault漏洞的影响。
- 上述官方说明可作为审计报告的依据:这是Chrono维护团队给出的明确结论,直接证明了当前使用的Chrono版本不存在该漏洞的利用风险。
额外注意:
- 后续升级到Chrono 0.5版本时,time 0.1依赖会被移除,届时这条告警会自动消失。
- 若后续你的代码中直接引入了time 0.1.44的使用,需要重新评估风险。
内容的提问来源于stack exchange,提问作者Code4R7
相关产品推荐
相关产品推荐

