使用 python/unix 安全地提取 zip 和 tar.gz 文件

问题描述 投票:0回答:1

我正在构建一个应用程序,用户可以在其中上传文件,我需要将它们提取到我的服务器上。我担心这可能存在多个安全漏洞。

这个答案提出了与我类似的问题,但似乎只是解决相对文件提取问题。

我还没有找到任何与 zip 和 tar.gz 文件有关的大小炸弹(也称为 gzip)的信息。我应该在提取之前手动检查大小来处理这种情况吗?对于不知道这种漏洞的人来说,这看起来很危险。

最后一个问题是:是否有关于安全处理 zip 和 tar.gz 文件的任何更新信息,特别是考虑到之前的两个漏洞来源?我是否还想知道是否还有本文中未提及但我不知道的其他问题可能会带来安全问题。

这个问题是从 Python 角度提出的,但欢迎提供与使用 unix 工具安全处理这些文件相关的其他信息。

我还找到了提取 tar 文件的相关信息here

python security unix zip tar
1个回答
0
投票

特别是对于 tar,文档列出了解压缩不受信任的档案时要考虑的建议:

警告切勿在未经事先许可的情况下从不受信任的来源提取档案 检查。文件可能是在路径之外创建的, 例如具有以“/”开头的绝对文件名的成员或 文件名带有两个点“..”。设置filter='data'以防止大多数 危险的安全问题,并阅读提取过滤器部分 详细信息。

https://docs.python.org/3/library/tarfile.html#tarfile.TarFile.extractall


有一些过滤器可以为一些常见的恶意行为添加安全检查(例如

data
过滤器),这将成为从3.14开始的默认过滤器(目前,需要明确使用)。过滤器功能本身在 python 3.12 之前不可用,但它已向后移植到一些早期版本。

除此之外,还有一些事情它不会检查,你必须自己处理这些事情。为此,您需要实现自定义过滤器来检测其余场景。

https://docs.python.org/3/library/tarfile.html#hints-for-further-verification

© www.soinside.com 2019 - 2024. All rights reserved.