Python/ target=_blank class=infotextkey>Python 编程语言中一个被忽视了 15 年的漏洞,正在重新引发人们的关注,因为它可能对超过 35 万个开源存储库项目造成影响。其实早在 2007 年,就已经有安全研究人员披露并标记过 CVE-2007-4559 。遗憾的是,它一直没有获得正式的修复补丁。唯一的缓解措施,也只是在更新后的开发者文档中提示了相关风险。但是现在,该漏洞又被发现可用于代码执行。
Bleeping Computer 指出,该漏洞位于 Python tarfile 包中。在使用未经处理的 tarfile.extract() 函数、或 tarfile.extractall() 内置默认值的代码中,这个路径遍历漏洞就有可能被利用于覆盖任意文件。
虽然自 2007 年 8 月首次报告以来,我们一直没有听说与 CVE-2007-4559 有关的漏洞利用报告,但它确实向外界提示了软件供应链中长期被忽视的风险。
Spyder IDE Demo Video - Trellix(via)
今年早些时候,Trellix 的一位安全研究人员在调查另一个安全问题时、再次揪出了 CVE-2007-4559 。
作为一家提供扩展检测和响应(XDR)解决方案的新企业,它由 McAfee Enterprise 和 FireEye 合并而来。
来自 Trellix 高级威胁研究团队的 Charles McFarland 指出:
在调用 tarfile.extract() 和 tarfile.extractall() 之前,若开发者未能编写任何安全的代码来清理成员文件,就会导致该目录遍历漏洞被不良行为者利用于访问文件系统。 该缺陷源于 Python 的 tarfile 模块 / extract 函数中的代码,其明确信任 TarInfo 对象中的信息,并加入了传递给 extract 函数的路径和 TarInfo 对象中的名称。
Polemarch Demo Video - Trellix(via)
披露后不到一周,Python 错误追踪器上的一条消息,就称该问题已经被关闭。更新文档指出,官方正在修复该问题,并提醒大家始终不要通过不受信任的来源来提取档案、否则会陷入相当大的风险。
通过分析,Trellix 研究人员发现该漏洞波及成千上万个开源和闭源软件项目。在随手拉来的一批 257 个有较高可能性包含易受攻击代码的存储库中,他们手动检查了其中 175 个,结果表明风险率高达 61% 。
在对其余存储库开展自动检查后,可知这一几率增加到了 65%,表明问题的存在相当广泛 —— 而且这还只是针对 GitHub 这一个代码托管平台的评估结论。
Charles McFarland 补充道:“在 GitHub 帮助下,我们获得了一个更大的数据集 —— 其中有 58 万 8840 个独特的存储库在其 Python 代码中包含了 import tarfile”。
手动验证的漏洞率高达 61%,Trellix 预估有超过 35 万个存储库易受该漏洞攻击的影响,且其中不乏帮助开发者更快完成项目的多款机器学习工具 —— 比如 GitHub Copilot 。
这款 AI 编程辅助工具依赖于来自数十万个存储库的代码,来提供便捷的“自动完成”编程体验。但若参考代码本身就不够安全,问题就会在不知不觉中传播到更多无辜的新项目中。
通过深入研究,Trellix 发现易受 CVE-2007-4559 漏洞攻击的开源代码,横跨了众多的行业。
如预期那样,开发部门(Development)首当其冲,其次是人工智能(AI)/ 机器学习(ML),以及 Web、安全、管理员工具等项目。