跳到内容

tarfile-unsafe-members (S202)

添加于 v0.2.0 · 相关议题 · 查看源码

源自 flake8-bandit linter。

作用

检查对 tarfile.extractall 的使用。

为什么这不好?

在未事先检查的情况下从不受信任的源提取归档文件存在安全风险,因为恶意制作的归档文件可能包含会被写入目标目录之外的文件。例如,归档文件可能包含带有绝对路径的文件(如 /etc/passwd),或带有父目录引用的相对路径(如 ../etc/passwd)。

在 Python 3.12 及更高版本中,请使用 filter='data' 来防范最危险的安全问题(详见:PEP 706)。在更早的版本中,请将 members 参数设置为归档成员中受信任的子集。

示例

import tarfile
import tempfile

tar = tarfile.open(filename)
tar.extractall(path=tempfile.mkdtemp())
tar.close()

参考