Python漏洞允许在35万个项目中执行代码

简介: Python漏洞允许在35万个项目中执行代码

640.png


Python 编程语言中一个被忽视了 15 年的漏洞现在重新成为人们关注的焦点,因为它可能会影响超过 35万个开源存储库并可能导致代码执行。


该安全问题于 2007 年披露并标记为 CVE-2007-4559,从未收到补丁,唯一提供的缓解措施是警告开发人员有关风险的文档更新。


自 2007 年以来未修补


该漏洞位于 Python  tarfile 包中,在使用未经处理的 tarfile.extract() 函数或 tarfile.extractall() 的内置默认值的代码中。


这是一个路径遍历漏洞,使攻击者能够覆盖任意文件。


640.png


自 2007 年 8 月首次报告以来,CVE-2007-4559 的技术详细信息已经可用 。虽然没有关于攻击中利用该漏洞的报告,但它代表了软件供应链中的风险。


今年早些时候,在调查另一个安全问题时,Trellix 的一名研究人员重新发现了 CVE-2007-4559,Trellix 是一家提供扩展检测和响应 (XDR) 解决方案的新企业,由  McAfee Enterprise 和 FireEye合并而成。


“在调用 tarfile.extract() tarfile.extractall() 之前未能编写任何安全代码来清理成员文件会导致目录遍历漏洞,从而使不良行为者能够访问文件系统” - Charles McFarland,漏洞研究员Trellix 高级威胁研究团队


该缺陷来源于Python 的 tarfile 模块中的 extract 函数中的代码明确信任 TarInfo 对象中的信息“并加入了传递给 extract 函数的路径和 TarInfo 对象中的名称”


640.png

CVE-2007-4559 - 与文件名


披露后不到一周,Python 错误跟踪器上的一条消息宣布该问题已关闭,修复正在更新文档并警告“从不受信任的来源提取档案可能很危险”。


估计有 35万个项目受到影响

 

通过分析影响,Trellix 研究人员发现该漏洞存在于数千个开源和闭源软件项目中。


研究人员抓取了一组 257 个更有可能包含易受攻击代码的存储库,并手动检查了其中的 175 个以查看它们是否受到影响。这表明其中 61% 的人很脆弱。


对其余存储库运行自动检查将受影响的项目数量增加到 65%,这表明存在广泛的问题。


然而,这个小样本集仅作为估算 GitHub 上所有受影响的存储库的基准。


“在GitHub 的帮助下,我们能够获得一个更大的数据集,其中包含588840 个独特的存储库,其中包含在其 python 代码中的 'import tarfile'”


使用手动验证的 61% 的漏洞率,Trellix 估计有超过 35万个易受攻击的存储库,其中许多用于帮助开发人员更快地完成项目的机器学习工具(例如 GitHub Copilot)。


这种自动化工具依赖于来自数十万个存储库的代码来提供“自动完成”选项。如果他们提供不安全的代码,问题就会在开发人员不知情的情况下传播到其他项目。


640.png

GitHub Copilot 建议易受攻击的tarfile提取代码


进一步研究该问题,Trellix 发现易受 CVE-2007-4559 攻击的开源代码“跨越了众多行业”。


正如预期的那样,受影响最大的是开发部门,其次是网络和机器学习技术。

640.png


跨行业存在的易受 CVE-2007-4559 影响的代码


利用 CVE-2007-4559


在今天的一篇技术博客文章中,重新发现了该漏洞的 Trellix 漏洞研究员 Kasimir Schulz 描述了在 Windows 版本的 Spyder IDE(一种用于科学编程的开源跨平台集成开发环境)中利用 CVE-2007-4559 的简单步骤。

在这个演示视频中,我们展示了攻击者如何利用 Spyder IDE 中的 tarfile 漏洞。Spyder IDE 使用扩展名为 .spydata 的文件类型,该数据用于填充变量资源管理器,并且该文件通常在研究人员之间共享。但是,由于 .spydata 文件实际上是一个 tar 文件,因此程序使用 tarfile 来提取 .spydata 文件中的所有文件。在视频中,我们展示了我们如何利用它来覆盖程序源代码,甚至添加社会工程方面来尝试获得管理员访问权限。


研究人员表明,该漏洞也可以在 Linux 上利用。他们设法在 Polemarch IT 基础设施管理服务的测试中升级文件写入并实现代码执行。

640.png25

在此演示视频中,我们展示了攻击者如何利用polemarch IT 管理框架中的tarfile 漏洞。通过告诉程序与我们的恶意“项目”同步,我们能够让程序提取我们恶意制作的 tar 文件,覆盖 Polarmarch 用户的现有 bashrc。下次有人登录时,他们会收到消息说他们已被黑客入侵并被踢出局。


除了引起对漏洞及其带来的风险的关注外,Trellix 还为超过 11,000 个项目创建了补丁。修复程序将在受影响的存储库的分叉中提供。稍后,它们将通过拉取请求添加到主项目中。


由于受影响的存储库数量众多,研究人员预计未来几周将有超过 70,000 个项目得到修复。然而,达到 100% 的目标是一项艰巨的挑战,因为维护者也需要接受合并请求。


Python 软件基金会就 CVE-2007-4559 到目前为止未发表建议。



本博客的目的是深入研究漏洞的技术细节,并展示攻击者编写漏洞利用程序是多么容易。在博客的过程中,我们还将探索编写一个工具的过程,该工具通过利用 AST 中间表示的力量来自动检测源代码中的 tarfile 漏洞。最后,这篇文章将向您介绍我们如何利用一个流行的开源存储库,使用路径遍历攻击来执行代码。


博客全文阅读地址:

https://www.trellix.com/en-us/about/newsroom/stories/threat-labs/tarfile-exploiting-the-world.html



相关文章
|
11月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
475 26
|
11月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
639 1
|
11月前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
449 1
|
10月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
400 100
|
10月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
616 95
|
11月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
423 104
|
11月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
715 99
|
11月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
473 102
|
10月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
536 88
|
10月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1609 68

推荐镜像

更多