SCW Icons
hero bg no divider
Blog

了解 Python 的 tarfile 模块中的路径遍历错误

Laura Verheyde
Published Oct 03, 2022
Last updated on Mar 09, 2026

最近,一个小组 安全研究人员 宣布他们在 Python 的 tar 文件提取功能中发现了一个已有十五年历史的错误。该漏洞于 2007 年首次披露,追踪为 CVE-2007-4559。在 Python 官方文档中添加了一条注释,但错误本身没有修补。

该漏洞可能会影响成千上万的软件项目,但许多人不熟悉情况或如何处理。这就是为什么,在这里 安全代码勇士,我们为您提供了亲自模拟利用此漏洞的机会,以亲眼目睹其影响,并亲身体验这个持续错误的机制,这样您就可以更好地保护您的应用程序!

试试模拟 使命 现在。

漏洞:提取 tar 文件期间的路径遍历

当使用未经审查的用户输入来构造文件路径时,就会发生路径或目录遍历,从而允许攻击者获得访问权限和覆盖文件,甚至执行任意代码。

该漏洞存在于 Python 中 tarfile 模块。tar(磁带存档)文件是一个单一的文件,称为存档。它将多个文件及其元数据打包在一起,通常通过以下方式进行识别 .tar.gz 要么 .tgz 延期。存档中的每个成员都可以用一个来表示 TarInfo 对象,其中包含元数据,例如文件名、修改时间、所有权等。

风险来自于能够再次提取档案。

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

来自 Python 的片段 Tarfile.py


创建此路径后,它将传递给 tarfile.extra 要么 tarfile.extall 执行提取的函数:

来自 Python 的片段 Tarfile.py

这里的问题是缺乏对文件名的清理。攻击者可以重命名文件以包含路径遍历字符,例如 点点斜线 (../),这将导致文件遍历出其本应所在的目录并覆盖任意文件。这最终可能导致远程代码执行,而利用的时机已经成熟。

如果您知道如何识别该漏洞,则该漏洞会出现在其他场景中。除了 Python 对 tar 文件的处理外,该漏洞还存在于 提取 zip 文件。你可能用另一个名字熟悉这个,比如 压缩文件漏洞,这已经体现在除了 Python 之外的语言中!

链接到任务 

如何降低风险?

尽管该漏洞已为人所知多年,但Python维护人员仍认为提取功能正在发挥作用 它应该做什么。在这种情况下,有人可能会说 “这是一项功能,不是错误”。不幸的是,开发人员不能总是避免从未知来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不可信的输入进行清理,以防止路径遍历漏洞。

想更多地了解如何使用 Python 编写安全代码和降低风险?

试试我们的 免费的 Python 挑战赛

如果你有兴趣获得更多免费编程指南,请查看 安全代码教练 帮助您掌握安全编码惯例。

查看资源
查看资源

最近,一组安全研究人员宣布他们在 Python 的 tar 文件提取功能中发现了一个已有十五年历史的错误。该漏洞于 2007 年首次被披露,追踪后被追踪为 CVE-2007-4559。在 Python 官方文档中添加了一条注释,但错误本身没有修补。

对更多感兴趣?

learn more

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

预订演示
分享到:
linkedin brandsSocialx logo
作者
Laura Verheyde
Published Oct 03, 2022

Laura Verheyde is a software developer at Secure Code Warrior focused on researching vulnerabilities and creating content for Missions and Coding labs.

分享到:
linkedin brandsSocialx logo

最近,一个小组 安全研究人员 宣布他们在 Python 的 tar 文件提取功能中发现了一个已有十五年历史的错误。该漏洞于 2007 年首次披露,追踪为 CVE-2007-4559。在 Python 官方文档中添加了一条注释,但错误本身没有修补。

该漏洞可能会影响成千上万的软件项目,但许多人不熟悉情况或如何处理。这就是为什么,在这里 安全代码勇士,我们为您提供了亲自模拟利用此漏洞的机会,以亲眼目睹其影响,并亲身体验这个持续错误的机制,这样您就可以更好地保护您的应用程序!

试试模拟 使命 现在。

漏洞:提取 tar 文件期间的路径遍历

