HackerNews 编译,转载请注明出处:
广泛使用的 Python JSON Logger 库中披露的一个漏洞,通过依赖链缺陷,暴露了约 4300 万个安装,使其面临潜在的远程代码执行(RCE)攻击风险。该漏洞编号为 GHSA-wmxh-pxcx-9w24,CVSS v3 严重程度评分为 8.8/10,源于一个未注册的依赖项(”msgspec-python313-pre”),攻击者可能利用它劫持软件包安装。
安全研究员 Omnigodz 发现,攻击者可能利用此漏洞在使用受影响版本(3.2.0 和 3.2.1)日志工具的系统中执行任意代码。维护者在研究员通过 GitHub 安全咨询程序负责任地披露问题后,发布了修复版本 3.3.0。
该漏洞是一个典型的依赖混淆攻击案例,攻击者利用软件供应链中的漏洞。Python JSON Logger 的 pyproject.toml 配置文件包含一个名为 msgspec-python313-pre 的可选开发依赖项,用于 Python 3.13 兼容性。然而,由于原始维护者删除了该包,其名称在 PyPI 上未注册,形成了命名空间真空。
如 Omnigodz 的概念验证研究所示,任何 PyPI 用户都可以声明被遗弃的包名并发布恶意代码。当开发者在 Python 3.13 环境中通过 pip install python-json-logger[dev] 安装日志记录器的开发依赖项时,包管理器会自动获取攻击者控制的 msgspec-python313-pre(如果存在于公共存储库中)。研究人员通过临时注册一个良性版本的包(v0.0.0.1)确认了这一攻击路径,但没有证据表明在漏洞窗口期间发生了恶意利用。
根据 PyPI 的 BigQuery 计量,Python JSON Logger 每月下载量超过 4600 万次,其广泛采用放大了此漏洞的潜在影响。成功利用该漏洞将通过 RCE 能力授予攻击者完整的系统控制权,根据 CVSS 计量标准,这将危及机密性、完整性和可用性。这种攻击只需要较低的复杂度——只需在 PyPI 上发布一个恶意包——但取决于受害者是否在启用了开发依赖项的情况下使用 Python 3.13,这在 CI/CD 管道和开发人员工作站中是一种常见配置。
值得注意的是,尽管一个月前的缓解提交(1ce81a3)从项目的源代码中移除了有问题的依赖项,但该漏洞仍然存在。因为这个修复直到 3.3.0 版本才被包含在官方的 PyPI 发布中,所以所有使用标准包管理流程的安装仍然处于脆弱状态。这凸显了在开源维护周期中,将存储库更新与 PyPI 包发布同步的关键需求。
Python JSON Logger 的维护者通过两项并行措施解决了该漏洞:
- 发布了 v3.3.0,完全消除了 msgspec-python313-pre 依赖项。与 Omnigodz 协调转移了争议软件包名称的所有权,有效防止了命名空间劫持。
安全团队建议立即使用 pip install –upgrade python-json-logger==3.3.0 升级至 v3.3.0。无法立即更新的组织应审核其 Python 环境。
“开发人员必须将依赖项视为攻击面,”Omnigodz 在他们的会议论文中指出,“特别是那些可选的依赖项,尽管具有完整的执行权限,但它们经常逃脱安全扫描器的检测。”
根据 ESET 的 2025 年威胁报告显示,供应链攻击正以每年 78% 的速度增长。该漏洞突出了 Python 生态系统在平衡可用性和安全性方面面临的持续挑战。尽管尚未有任何数据泄露事件与此具体漏洞相关联,但其发现促使主要开源社区重新审视依赖管理实践。
消息来源:Cybersecurity News;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文