#51389·arrow

[C++] 哈希冲突 CPU 放大 Schema/StructType 字段名索引

作者: K-ANOY创建于 2026年9月18日更新于 2026年9月18日
标签Type: bugComponent: C++

描述错误,包括有关任何错误消息、版本和平台的详细信息。Arrow 在构建 Schema/SchemaBuilderStructType 时,会从字段名中构建一个字段名 → 索引查找表(std::unordered_multimap<std::string_view, int>)。此映射使用默认的 std::hash<std::string_view>,并且其构建没有字段数的限制。当字段名由攻击者控制时 - 例如,从一个不可信的 Parquet/IPC/Feather 文件中读取的 Schema - 许多不同的名字被选择放入同一个桶中,这使得构建(以及随后的名字查找)的时间接近二次时间。