存在 15 年未被修补的 Python 漏洞,影响超 35 万个项目
安全公司 Trellix 的研究人员 Kasimir Schulz 发现了一个很容易被开发人员忽略的路径遍历(path traversal)漏洞,使得攻击者能够访问文件系统。经过进一步分析后,他发现这是一个早在 2007 年就已经披露过的 Python tarfile 包中的漏洞 CVE-2007-4559;产生于使用未经处理的 tarfile.extract() 函数或 tarfile.extractall() 的内置默认值的代码中。
该漏洞已有 15 年的历史,自 2007 年 8 月首次报告以来,其相关的技术细节也一直存在可用。但目前却从未收到过任何补丁,唯一提供的缓解措施是警告开发人员有关风险的文档更新。官方 Python 文档明确警告称“切勿在未经事先检查的情况下从不受信任的来源提取档案”。BleepingComputer 指出,虽然没有关于该漏洞被用于攻击的报告,但它仍代表了软件供应链中的一个风险。
Trellix 研究人员指出,该漏洞已存在于成千上万的开源/闭源项目中。他们抓取了一组 257 个更有可能包含易受攻击代码的存储库,并手动检查了其中的 175 个以查看它们是否受到影响。结果表明,其中 61% 的项目存在漏洞;在对其余的存储库进行自动检查后,受影响的项目数量增加到了 65%,表明了问题的普遍存在性。
然而,这个小样本集仅作为估算 GitHub 上所有受影响的存储库的基准。“在 GitHub 的帮助下,我们能够得到一个更大的数据集,包括 588,840 个在其 Python代码中包含'import tarfile'的独特仓库”。
基于手动验证的 61% 的漏洞率,Trellix 估计有超过 35 万个易受攻击的存储库,其中许多被用于帮助开发人员提升效率的机器学习工具(如 GitHub Copilot)使用。这种自动化工具依赖于来自数十万个存储库的代码来提供“auto-complete”选项。如果他们提供不安全的代码,问题就会在开发人员不知情的情况下传播到其他项目。
易受 CVE-2007-4559 攻击的开源代码“跨越了众多行业”。其中,受影响最大的是开发部门,其次是网络和机器学习技术。
Trellix 方面为 11,005 个存储库提供了补丁程序:在受影响的存储库的分支中提供,并可通过拉取请求添加到主项目中。由于受影响的存储库数量众多,研究人员预计在接下来的几周内将继续这一修补工作。“预计这将影响所有易受攻击项目的 12.06%,到完成时将超过 7 万个项目。这是一个很大的数字,但绝不是 100%,因为所有的 Pull Request 都必须要被项目维护者接受”。
BleepingComputer 已联系 Python 软件基金会就 CVE-2007-4559 发表评论,但在发布时尚未收到答复。
更多详情可查看完整报告。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
开源世界当中到底存不存在 “白嫖”?
作者:tison 开源软件不是凭空出现的,开发开源软件是一项艰苦卓绝的工作。每个开源软件的背后少则有原作者一人的投入,多则协同了成千上万人组成的开源社群的共同努力。然而,开源软件的源代码总是免费可得,并且开源软件协议总是不限制用户的使用形式。 基于开源软件完成工作乃至搭建业务盈利的用户,并不总是参与软件开发的人,这种形似经济学中“搭便车”的行为,在国内被提及的时候总会被称为“白嫖”,以至于后者称为圈内的一个热词。那么,开源世界当中到底存不存在“白嫖”,不同角色眼中的“搭便车”行为到底是怎么样的?本文将对此做些讨论。 01 用户的“搭便车”行为 从经济学的角度上,“搭便车”行为意即不付成本而坐享他人之利。由于开源运动的精神就包括了制造出来的开源软件的源代码免费可得,并且不限制任何人将其用于任何用途,所以我们可以说,开源世界当中“搭便车”的行为是广泛存在的。 实际上,当我们编译一个 C 程序的时候,很可能我们就依赖了自由软件GCC或开源软件Clang作为实现编译的编译器。大多数程序员都不曾直接参与过这两个编译器的开发,因此做过这样操作的人都可以算是这两个软件的“搭便车”者。 然而,自由软件...
-
下一篇
微软与 Canonical 合作,将 systemd 引入 WSL
微软和 Canonical 联合宣布,systemd 现在可以在 Windows Subsystem for Linux(WSL2)中运行了,此举可以让用户在 Windows 设备上获得更加全面的 Linux 体验。systemd 的作者 Lennart Poettering 在 7 月份离开红帽并加入了微软,不知道其中是否有他的贡献。 systemd 是一套用于 Linux 系统的基本构建模块,它提供了一个系统和服务管理器,作为 PID 1 运行并启动系统的其他部分。 许多知名的 Linux 发行版(如 Ubuntu、Debian 等)都默认运行 systemd,这一变化意味着 WSL 允许你使用依赖于 systemd 支持的软件,也让 WSL 更贴近于那种在设备上独立安装运行的 Linux 发行版而不是兼容层。 依赖 systemd 的一些知名 Linux 应用程序包括: snap(Canonical 为使用 Linux 内核和 systemd init 系统的操作系统开发的软件打包和部署系统) microk8s(一个轻量级的 Kubernetes,旨在降低 K8s 和云原生应用开...
相关文章
文章评论
共有0条评论来说两句吧...