博客

深入解析 Python tarfile 模块中的路径遍历漏洞

October 3, 2022
Laura Verheyde
一条绿色蛇盘绕在深色树枝上休息的特写,背景为黑色。

最近,一个安全研究团队宣布在 Python 的 tar 文件提取功能中发现了一个存在了十五年的漏洞。该漏洞最早于 2007 年披露,被追踪为 CVE-2007-4559。虽然 Python 官方文档中添加了相关说明,但该漏洞本身一直未被修复。

该漏洞可能影响数以千计的软件项目,但许多人并不了解这一情况或如何处理它。因此,在 Secure Code Warrior,我们为您提供了一个模拟利用此漏洞的机会,让您亲身体验其影响,并获得处理这一顽固漏洞的实战经验,从而更好地保护您的应用程序!

立即尝试模拟 任务。

漏洞:tar 文件提取过程中的路径遍历

路径或目录遍历是指在构建文件路径时使用了未经清理的用户输入,从而允许攻击者访问并覆盖文件,甚至执行任意代码。

该漏洞存在于 Python 的 tarfile 模块中。tar(磁带归档)文件是一种称为归档文件的单一文件。它将多个文件及其元数据打包在一起,通常通过 .tar.gz 或 .tgz 扩展名来识别。归档中的每个成员都可以由一个 TarInfo 对象表示,该对象包含文件名、修改时间、所有权等元数据。

风险源于归档文件被再次提取的能力。

在提取时,每个成员都需要一个写入路径。该位置是通过将基本路径与文件名连接起来创建的:

Python Tarfile.py


一旦创建了此路径,它就会被传递给 tarfile.extract 或 tarfile.extractall 函数来执行提取:

Python code defining extractall method that processes members and directories, copying and setting modes.
Python Tarfile.py

这里的问题在于缺乏对文件名的清理。攻击者可以重命名文件以包含路径遍历字符,例如 点点斜杠 (../),这将导致文件遍历出其预定目录并覆盖任意文件。这最终可能导致远程代码执行,非常容易被利用。

如果您知道如何识别,就会发现该漏洞在其他场景中也存在。除了 Python 对 tar 文件的处理外,该漏洞还存在于 zip 文件的提取中。您可能以其他名称熟悉这一点,例如 zip slip 漏洞,它已经在除 Python 之外的其他语言中出现过!

任务链接

如何降低风险?

尽管该漏洞已为人所知多年,但 Python 维护者认为提取功能正在执行 其应有的功能。在这种情况下,有些人可能会说“这是一个特性,而不是一个 bug”。不幸的是,开发人员无法总是避免从未知来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任清理不受信任的输入,以防止路径遍历漏洞。

想了解更多关于如何编写安全代码并降低 Python 开发风险的内容吗?

立即免费体验我们的 Python 挑战赛。

如果您想获取更多免费的编码指南,请查看 Secure Code Coach,它能助您时刻掌握安全编码的最佳实践。

‍

‍

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。