SCW图标
英雄背景无分隔线
博客

Verstehe den Pfaddurchquerungsfehler im Tarfile-Modul von Python

Laura Verheyde
发布于 2022 年 10 月 03 日
最后更新于 2026年3月8日

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

这个漏洞可能会影响到成千上万的软件项目,但许多人却不熟悉这种情况或如何处理。这就是为什么,在这里 Secure Code Warrior我们给你一个机会,让你自己模拟利用这个漏洞,看看第一手的影响,在这个持续存在的漏洞的机制方面获得一些实践经验,以便你能更好地保护你的应用程序

现在就试试模拟任务

漏洞:在提取tar文件时进行路径穿越

路径或目录遍历发生在未经消毒的用户输入被用来构建文件路径时,允许攻击者获得访问和覆盖文件,甚至执行任意代码。 

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

风险来自于档案被再次提取的能力。

当被提取时,每个成员都需要一个写入的路径。这个位置是通过连接基本路径和文件名来创建的。 

摘录自Python的 Tarfile.py


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

摘录自Python的 Tarfile.py

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

如果你知道如何识别它,该漏洞出现在其他情况下。除了Python对tar文件的处理外,该漏洞还存在于zip文件的提取过程中。你可能对它的另一个名字很熟悉,比如zip slip 漏洞,它已经在 Python 以外的语言中表现出来了!

链接到任务 

你如何能减轻风险?

尽管这个漏洞已经知道很多年了,但Python维护者认为提取功能在做它应该做的事情。在这种情况下,有些人可能会说 "这是一个功能,不是一个错误"。不幸的是,开发者不可能总是避免从未知的来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不信任的输入进行消毒,以防止路径穿越漏洞。

想了解更多关于如何用Python编写安全代码和降低风险的信息吗?

免费试用我们的Python挑战

如果你有兴趣获得更多免费的编码指南,请查看安全代码教练,以帮助你保持在安全编码实践的顶端。

查看资源
查看资源

Vor Kurzem gab ein Team von Sicherheitsforschern bekannt, dass es einen fünfzehn Jahre alten Fehler in Pythons Tardatei-Extraktionsfunktion entdeckt hat. Die Sicherheitslücke wurde erstmals 2007 aufgedeckt und als CVE-2007-4559 registriert. Der offiziellen Python-Dokumentation wurde ein Hinweis hinzugefügt, aber der Fehler selbst blieb ungepatcht.

想了解更多吗?

了解更多

Secure Code Warrior 您的Secure Code Warrior 帮助您在整个软件开发周期中保障代码安全,并建立将网络安全置于首位的企业文化。无论您是应用安全经理、开发人员、首席信息安全官,还是其他从事安全工作的人员,我们都能协助您的企业降低不安全代码带来的风险。

预约演示
分享到:
领英品牌社交x 标志
作者
Laura Verheyde
发表于2022年10月3日

Laura Verheyde 是Secure Code Warrior 的一名软件开发人员,主要负责研究漏洞并为Missions 和编码实验室创建内容。

分享到:
领英品牌社交x 标志

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

这个漏洞可能会影响到成千上万的软件项目,但许多人却不熟悉这种情况或如何处理。这就是为什么,在这里 Secure Code Warrior我们给你一个机会,让你自己模拟利用这个漏洞,看看第一手的影响,在这个持续存在的漏洞的机制方面获得一些实践经验,以便你能更好地保护你的应用程序

现在就试试模拟任务

漏洞:在提取tar文件时进行路径穿越

路径或目录遍历发生在未经消毒的用户输入被用来构建文件路径时,允许攻击者获得访问和覆盖文件,甚至执行任意代码。 

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

风险来自于档案被再次提取的能力。

当被提取时,每个成员都需要一个写入的路径。这个位置是通过连接基本路径和文件名来创建的。 

摘录自Python的 Tarfile.py


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

摘录自Python的 Tarfile.py

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

如果你知道如何识别它,该漏洞出现在其他情况下。除了Python对tar文件的处理外,该漏洞还存在于zip文件的提取过程中。你可能对它的另一个名字很熟悉,比如zip slip 漏洞,它已经在 Python 以外的语言中表现出来了!

链接到任务 

你如何能减轻风险?

尽管这个漏洞已经知道很多年了,但Python维护者认为提取功能在做它应该做的事情。在这种情况下,有些人可能会说 "这是一个功能,不是一个错误"。不幸的是,开发者不可能总是避免从未知的来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不信任的输入进行消毒,以防止路径穿越漏洞。

想了解更多关于如何用Python编写安全代码和降低风险的信息吗?

免费试用我们的Python挑战

如果你有兴趣获得更多免费的编码指南,请查看安全代码教练,以帮助你保持在安全编码实践的顶端。

查看资源
查看资源

请填写下方表格以下载报告

