如何安全地使用Archive::Extract - 防止zip炸弹或类似攻击?

3
问题概述:
  • 需要允许通过网络表单上传ZIP文件(以及tgz和更多压缩的目录树)
  • 应该提取zip文件以处理其内容
  • 计划使用Archive::Extract进行提取
  • 这里有像ZIP BOMBS这样的东西...
从手册中:

Archive::Extract可以在底层使用纯Perl模块或命令行程序。一些纯Perl模块(如Archive::Tar和Compress::unLZMA)将整个存档的内容加载到内存中,这可能在您的系统上不可行。考虑将全局变量$Archive::Extract::PREFER_BIN设置为1,这将优先使用命令行程序并且不会消耗太多内存。

问题是:
  • 当我设置$Archive::Extract::PREFER_BIN = 1时,我是否足够保护自己免受ZIP-BOMB之类的攻击?
  • $Archive::Extract::PREFER_BIN可以保护我免受过多内存使用的影响,但标准的unziptar -zunrar二进制文件是否能够抵御类似于zip炸弹的攻击?

  • 如果不能,如何安全地处理上传的压缩目录树?(因此这里不仅有一个文件在例如zip归档中。)

1个回答

3

$Archive::Extract::PREFER_BIN = 1 不保护你免受zip炸弹的攻击,你把问题转嫁给了系统的二进制解压工具。

这个SO问题可能会有所帮助。我喜欢运行一个带有ulimit的第二个进程的想法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接