rustsec 6小时前 · 2026-09-29 01:13:57 · 1 阅读
RUSTSEC-2026-0306:faster-hex 的不健全性
报告时间:2026 年 9 月 20 日
发布时间:2026 年 9 月 23 日
包名: faster-hex ( crates.io)
类型:INFO / 无健全性
分类:
关键词: #buffer-overflow #avx2
参考资料:
- https://github.com/nervosnetwork/faster-hex/issues/73
- https://github.com/nervosnetwork/faster-hex/pull/72
- https://github.com/nervosnetwork/faster-hex/pull/74
已修复版本:
>=0.10.1
不受影响版本:
<0.3.0
受影响架构:
x86x86_64
受影响函数
版本:
faster_hex::hex_decode_unchecked
>=0.3.0, <0.10.1
描述
faster_hex::hex_decode_unchecked 是一个安全函数。在 x86 和 x86_64 架构上启用 AVX2 时,hex_decode_avx2 会在 dst.len() >= 32 时持续解码,随后从 src 加载 32 字节,再从 src[32..] 加载 32 字节。该循环对 src 的长度没有 64 字节的强制要求。
调用者可以传入短于 64 字节的 src 和长度至少为 32 字节的 dst。此时 AVX2 加载操作会读取超出 src 边界的数据。
自 0.3.0 版本起,该函数就保持这一实现形式。0.10.0 是最后一个包含无界 AVX2 读取的发布版本。维护者认同此安全通告,并在 0.10.1 中发布补丁(pull request 74):AVX2 循环现在要求执行这些加载前 src.len() >= 64。1.0.0 版本重写了 hex_decode_unchecked,将解码长度设为 min(src.len() / 2, dst.len())。这两个修复均包含在 >= 0.10.1 范围内。其他架构采用标量回退逻辑,不在此安全通告的范围内。
本安全通告在 CC0-1.0 许可协议下提供。
原始来源: rustsec