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 ist Softwareentwicklerin bei Secure Code Warrior und konzentriert sich auf die Erforschung von Sicherheitslücken und die Erstellung von Inhalten für Missions und Coding Labs.

分享到:
领英品牌社交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 ist Softwareentwicklerin bei Secure Code Warrior und konzentriert sich auf die Erforschung von Sicherheitslücken und die Erstellung von Inhalten für Missions und Coding Labs.

分享到:
领英品牌社交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 标志
资源中心

入门资源

更多文章
资源中心

入门资源

更多文章