当使用未经审查的用户输入来构造文件路径时,就会发生路径或目录遍历,从而允许攻击者获得访问权限和覆盖文件,甚至执行任意代码。

该漏洞存在于 Python 中 tarfile 模块。tar(磁带存档)文件是一个单一的文件,称为存档。它将多个文件及其元数据打包在一起,通常通过以下方式进行识别 .tar.gz 要么 .tgz 延期。存档中的每个成员都可以用一个来表示 TarInfo 对象,其中包含元数据,例如文件名、修改时间、所有权等。

风险来自于能够再次提取档案。

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

来自 Python 的片段 Tarfile.py


创建此路径后,它将传递给 tarfile.extra 要么 tarfile.extall 执行提取的函数:

来自 Python 的片段 Tarfile.py

这里的问题是缺乏对文件名的清理。攻击者可以重命名文件以包含路径遍历字符,例如 点点斜线 (../),这将导致文件遍历出其本应所在的目录并覆盖任意文件。这最终可能导致远程代码执行,而利用的时机已经成熟。

如果您知道如何识别该漏洞,则该漏洞会出现在其他场景中。除了 Python 对 tar 文件的处理外,该漏洞还存在于 提取 zip 文件。你可能用另一个名字熟悉这个,比如 压缩文件漏洞,这已经体现在除了 Python 之外的语言中!

链接到任务 

如何降低风险?

尽管该漏洞已为人所知多年,但Python维护人员仍认为提取功能正在发挥作用 它应该做什么。在这种情况下,有人可能会说 “这是一项功能,不是错误”。不幸的是,开发人员不能总是避免从未知来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不可信的输入进行清理,以防止路径遍历漏洞。

想更多地了解如何使用 Python 编写安全代码和降低风险?

试试我们的 免费的 Python 挑战赛

如果你有兴趣获得更多免费编程指南,请查看 安全代码教练 帮助您掌握安全编码惯例。

查看资源
查看资源

填写下面的表格下载报告

我们希望获得您的许可,以便向您发送有关我们的产品和/或相关安全编码主题的信息。我们将始终非常谨慎地对待您的个人信息,绝不会出于营销目的将其出售给其他公司。

提交
scw success icon
scw error icon
要提交表单,请启用 “分析” Cookie。完成后,可以随意再次禁用它们。

最近,一个小组 安全研究人员 宣布他们在 Python 的 tar 文件提取功能中发现了一个已有十五年历史的错误。该漏洞于 2007 年首次披露,追踪为 CVE-2007-4559。在 Python 官方文档中添加了一条注释,但错误本身没有修补。

该漏洞可能会影响成千上万的软件项目,但许多人不熟悉情况或如何处理。这就是为什么,在这里 安全代码勇士,我们为您提供了亲自模拟利用此漏洞的机会,以亲眼目睹其影响,并亲身体验这个持续错误的机制,这样您就可以更好地保护您的应用程序!

试试模拟 使命 现在。

漏洞:提取 tar 文件期间的路径遍历

当使用未经审查的用户输入来构造文件路径时,就会发生路径或目录遍历,从而允许攻击者获得访问权限和覆盖文件,甚至执行任意代码。

该漏洞存在于 Python 中 tarfile 模块。tar(磁带存档)文件是一个单一的文件,称为存档。它将多个文件及其元数据打包在一起,通常通过以下方式进行识别 .tar.gz 要么 .tgz 延期。存档中的每个成员都可以用一个来表示 TarInfo 对象,其中包含元数据,例如文件名、修改时间、所有权等。

风险来自于能够再次提取档案。

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

来自 Python 的片段 Tarfile.py


创建此路径后,它将传递给 tarfile.extra 要么 tarfile.extall 执行提取的函数:

来自 Python 的片段 Tarfile.py

这里的问题是缺乏对文件名的清理。攻击者可以重命名文件以包含路径遍历字符,例如 点点斜线 (../),这将导致文件遍历出其本应所在的目录并覆盖任意文件。这最终可能导致远程代码执行,而利用的时机已经成熟。

如果您知道如何识别该漏洞,则该漏洞会出现在其他场景中。除了 Python 对 tar 文件的处理外,该漏洞还存在于 提取 zip 文件。你可能用另一个名字熟悉这个,比如 压缩文件漏洞,这已经体现在除了 Python 之外的语言中!

