【问题标题】:How to check png file if it's a decompression bomb如果是解压炸弹,如何检查png文件
【发布时间】:2016-02-09 16:42:59
【问题描述】:

我正在将图像上传到一个网站,我发现了当允许上传png 文件(和其他一些文件)时可能发生的这些解压炸弹攻击。由于我要更改上传的图像,我想确保我不会成为这次攻击的受害者。因此,在检查png 文件是否为炸弹时,我是否可以只读取文件的标题并确保宽度和高度不超过设定的限制,例如 4000x4000 或其他什么?这是一个有效的方法吗?或者有什么更好的方法?

【问题讨论】:

  • 你应该在网络服务器层做。您使用什么来托管您的网站?
  • Glenn Randers-Pehrson 在Defending Libpng Applications Against Decompression Bombs 中描述了许多防御策略,但本文假设您正在使用libpng 编译自己的软件。不过,仍然值得一读。
  • @Jongware 我已经阅读了它,但我没有使用那里提到的任何东西。如果可能的话,我只需要一种方法来确保上传的文件不是使用我的后端语言的炸弹
  • @Jongware 正确,只有宽度和高度是不够的。也可能存在过大的 iCCP 块、zTXt、块和 iTXt 块。默认情况下,libpng 在一定程度上防御这些。 ImageMagick 中的图像宽度和高度限制来自命令行“-limit”选项,我想这也可以通过各种 ImageMagick API 来传达。
  • ImageMagick 的默认限制非常大:“convert -list resource”表示资源限制:宽度:214.7MP 高度:214.7MP 区域:8.135GP,因此您需要使用 -limit 选项或它的等价物。

标签: security image-processing imagemagick png


【解决方案1】:

除了大的宽度和高度之外,解压炸弹还可以有过大的 iCCP 块、zTXt、块和 iTXt 块。默认情况下,libpng 会在一定程度上防御这些。

您的“imagemagick”标签表明您正在询问如何使用 ImageMagick 进行操作。 ImageMagick 的默认宽度和高度限制非常大:“convert -list resource”说

资源限制:宽度:214.7MP 高度:214.7MP 面积:8.135GP

ImageMagick 中的图像宽度和高度限制来自命令行“-limit”选项,我想这也可以通过各种 ImageMagick API 中的一些等效指令来传达。 ImageMagick 从 libpng 继承了对 iCCP 块等的限制。

在 IHDR 块中伪造较小的宽度和高度值不会欺骗 libpng 或 ImageMagick。他们只是发出“额外压缩数据”警告并跳过剩余的 IDAT 数据而不解压缩。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    相关资源
    最近更新 更多