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



目录
打赏
0
0
0
0
5
分享
相关文章
|
21天前
|
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
MSET-SPRT是一种结合多元状态估计技术(MSET)与序贯概率比检验(SPRT)的混合框架,专为高维度、强关联数据流的异常检测设计。MSET通过历史数据建模估计系统预期状态,SPRT基于统计推断判定偏差显著性,二者协同实现精准高效的异常识别。本文以Python为例,展示其在模拟数据中的应用,证明其在工业监控、设备健康管理及网络安全等领域的可靠性与有效性。
550 13
时间序列异常检测:MSET-SPRT组合方法的原理和Python代码实现
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
怎么开发Python第三方库?手把手教你参与开源项目!
大家好,我是程序员晚枫。本文将分享如何开发Python第三方库,并以我维护的开源项目 **popdf** 为例,指导参与开源贡献。Popdf是一个PDF操作库,支持PDF转Word、转图片、合并与加密等功能。文章涵盖从fork项目、本地开发、单元测试到提交PR的全流程,适合想了解开源贡献的开发者。欢迎访问[popdf](https://gitcode.com/python4office/popdf),一起交流学习!
72 21
怎么开发Python第三方库?手把手教你参与开源项目!
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
76 6
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
134 0
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
194 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
|
3月前
|
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
102 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
4月前
|
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
97 33
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等