
了解 Python 的 tarfile 模块中的路径遍历错误
最近,一个小组 安全研究人员 宣布他们在 Python 的 tar 文件提取功能中发现了一个已有十五年历史的错误。该漏洞于 2007 年首次披露,追踪为 CVE-2007-4559。在 Python 官方文档中添加了一条注释,但错误本身没有修补。
该漏洞可能会影响成千上万的软件项目,但许多人不熟悉情况或如何处理。这就是为什么,在这里 安全代码勇士,我们为您提供了亲自模拟利用此漏洞的机会,以亲眼目睹其影响,并亲身体验这个持续错误的机制,这样您就可以更好地保护您的应用程序!
试试模拟 使命 现在。
漏洞:提取 tar 文件期间的路径遍历
当使用未经审查的用户输入来构造文件路径时,就会发生路径或目录遍历,从而允许攻击者获得访问权限和覆盖文件,甚至执行任意代码。
该漏洞存在于 Python 中 tarfile 模块。tar(磁带存档)文件是一个单一的文件,称为存档。它将多个文件及其元数据打包在一起,通常通过以下方式进行识别 .tar.gz 要么 .tgz 延期。存档中的每个成员都可以用一个来表示 TarInfo 对象,其中包含元数据,例如文件名、修改时间、所有权等。
风险来自于能够再次提取档案。
提取时,每个成员都需要写入路径。此位置是通过将基本路径与文件名连接起来创建的:

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

这里的问题是缺乏对文件名的清理。攻击者可以重命名文件以包含路径遍历字符,例如 点点斜线 (../),这将导致文件遍历出其本应所在的目录并覆盖任意文件。这最终可能导致远程代码执行,而利用的时机已经成熟。
如果您知道如何识别该漏洞,则该漏洞会出现在其他场景中。除了 Python 对 tar 文件的处理外,该漏洞还存在于 提取 zip 文件。你可能用另一个名字熟悉这个,比如 压缩文件漏洞,这已经体现在除了 Python 之外的语言中!
如何降低风险?
尽管该漏洞已为人所知多年,但Python维护人员仍认为提取功能正在发挥作用 它应该做什么。在这种情况下,有人可能会说 “这是一项功能,不是错误”。不幸的是,开发人员不能总是避免从未知来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不可信的输入进行清理,以防止路径遍历漏洞。
想更多地了解如何使用 Python 编写安全代码和降低风险?
试试我们的 免费的 Python 挑战赛。
如果你有兴趣获得更多免费编程指南,请查看 安全代码教练 帮助您掌握安全编码惯例。


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

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。
预约演示Laura Verheyde 是Secure Code Warrior 的一名软件开发人员,主要负责研究漏洞并为Missions 和编码实验室创建内容。


最近,一个小组 安全研究人员 宣布他们在 Python 的 tar 文件提取功能中发现了一个已有十五年历史的错误。该漏洞于 2007 年首次披露,追踪为 CVE-2007-4559。在 Python 官方文档中添加了一条注释,但错误本身没有修补。
该漏洞可能会影响成千上万的软件项目,但许多人不熟悉情况或如何处理。这就是为什么,在这里 安全代码勇士,我们为您提供了亲自模拟利用此漏洞的机会,以亲眼目睹其影响,并亲身体验这个持续错误的机制,这样您就可以更好地保护您的应用程序!
试试模拟 使命 现在。
漏洞:提取 tar 文件期间的路径遍历
当使用未经审查的用户输入来构造文件路径时,就会发生路径或目录遍历,从而允许攻击者获得访问权限和覆盖文件,甚至执行任意代码。
该漏洞存在于 Python 中 tarfile 模块。tar(磁带存档)文件是一个单一的文件,称为存档。它将多个文件及其元数据打包在一起,通常通过以下方式进行识别 .tar.gz 要么 .tgz 延期。存档中的每个成员都可以用一个来表示 TarInfo 对象,其中包含元数据,例如文件名、修改时间、所有权等。
风险来自于能够再次提取档案。
提取时,每个成员都需要写入路径。此位置是通过将基本路径与文件名连接起来创建的:

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

这里的问题是缺乏对文件名的清理。攻击者可以重命名文件以包含路径遍历字符,例如 点点斜线 (../),这将导致文件遍历出其本应所在的目录并覆盖任意文件。这最终可能导致远程代码执行,而利用的时机已经成熟。
如果您知道如何识别该漏洞,则该漏洞会出现在其他场景中。除了 Python 对 tar 文件的处理外,该漏洞还存在于 提取 zip 文件。你可能用另一个名字熟悉这个,比如 压缩文件漏洞,这已经体现在除了 Python 之外的语言中!
如何降低风险?
尽管该漏洞已为人所知多年,但Python维护人员仍认为提取功能正在发挥作用 它应该做什么。在这种情况下,有人可能会说 “这是一项功能,不是错误”。不幸的是,开发人员不能总是避免从未知来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不可信的输入进行清理,以防止路径遍历漏洞。
想更多地了解如何使用 Python 编写安全代码和降低风险?
试试我们的 免费的 Python 挑战赛。
如果你有兴趣获得更多免费编程指南,请查看 安全代码教练 帮助您掌握安全编码惯例。

