
外部精选
软件工程
#开发者实时流Show HN 项目 Tar-minefield 揭示解压 tar 文件比想象中更复杂
来源标题:Show HN: Tar-minefield – extracting tar files is harder than you think
开发者发布 Tar-minefield 项目,指出解压 tar 文件远比想象中复杂。该项目用默认策略测试了 Spack、nixpkgs、Guix 等来源的 82,586 个发布 tar 文件,接受率约 99.80%,其余 168 个被拒绝并列出原因。同一压缩包在不同实现下解压结果可能不同,例如两个 pax 头同名文件时,Python 和 Java 取第一个,而 GNU tar、7-Zip、Go 等取第二个。
Hacker News 最新stabbles2026/11/7 · 今天7 分钟阅读
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
- 一个上限。确切比例可能更低,尚待对所有 tarball 进行一次新的扫描。 默认策略接受 Spack、nixpkgs、Guix 和 live-bootstrap 的 82,586 个不同发布 tarball 中的 99.80%,以及 PyPI、crates.io 和 RubyGems 的样本。查看它拒绝的 168 个 tarball 列表及原因。 按成员 mtime 中位数排列的 tarball,粗略检查数据是否跨越足够多的年份,排除了 14,361 个因可复现性而固定 mtime 或缺失 mtime 的 tarball: 1981–1989:1 个 tarball 1990–1991:2 个 tarball 19901992–1993:4 个 tarball 1994–1995:18 个 tarball 1996–1997:10 个 tarball 1998–1999:34 个 tarball 2000–2001:64 个 tarball 20002002–2003:148 个 tarball 2004–2005:283 个 tarball 2006–2007:286 个 tarball 2008–2009:662 个 tarball 2010–2011:956 个 tarball 20102012–2013:1,751 个 tarball 2014–2015:3,847 个 tarball 2016–2017:6,008 个 tarball 2018–2019:8,440 个 tarball 2020–2021:10,896 个 tarball 20202022–2023:12,704 个 tarball 2024–2025:14,107 个 tarball 2026–2027:7,966 个 tarball 动机示例¶ 用例归档文件各实现的处理结果 N09同一个文件有两个 pax 头,path=first 和 path=secondGNU tar、BusyBox、7-Zip、node-tar、tar-fs、Go、R 和 Julia 提取 second;Python 和 Java 提取 first;PHP、RubyGems、Perl 和 live-bootstrap 提取 header-name,即 ustar 头中的名称;bsdtar、Rust、.NET 和 Haskell 拒绝它 S10一个指向 target 的符号链接 a,然后一个文件 a大多数实现用该文件替换链接;Python 的 tarfile 和 live-bootstrap 通过链接写入 target;7-Zip、.NET 和 Haskell 拒绝它 K01一个名为 a/ 的常规文件GNU tar、bsdtar、BusyBox、7-Zip、node-tar、Java、Perl 和 live-bootstrap 创建一个目录 a;Python、Go、Rust 的 tar 和 astral-tokio-tar、PHP 的 PharData、RubyGems 和 R 创建一个空文件 a;tar-fs、.NET、Haskell、Julia 和 tar-codec 拒绝它 F12大小字段为 000000 1000,带一个空格GNU tar、BusyBox、7-Zip、node-tar、tar-fs、Perl、Haskell、Julia 和 live-bootstrap 读取为 0,并在数据中发现夹带的第二个文件;R 读取为 512,并将其作为 a 的数据提取;bsdtar、Python、Go、Rust、Java、.NET、PHP 和 RubyGems 拒绝它 贡献¶ 本项目正在寻找从事包管理器、注册中心和 tar 实现工作的人参与贡献,形式可以是 GitHub 上的 issue 或 pull request 讨论,或发送邮件至 harmen at stoppels dot ch,以便默认策略的工作草案能够成为参考。 你也可以通过测试其他实现,或构造一个特别难以解析的 tarball 来贡献。对于展示尚未披露漏洞的案例,会先私下报告:参见 SECURITY.md。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。