
理解Python的tarfile模块中的路径遍历错误
最近,一个安全研究小组宣布他们在Python的tar文件提取功能中发现了一个15年前的漏洞。该漏洞于2007年首次披露,并被追踪为CVE-2007-4559。在Python的官方文档中加入了一个说明,但这个漏洞本身却没有被修补。
这个漏洞可能会影响到成千上万的软件项目,但许多人却不熟悉这种情况或如何处理。这就是为什么,在这里 Secure Code Warrior我们给你一个机会,让你自己模拟利用这个漏洞,看看第一手的影响,在这个持续存在的漏洞的机制方面获得一些实践经验,以便你能更好地保护你的应用程序
现在就试试模拟任务。
漏洞:在提取tar文件时进行路径穿越
路径或目录遍历发生在未经消毒的用户输入被用来构建文件路径时,允许攻击者获得访问和覆盖文件,甚至执行任意代码。
该漏洞存在于Python的tarfile模块。tar(磁带存档)文件是一个单独的文件,称为存档。它把多个文件和它们的元数据打包在一起,通常以.tar.gz或.tgz为扩展名来识别。归档中的每个成员都可以用一个TarInfo对象表示,它包含元数据,如文件名、修改时间、所有权等等。
风险来自于档案被再次提取的能力。
当被提取时,每个成员都需要一个写入的路径。这个位置是通过连接基本路径和文件名来创建的。

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

这里的问题是缺乏对文件名的消毒。攻击者可以重命名文件以包括路径遍历字符,如点点斜线(.../),这将导致文件遍历出它本应在的目录并覆盖任意文件。这最终可能导致远程代码执行,这是成熟的利用。
如果你知道如何识别它,该漏洞出现在其他情况下。除了Python对tar文件的处理外,该漏洞还存在于zip文件的提取过程中。你可能对它的另一个名字很熟悉,比如zip slip 漏洞,它已经在 Python 以外的语言中表现出来了!
你如何能减轻风险?
尽管这个漏洞已经知道很多年了,但Python维护者认为提取功能在做它应该做的事情。在这种情况下,有些人可能会说 "这是一个功能,不是一个错误"。不幸的是,开发者不可能总是避免从未知的来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不信任的输入进行消毒,以防止路径穿越漏洞。
想了解更多关于如何用Python编写安全代码和降低风险的信息吗?
如果你有兴趣获得更多免费的编码指南,请查看安全代码教练,以帮助你保持在安全编码实践的顶端。


最近,一个安全研究小组宣布他们在Python的tar文件提取功能中发现了一个15年前的漏洞。该漏洞于2007年首次披露,并被追踪为CVE-2007-4559。在Python的官方文档中加入了一个说明,但这个漏洞本身却没有被修补。

Secure Code Warrior 我们在这里为您的组织提供服务,帮助您在整个软件开发生命周期中确保代码安全,并创造一种将网络安全放在首位的文化。无论您是应用安全经理、开发人员、CISO或任何涉及安全的人,我们都可以帮助您的组织减少与不安全代码有关的风险。
预定一个演示Laura Verheyde 是Secure Code Warrior 的一名软件开发人员,主要负责研究漏洞并为Missions 和编码实验室创建内容。


最近,一个安全研究小组宣布他们在Python的tar文件提取功能中发现了一个15年前的漏洞。该漏洞于2007年首次披露,并被追踪为CVE-2007-4559。在Python的官方文档中加入了一个说明,但这个漏洞本身却没有被修补。
这个漏洞可能会影响到成千上万的软件项目,但许多人却不熟悉这种情况或如何处理。这就是为什么,在这里 Secure Code Warrior我们给你一个机会,让你自己模拟利用这个漏洞,看看第一手的影响,在这个持续存在的漏洞的机制方面获得一些实践经验,以便你能更好地保护你的应用程序
现在就试试模拟任务。
漏洞:在提取tar文件时进行路径穿越
路径或目录遍历发生在未经消毒的用户输入被用来构建文件路径时,允许攻击者获得访问和覆盖文件,甚至执行任意代码。
该漏洞存在于Python的tarfile模块。tar(磁带存档)文件是一个单独的文件,称为存档。它把多个文件和它们的元数据打包在一起,通常以.tar.gz或.tgz为扩展名来识别。归档中的每个成员都可以用一个TarInfo对象表示,它包含元数据,如文件名、修改时间、所有权等等。
风险来自于档案被再次提取的能力。
当被提取时,每个成员都需要一个写入的路径。这个位置是通过连接基本路径和文件名来创建的。

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