链接到任务 

如何降低风险?

尽管该漏洞已为人所知多年,但Python维护人员仍认为提取功能正在发挥作用 它应该做什么。在这种情况下,有人可能会说 “这是一项功能,不是错误”。不幸的是,开发人员不能总是避免从未知来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不可信的输入进行清理,以防止路径遍历漏洞。

想更多地了解如何使用 Python 编写安全代码和降低风险?

试试我们的 免费的 Python 挑战赛

如果你有兴趣获得更多免费编程指南,请查看 安全代码教练 帮助您掌握安全编码惯例。

观看网络研讨会
开始吧
learn more

点击下面的链接并下载此资源的PDF。

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

查看报告预订演示
查看资源
分享到:
linkedin brandsSocialx logo
对更多感兴趣?

分享到:
linkedin brandsSocialx logo
作者
Laura Verheyde
Published Oct 03, 2022

Laura Verheyde is a software developer at Secure Code Warrior focused on researching vulnerabilities and creating content for Missions and Coding labs.

分享到:
linkedin brandsSocialx logo

最近,一个小组 安全研究人员 宣布他们在 Python 的 tar 文件提取功能中发现了一个已有十五年历史的错误。该漏洞于 2007 年首次披露,追踪为 CVE-2007-4559。在 Python 官方文档中添加了一条注释,但错误本身没有修补。

该漏洞可能会影响成千上万的软件项目,但许多人不熟悉情况或如何处理。这就是为什么,在这里 安全代码勇士,我们为您提供了亲自模拟利用此漏洞的机会,以亲眼目睹其影响,并亲身体验这个持续错误的机制,这样您就可以更好地保护您的应用程序!

试试模拟 使命 现在。

漏洞:提取 tar 文件期间的路径遍历

当使用未经审查的用户输入来构造文件路径时,就会发生路径或目录遍历,从而允许攻击者获得访问权限和覆盖文件,甚至执行任意代码。

该漏洞存在于 Python 中 tarfile 模块。tar(磁带存档)文件是一个单一的文件,称为存档。它将多个文件及其元数据打包在一起,通常通过以下方式进行识别 .tar.gz 要么 .tgz 延期。存档中的每个成员都可以用一个来表示 TarInfo 对象,其中包含元数据,例如文件名、修改时间、所有权等。

风险来自于能够再次提取档案。

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

来自 Python 的片段 Tarfile.py


创建此路径后,它将传递给 tarfile.extra 要么 tarfile.extall 执行提取的函数:

来自 Python 的片段 Tarfile.py

这里的问题是缺乏对文件名的清理。攻击者可以重命名文件以包含路径遍历字符,例如 点点斜线 (../),这将导致文件遍历出其本应所在的目录并覆盖任意文件。这最终可能导致远程代码执行,而利用的时机已经成熟。

如果您知道如何识别该漏洞,则该漏洞会出现在其他场景中。除了 Python 对 tar 文件的处理外,该漏洞还存在于 提取 zip 文件。你可能用另一个名字熟悉这个,比如 压缩文件漏洞,这已经体现在除了 Python 之外的语言中!

链接到任务 

如何降低风险?

尽管该漏洞已为人所知多年,但Python维护人员仍认为提取功能正在发挥作用 它应该做什么。在这种情况下,有人可能会说 “这是一项功能,不是错误”。不幸的是,开发人员不能总是避免从未知来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不可信的输入进行清理,以防止路径遍历漏洞。

想更多地了解如何使用 Python 编写安全代码和降低风险?

试试我们的 免费的 Python 挑战赛

如果你有兴趣获得更多免费编程指南,请查看 安全代码教练 帮助您掌握安全编码惯例。

目录

下载PDF
查看资源
对更多感兴趣?

learn more

Secure Code Warrior可以帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全放在首位的文化。无论您是 AppSec 经理、开发人员、首席信息安全官还是任何与安全相关的人,我们都可以帮助您的组织降低与不安全代码相关的风险。

预订演示下载
分享到:
linkedin brandsSocialx logo
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子