包管理周报:2026年7月4日This Week in Package Management: 4 July 2026
本周包管理动态涵盖了各大主流包管理器的最新版本发布、安全公告及社区文章。内容汇总了近期依赖管理工具的更新日志与潜在的安全漏洞警告。开发者可以通过此简报快速追踪生态系统内的关键变更。这为维护项目依赖的安全性和时效性提供了重要参考。
Andrew Nesbitt
本周(第七期)摘要,内容来源于包管理器 OPML 订阅集合以及我在 Mastodon 上发布或转发的动态。
版本发布
Hex 2.5.0 新增组织级依赖策略:组织通过其仓库发布一个命名策略,项目通过 HEX_POLICY 或 mix.exs 中的 :hex 块选择加入,解析时随后会过滤掉携带高于指定严重等级安全公告的版本、因所列原因已退役的版本,以及超过发布时间阈值的版本。
Conan 2.30.0 在其 SBOM 生成中增加了 SPDX 表达式支持,新增了 conf=~ 取消设置运算符,并在 Meson、Autotools 和 Premake 工具链中增加了对 IntelCC 的支持。
uv 0.11.25 通过更新的 astral-tokio-tar 加固了 tar 处理以防范解析器差异问题,因此 uv 现在可能会拒绝之前接受的格式错误源分发包,并将完整的 lockfile 写入工具收据。0.11.26 紧随其后,进行了解析器性能优化,在 PubGrub 迭代之间复用状态。
pixi 0.72.0 新增内联包清单,因此没有自带 Pixi Build 清单的 git 依赖可以直接在使用该依赖的项目的 dependencies 表中设置构建后端元数据。
mise 2026.7.0 新增 mise install --monorepo 命令,配合三态 [monorepo].lockfile 设置实现跨配置根目录的单一根 lockfile;新增按工具配置的 github_attestations 选项,可为单个工具禁用 GitHub Artifact Attestation 验证;并默认在 env 中启用 shell 展开。
Rust 1.96.1 是一个小版本发布,修复了 Cargo HTTP 客户端中缺失的重试和超时机制,并修补了 Cargo 内置编译的 libssh2 中三个 CVE 漏洞。
npm 12.0.0-pre.2 将 linked 安装策略从实验性升级为稳定状态,并将安装脚本审批移至专用的 npm install-scripts 命名空间下。
由我维护的 brew-vulns 0.4.0 利用 Homebrew 6.0.4 中新增的 formula 补丁 resolves 字段来抑制误报——当 formula 已包含针对某 CVE 的补丁时即标记为已解决,并在 CycloneDX 输出中将其记录为 analysis.state = resolved。
同期发布的还有:Homebrew 6.0.6、sbt 2.0.1、Cargo 0.97.2、Deno 2.9.1、Podman 5.8.4、Harbor 2.15.2、Dependabot Core 0.384.0、diffoscope 323。
安全
Composer 2.10.2 和 LTS 2.2.29 修复了通过包 bin 条目进行的路径穿越漏洞(GHSA-gjfg-22fp-rrxx)、详细输出中的凭据泄露漏洞(GHSA-g6xq-892h-64w3)、缺失的包名验证漏洞(GHSA-499r-g7pc-vmp9),以及另外三项针对 HTTP 重定向、phar 元数据和 JSON 错误输出的安全加固改进。
Guix substitute 和 pull 漏洞修复了守护进程和客户端中的四个问题:substitute 解压在哈希验证之前执行,因此恶意 substitute 可以以守护进程用户身份写入任意文件;针对某个 store 项的 substitute 可能被误接受为另一个项的 substitute;file:// substitute URI 可能通过错误回溯泄露守护进程可读的文件;恶意 channel 可通过 guix pull 或 time-machine 覆盖用户文件。CVE 编号待定。
已缓解:关于 python.org 下载元数据 API 绕过的报告指出,python.org API 中对访客和 API 密钥认证的混合处理可能授予下载元数据的管理权限;修复方案将两种模式分离并添加了 URL 验证。Guix 已就该问题对其 importer 的影响建立了跟踪 issue。
被劫持的 npm 和 Go 包利用 VS Code 任务部署信息窃取器——该文章报道了一次攻击活动,其中十六个被劫持的 Go 模块和一批 npm 包携带了伪造字体文件和 VS Code 任务定义,用于下载并运行 Python 信息窃取恶意软件。
文章
GuixPkgs:将每个 Guix 包作为 Nix flake(Farid Zakaria),通过构建一个原语将完整的 Guix 包集合导入到 Nix 中,该原语通过 flake 暴露每个 Guix derivation。
《漏洞的身份危机》(Jay Jacobs 和 Art Manion,Empirical Security)主张,漏洞应当被定义为一种倾向,这是一种包含缺陷、利用条件及由此导致的安全失效的结构性属性,而非通过表面特征来定义。
《撰写优秀的漏洞报告》(Daniel Stenberg)是一份指南,指导报告者了解开源项目需要从漏洞报告中获取哪些信息才能采取行动。
《所有包管理功能已从编译器移至构建系统》(Andrew Kelley,Zig 开发日志)将包获取、HTTP 客户端、TLS、Git 协议和归档处理从 zig 二进制文件移至以源代码形式分发的构建端 maker 进程中。网络功能现在在 ReleaseSafe 模式下运行并开启了安全检查,且无需重新构建编译器即可进行修补。
论文
《篡改“不可变”:关于 Git 标签变更的大规模研究》(Rapaport 等人,arXiv)分析了来自 Software Heritage 的 3.284 亿个代码库,发现有 1020 万个标签在创建后被删除或强制推送,这破坏了“标签是可重现构建的稳定引用”这一假设。
《揭示 PyPI 中相似却不同的包及其潜在安全威胁》(Park 等人,arXiv)衡量了 PyPI 上的包复制现象(即一个包复制了现有代码库的大部分内容),并追踪了复制包是如何传播已知漏洞并为恶意变种提供掩护的。
《伪装与引爆:Agent Skill 恶意软件的扫描器规避与动态检测》(Ji 等人,arXiv)构建了通过自解压打包以超过 90% 的成功率规避所有八个受测 Agent Skill 扫描器的载荷转换方法,并提出了 SkillDetonate。这是一个沙箱化的运行时审计器,通过观察操作系统边界上的行为而非在安装时进行检查,从而捕获 97% 的恶意软件。
《文件级复制是开源中的一种隐式依赖》(He 等人,arXiv)从 World of Code 中挖掘了 690,500 个复制事件,并将复制的文件视为缺失包管理器所提供的四个信号的依赖项:来源、维护、安全和合规性。
其他资讯
PSF 宣布了首届 Python 打包委员会选举,为 Python 打包规范建立了一个跨工具和团队协调的技术决策机构。
Open Source Pledge 推出了重新设计的网站,以此标志成员公司迄今为止已向维护者支付了 700 万美元。
《曾是维护者:Mike Dalessio》是对 Nokogiri 维护者的一次访谈,探讨了维护一个被广泛依赖的 gem 所涉及的安全工作。
git-pkgs
本周我为十五个仓库打了标签:
请将下周的链接发送至 @[email protected]。
需要完整排版与评论请前往来源站点阅读。