一个存在15年的Python漏洞肆虐全球软件世界Python开源编程语言中一个存在15年的漏洞在许多地方仍未修补,使其传播到数以千计的开源和封闭-世界各地的源项目。研究人员警告说,这无意中构成了一个极其脆弱的软件供应链,大多数受影响的组织都蒙在鼓里。Trellix高级研究中心的分析师发现,与路径遍历相关的漏洞(编号为CVE-2007-4559)在超过350,000个独特的开源代码存储库中仍未修补,使应用程序软件容易受到利用。首席工程师兼漏洞研究总监道格拉斯·麦基在9月21日发表的博文中表示,这个有问题的代码库存在于软件中,分布在多个行业,主要集中在软件开发、人工智能/机器学习和代码开发领域,还包括安全、IT管理和媒体等诸多领域。Pythontarfile模块也作为任何使用Python的项目的默认模块存在,该模块现在广泛用于AWS、Facebook、谷歌、英特尔和Netflix开发的框架,以及机器学习、自动化和Docker容器化,研究人员说。在应用程序中。研究人员表示,虽然该漏洞允许攻击者逃离目录(文件应解压缩到该目录),但攻击者也可能利用该漏洞执行恶意代码。“今天,这个未经检查的漏洞被无意中添加到全球数以千计的开源和闭源项目中,留下了巨大的软件供应链攻击面,”McKee说。新问题,老漏洞McKee在一篇博客文章中说,Trellix研究人员认为他们在最近发现Python的tarfile模块没有正确检查企业设备中的路径遍历漏洞后,偶然发现了一个新的Python零日漏洞。但他们很快意识到这个漏洞之前就已经被发现了。进一步挖掘,后来与GitHub的合作,发现大约287万个开源文件包含Python的tarfile模块,它出现在大约588,000个独特的代码存储库中。Trellix的分析发现,这些实例中约有61%存在漏洞,研究人员估计目前有350,000个易受攻击的Python代码存储库。在开源世界中,没有人应该受到指责。这个错误在整个软件世界中长期未被检查的原因有很多。使用该平台的开发人员并没有做到公正。他写道:“首先,应该明确的是,CVE-2007-4559的当前状态不应归咎于任何一方、组织或个人,但无论如何我们都有责任。”开源项目由一群志愿者而不是联合会(和非营利基金会)运行和维护,这使得及时跟踪和修复已知问题变得更加困难。此外,库或软件开发工具包……将API的安全使用视为开发人员责任的一部分并不少见。事实上,Python在其文档中警告了使用tarfile函数的风险,明确告诫开发人员永远不要因为目录遍历问题而“未经事先检查就解压来源不明的档案”。McKee表示,虽然警告是引起人们对该问题的关注的“积极步骤”,但它显然并没有阻止漏洞持续存在,因为仍然需要开发人员使用代码库来确保他们构建的软件是安全的。他补充说,使问题更加复杂的是,大多数针对开发人员如何使用平台模块的Python教程都没有清楚地展示如何避免不安全地使用tarfile模块,包括Python自己的文档以及utorialspoint、geeksforgeeks和askpython.com和其他热门网站。McKee指出,这种差异导致漏洞被编程到整个供应链中,除非对该问题有更广泛的认识,否则这种趋势可能会持续数年。利用此漏洞“非常容易”在技术方面,CVE-2007-4559是Python的tarfile模块中的一种路径遍历攻击,它允许攻击者通过将“..”序列附加到TAR存档的文件名来覆盖任意文件。Trellix漏洞研究员CharlesMcFarland周三在另一篇关于该问题的博客文章中指出,实际漏洞源于使用未经处理的tarfile.extract()或tarfile.extractall()以及两三行代码的内置默认值。“在调用tarfile.extract()或tarfile.extractall()之前没有编写任何安全代码来清理成员文件会导致目录遍历漏洞,从而使犯罪分子能够访问文件系统,”他写道。要利用此漏洞,需要在文件名中添加带有操作系统分隔符(“/”或“\”)的“..”以转义目录(文件应提取到的目录)。Python的tarfile模块允许开发人员完全做到这一点。由于Trellix漏洞研究实习生KasimirSchulz在另一个问题上的研究,这个广泛存在的Pythontarfile漏洞实际上浮出水面。周三,他发表了第三篇独立的Trellix博客文章,详细介绍了利用CVE-2007-4559是多么“难以置信的容易”。在博客文章中,Schulz解释说Python中的Tarfile包含多个不同的文件和元数据,这些文件和元数据稍后用于解压缩tarfile本身。TAR存档文件中包含的元数据包括但不限于文件名、文件大小和校验和等信息,以及文件存档时文件所有者的信息。“tarfile模块允许用户添加过滤器,这些过滤器可用于在将文件添加到TAR存档之前解析和修改文件的元数据,”Schulz写道。这允许攻击者创建漏洞利用工具。Schulz继续详细解释了他如何使用该漏洞和一个名为Creosote的自定义脚本(搜索目录、扫描和分析Python文件)在SpyderIDE中执行恶意代码。Spyder是一个为Python编写的免费开源科学环境,可在Windows和macOS上运行关注供应链tarfile问题再次凸显了软件供应链是一个攻击面。近年来,这种攻击面变得越来越突出,因为攻击者可以通过利用存在于多个平台和企业环境中的有缺陷的代码来造成广泛的影响。这可用于极大地放大恶意活动的影响,而无需威胁行为者付出额外的努力。以前有很多供应链受到此类攻击的例子,现在臭名昭著的SolarWinds和Log4J场景是最著名的。前者始于2020年12月下旬,当时SolarWindsOrion软件遭到入侵,这一事件蔓延到次年,对许多组织发起了多次攻击。后一事件始于2021年12月上旬,当时广泛使用的Java日志记录工具中发现了一个名为Log4Shell的漏洞,该漏洞导致了多个额外的漏洞,使数百万应用程序容易受到攻击,其中许多程序至今仍未修补。最近,攻击者开始尝到直接攻击开源代码存储库以植入自己的恶意代码的甜头,这些代码随后可用于攻击供应链。事实上,Python项目已经发现自己成为攻击目标。8月底,攻击者对Python包索引(PyPI)的用户发起了第一次网络钓鱼攻击,旨在窃取他们的凭据,以便威胁行为者可以将受损包加载到代码存储库中。8月初,在安全供应商警告威胁行为者在包安装脚本中嵌入恶意代码后,PyPI从其注册表中删除了10个恶意包。本文翻译自:https://www.darkreading.com/application-security/15-year-old-python-flaw-software-worldwide如有转载请注明出处。