我们恳请您允许我们向您发送有关我们产品及/或安全编码相关主题的信息。我们将始终以最高标准谨慎处理您的个人数据,绝不会为营销目的将其出售给其他企业。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用“Analytics”Cookie。完成后,您可随时将其关闭。

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

这个漏洞可能会影响到成千上万的软件项目,但许多人却不熟悉这种情况或如何处理。这就是为什么,在这里 Secure Code Warrior我们给你一个机会,让你自己模拟利用这个漏洞,看看第一手的影响,在这个持续存在的漏洞的机制方面获得一些实践经验,以便你能更好地保护你的应用程序

现在就试试模拟任务

漏洞:在提取tar文件时进行路径穿越

路径或目录遍历发生在未经消毒的用户输入被用来构建文件路径时,允许攻击者获得访问和覆盖文件,甚至执行任意代码。 

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

风险来自于档案被再次提取的能力。

当被提取时,每个成员都需要一个写入的路径。这个位置是通过连接基本路径和文件名来创建的。 

摘录自Python的 Tarfile.py


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

摘录自Python的 Tarfile.py

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

如果你知道如何识别它,该漏洞出现在其他情况下。除了Python对tar文件的处理外,该漏洞还存在于zip文件的提取过程中。你可能对它的另一个名字很熟悉,比如zip slip 漏洞,它已经在 Python 以外的语言中表现出来了!

链接到任务 

你如何能减轻风险?

尽管这个漏洞已经知道很多年了,但Python维护者认为提取功能在做它应该做的事情。在这种情况下,有些人可能会说 "这是一个功能,不是一个错误"。不幸的是,开发者不可能总是避免从未知的来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不信任的输入进行消毒,以防止路径穿越漏洞。

想了解更多关于如何用Python编写安全代码和降低风险的信息吗?

免费试用我们的Python挑战

如果你有兴趣获得更多免费的编码指南,请查看安全代码教练,以帮助你保持在安全编码实践的顶端。

观看网络研讨会
开始吧
了解更多

请点击下方链接下载该资源的PDF文件。

Secure Code Warrior 您的Secure Code Warrior 帮助您在整个软件开发周期中保障代码安全,并建立将网络安全置于首位的企业文化。无论您是应用安全经理、开发人员、首席信息安全官,还是其他从事安全工作的人员,我们都能协助您的企业降低不安全代码带来的风险。

查看报告预约演示
下载PDF文件
查看资源
分享到:
领英品牌社交x 标志
想了解更多吗?

分享到:
领英品牌社交x 标志
作者
Laura Verheyde
发表于2022年10月3日

Laura Verheyde 是Secure Code Warrior 的一名软件开发人员,主要负责研究漏洞并为Missions 和编码实验室创建内容。

分享到:
领英品牌社交x 标志

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

这个漏洞可能会影响到成千上万的软件项目,但许多人却不熟悉这种情况或如何处理。这就是为什么,在这里 Secure Code Warrior我们给你一个机会,让你自己模拟利用这个漏洞,看看第一手的影响,在这个持续存在的漏洞的机制方面获得一些实践经验,以便你能更好地保护你的应用程序

现在就试试模拟任务

漏洞:在提取tar文件时进行路径穿越

路径或目录遍历发生在未经消毒的用户输入被用来构建文件路径时,允许攻击者获得访问和覆盖文件,甚至执行任意代码。 

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

风险来自于档案被再次提取的能力。

当被提取时,每个成员都需要一个写入的路径。这个位置是通过连接基本路径和文件名来创建的。 

摘录自Python的 Tarfile.py


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

摘录自Python的 Tarfile.py

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

如果你知道如何识别它,该漏洞出现在其他情况下。除了Python对tar文件的处理外,该漏洞还存在于zip文件的提取过程中。你可能对它的另一个名字很熟悉,比如zip slip 漏洞,它已经在 Python 以外的语言中表现出来了!

链接到任务 

你如何能减轻风险?

尽管这个漏洞已经知道很多年了,但Python维护者认为提取功能在做它应该做的事情。在这种情况下,有些人可能会说 "这是一个功能,不是一个错误"。不幸的是,开发者不可能总是避免从未知的来源提取 tar 或 zip 文件。作为安全开发实践的一部分,他们有责任对不信任的输入进行消毒,以防止路径穿越漏洞。

想了解更多关于如何用Python编写安全代码和降低风险的信息吗?

免费试用我们的Python挑战

如果你有兴趣获得更多免费的编码指南,请查看安全代码教练,以帮助你保持在安全编码实践的顶端。

目录

下载PDF文件
查看资源
想了解更多吗?

了解更多

Secure Code Warrior 您的Secure Code Warrior 帮助您在整个软件开发周期中保障代码安全,并建立将网络安全置于首位的企业文化。无论您是应用安全经理、开发人员、首席信息安全官,还是其他从事安全工作的人员,我们都能协助您的企业降低不安全代码带来的风险。

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

入门资源

更多文章
资源中心

入门资源

更多文章