这里的问题是缺乏对文件名的消毒。攻击者可以重命名文件以包括路径遍历字符,如点点斜线(.../),这将导致文件遍历出它本应在的目录并覆盖任意文件。这最终可能导致远程代码执行,这是成熟的利用。
如果你知道如何识别它,该漏洞出现在其他情况下。除了Python对tar文件的处理外,该漏洞还存在于zip文件的提取过程中。你可能对它的另一个名字很熟悉,比如zip slip 漏洞,它已经在 Python 以外的语言中表现出来了!
你如何能减轻风险?
尽管这个漏洞已经知道很多年了,但Python维护者认为提取功能在做它应该做的事情。在这种情况下,有些人可能会说 "这是一个功能,不是一个错误"。不幸的是,开发者不可能总是避免从未知的来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不信任的输入进行消毒,以防止路径穿越漏洞。
想了解更多关于如何用Python编写安全代码和降低风险的信息吗?
如果你有兴趣获得更多免费的编码指南,请查看安全代码教练,以帮助你保持在安全编码实践的顶端。

最近,一个安全研究小组宣布他们在Python的tar文件提取功能中发现了一个15年前的漏洞。该漏洞于2007年首次披露,并被追踪为CVE-2007-4559。在Python的官方文档中加入了一个说明,但这个漏洞本身却没有被修补。
这个漏洞可能会影响到成千上万的软件项目,但许多人却不熟悉这种情况或如何处理。这就是为什么,在这里 Secure Code Warrior我们给你一个机会,让你自己模拟利用这个漏洞,看看第一手的影响,在这个持续存在的漏洞的机制方面获得一些实践经验,以便你能更好地保护你的应用程序
现在就试试模拟任务。
漏洞:在提取tar文件时进行路径穿越
路径或目录遍历发生在未经消毒的用户输入被用来构建文件路径时,允许攻击者获得访问和覆盖文件,甚至执行任意代码。
该漏洞存在于Python的tarfile模块。tar(磁带存档)文件是一个单独的文件,称为存档。它把多个文件和它们的元数据打包在一起,通常以.tar.gz或.tgz为扩展名来识别。归档中的每个成员都可以用一个TarInfo对象表示,它包含元数据,如文件名、修改时间、所有权等等。
风险来自于档案被再次提取的能力。
当被提取时,每个成员都需要一个写入的路径。这个位置是通过连接基本路径和文件名来创建的。

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