最近,一个小组 安全研究人员 宣布他们在 Python 的 tar 文件提取功能中发现了一个已有十五年历史的错误。该漏洞于 2007 年首次披露,追踪为 CVE-2007-4559。在 Python 官方文档中添加了一条注释,但错误本身没有修补。
该漏洞可能会影响成千上万的软件项目,但许多人不熟悉情况或如何处理。这就是为什么,在这里 安全代码勇士,我们为您提供了亲自模拟利用此漏洞的机会,以亲眼目睹其影响,并亲身体验这个持续错误的机制,这样您就可以更好地保护您的应用程序!
试试模拟 使命 现在。
漏洞:提取 tar 文件期间的路径遍历
当使用未经审查的用户输入来构造文件路径时,就会发生路径或目录遍历,从而允许攻击者获得访问权限和覆盖文件,甚至执行任意代码。
该漏洞存在于 Python 中 tarfile 模块。tar(磁带存档)文件是一个单一的文件,称为存档。它将多个文件及其元数据打包在一起,通常通过以下方式进行识别 .tar.gz 要么 .tgz 延期。存档中的每个成员都可以用一个来表示 TarInfo 对象,其中包含元数据,例如文件名、修改时间、所有权等。
风险来自于能够再次提取档案。
提取时,每个成员都需要写入路径。此位置是通过将基本路径与文件名连接起来创建的:

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

这里的问题是缺乏对文件名的清理。攻击者可以重命名文件以包含路径遍历字符,例如 点点斜线 (../),这将导致文件遍历出其本应所在的目录并覆盖任意文件。这最终可能导致远程代码执行,而利用的时机已经成熟。
如果您知道如何识别该漏洞,则该漏洞会出现在其他场景中。除了 Python 对 tar 文件的处理外,该漏洞还存在于 提取 zip 文件。你可能用另一个名字熟悉这个,比如 压缩文件漏洞,这已经体现在除了 Python 之外的语言中!
如何降低风险?
尽管该漏洞已为人所知多年,但Python维护人员仍认为提取功能正在发挥作用 它应该做什么。在这种情况下,有人可能会说 “这是一项功能,不是错误”。不幸的是,开发人员不能总是避免从未知来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不可信的输入进行清理,以防止路径遍历漏洞。
想更多地了解如何使用 Python 编写安全代码和降低风险?
试试我们的 免费的 Python 挑战赛。
如果你有兴趣获得更多免费编程指南,请查看 安全代码教练 帮助您掌握安全编码惯例。
最近,一个小组 安全研究人员 宣布他们在 Python 的 tar 文件提取功能中发现了一个已有十五年历史的错误。该漏洞于 2007 年首次披露,追踪为 CVE-2007-4559。在 Python 官方文档中添加了一条注释,但错误本身没有修补。
该漏洞可能会影响成千上万的软件项目,但许多人不熟悉情况或如何处理。这就是为什么,在这里 安全代码勇士,我们为您提供了亲自模拟利用此漏洞的机会,以亲眼目睹其影响,并亲身体验这个持续错误的机制,这样您就可以更好地保护您的应用程序!
试试模拟 使命 现在。
漏洞:提取 tar 文件期间的路径遍历
当使用未经审查的用户输入来构造文件路径时,就会发生路径或目录遍历,从而允许攻击者获得访问权限和覆盖文件,甚至执行任意代码。
该漏洞存在于 Python 中 tarfile 模块。tar(磁带存档)文件是一个单一的文件,称为存档。它将多个文件及其元数据打包在一起,通常通过以下方式进行识别 .tar.gz 要么 .tgz 延期。存档中的每个成员都可以用一个来表示 TarInfo 对象,其中包含元数据,例如文件名、修改时间、所有权等。
风险来自于能够再次提取档案。
提取时,每个成员都需要写入路径。此位置是通过将基本路径与文件名连接起来创建的:

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

这里的问题是缺乏对文件名的清理。攻击者可以重命名文件以包含路径遍历字符,例如 点点斜线 (../),这将导致文件遍历出其本应所在的目录并覆盖任意文件。这最终可能导致远程代码执行,而利用的时机已经成熟。
如果您知道如何识别该漏洞,则该漏洞会出现在其他场景中。除了 Python 对 tar 文件的处理外,该漏洞还存在于 提取 zip 文件。你可能用另一个名字熟悉这个,比如 压缩文件漏洞,这已经体现在除了 Python 之外的语言中!
如何降低风险?
尽管该漏洞已为人所知多年,但Python维护人员仍认为提取功能正在发挥作用 它应该做什么。在这种情况下,有人可能会说 “这是一项功能,不是错误”。不幸的是,开发人员不能总是避免从未知来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不可信的输入进行清理,以防止路径遍历漏洞。
想更多地了解如何使用 Python 编写安全代码和降低风险?
试试我们的 免费的 Python 挑战赛。
如果你有兴趣获得更多免费编程指南,请查看 安全代码教练 帮助您掌握安全编码惯例。




%20(1).avif)
.avif)
