如何安全地使用Archive :: Extract - 对抗zip炸弹或类似的?

时间:2013-08-11 18:04:47

标签: perl compression

问题大纲:

  • 需要允许通过web-from
  • 上传ZIP文件(以及tgz和更多压缩目录树)
  • 应提取zip文件以进行内容处理
  • 计划使用Archive::Extract进行提取
  • 这里有类似ZIP BOMBS之类的内容......

来自手册

  

Archive :: Extract可以使用纯perl模块或命令行   引擎盖下的程序。一些纯perl模块(如   Archive :: Tar and Compress :: unLZMA)取整个内容   归档到内存中,这在您的系统上可能不可行。   考虑将全局变量$ Archive :: Extract :: PREFER_BIN设置为   1,它更喜欢使用命令行程序而不会   消耗这么多记忆。

问题是:

  • 当我设置$Archive::Extract::PREFER_BIN = 1时 - 我已经足够保护再次使用ZIP-BOMB了吗?
  • $ Archive :: Extract :: PREFER_BIN再次保护我很多内存使用 - 但是,标准unziptar -z unrar二进制文件是否像攻击一样安全的再次拉链炸弹?

  • 如果没有 - 如何处理安全上传的压缩directory tree? (所以这里不仅仅是例如zip archive)中的一个文件。

1 个答案:

答案 0 :(得分:3)

$ Archive :: Extract :: PREFER_BIN = 1不能保护您免受拉链炸弹攻击,您将问题传递给系统的二进制解压缩工具。

This SO question可能会对您有所帮助。我喜欢用ulimit运行第二个进程的想法。