这里的问题是缺乏对文件名的消毒。攻击者可以重命名文件以包括路径遍历字符,如点点斜线(.../),这将导致文件遍历出它本应在的目录并覆盖任意文件。这最终可能导致远程代码执行,这是成熟的利用。
如果你知道如何识别它,该漏洞出现在其他情况下。除了Python对tar文件的处理外,该漏洞还存在于zip文件的提取过程中。你可能对它的另一个名字很熟悉,比如zip slip 漏洞,它已经在 Python 以外的语言中表现出来了!
你如何能减轻风险?
尽管这个漏洞已经知道很多年了,但Python维护者认为提取功能在做它应该做的事情。在这种情况下,有些人可能会说 "这是一个功能,不是一个错误"。不幸的是,开发者不可能总是避免从未知的来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不信任的输入进行消毒,以防止路径穿越漏洞。
想了解更多关于如何用Python编写安全代码和降低风险的信息吗?
如果你有兴趣获得更多免费的编码指南,请查看安全代码教练,以帮助你保持在安全编码实践的顶端。
最近,一个安全研究小组宣布他们在Python的tar文件提取功能中发现了一个15年前的漏洞。该漏洞于2007年首次披露,并被追踪为CVE-2007-4559。在Python的官方文档中加入了一个说明,但这个漏洞本身却没有被修补。
这个漏洞可能会影响到成千上万的软件项目,但许多人却不熟悉这种情况或如何处理。这就是为什么,在这里 Secure Code Warrior我们给你一个机会,让你自己模拟利用这个漏洞,看看第一手的影响,在这个持续存在的漏洞的机制方面获得一些实践经验,以便你能更好地保护你的应用程序
现在就试试模拟任务。
漏洞:在提取tar文件时进行路径穿越
路径或目录遍历发生在未经消毒的用户输入被用来构建文件路径时,允许攻击者获得访问和覆盖文件,甚至执行任意代码。
该漏洞存在于Python的tarfile模块。tar(磁带存档)文件是一个单独的文件,称为存档。它把多个文件和它们的元数据打包在一起,通常以.tar.gz或.tgz为扩展名来识别。归档中的每个成员都可以用一个TarInfo对象表示,它包含元数据,如文件名、修改时间、所有权等等。
风险来自于档案被再次提取的能力。
当被提取时,每个成员都需要一个写入的路径。这个位置是通过连接基本路径和文件名来创建的。

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

这里的问题是缺乏对文件名的消毒。攻击者可以重命名文件以包括路径遍历字符,如点点斜线(.../),这将导致文件遍历出它本应在的目录并覆盖任意文件。这最终可能导致远程代码执行,这是成熟的利用。
如果你知道如何识别它,该漏洞出现在其他情况下。除了Python对tar文件的处理外,该漏洞还存在于zip文件的提取过程中。你可能对它的另一个名字很熟悉,比如zip slip 漏洞,它已经在 Python 以外的语言中表现出来了!
你如何能减轻风险?
尽管这个漏洞已经知道很多年了,但Python维护者认为提取功能在做它应该做的事情。在这种情况下,有些人可能会说 "这是一个功能,不是一个错误"。不幸的是,开发者不可能总是避免从未知的来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不信任的输入进行消毒,以防止路径穿越漏洞。
想了解更多关于如何用Python编写安全代码和降低风险的信息吗?
如果你有兴趣获得更多免费的编码指南,请查看安全代码教练,以帮助你保持在安全编码实践的顶端。
资源
OpenText 应用程序安全性的强大功能 + Secure Code Warrior
OpenText Application Security and Secure Code Warrior combine vulnerability detection with AI Software Governance and developer capability. Together, they help organizations reduce risk, strengthen secure coding practices, and confidently adopt AI-driven development.
Secure Code Warrior corporate overview
Secure Code Warrior is an AI Software Governance platform designed to enable organizations to safely adopt AI-driven development by bridging the gap between development velocity and enterprise security. The platform addresses the "Visibility Gap," where security teams often lack insights into shadow AI coding tools and the origins of production code.
安全代码培训主题和内容
Our industry-leading content is always evolving to fit the ever changing software development landscape with your role in mind. Topics covering everything from AI to XQuery Injection, offered for a variety of roles from Architects and Engineers to Product Managers and QA. Get a sneak peek of what our content catalog has to offer by topic and role.
资源
Observe and Secure the ADLC: A Four-Point Framework for CISOs and Development Teams Using AI
While development teams look to make the most of GenAI’s undeniable benefits, we’d like to propose a four-point foundational framework that will allow security leaders to deploy AI coding tools and agents with a higher, more relevant standard of security best practices. It details exactly what enterprises can do to ensure safe, secure code development right now, and as agentic AI becomes an even bigger factor in the future.






