如何检查png文件是否是解压炸弹
How to check png file if it's a decompression bomb
我正在尝试将图像上传到网站,我发现在允许上传 png
文件(和其他一些文件)时可能会发生这些减压炸弹攻击。因为我要更改上传的图片,所以我想确保我不会成为这次攻击的受害者。因此,在检查 png
文件是否为炸弹时,我是否可以只读取文件的 headers 并确保宽度和高度不超过设置的限制,例如 4000x4000 或其他?这是一种有效的方法吗?或者更好的方法是什么?
除了宽高,解压炸弹还会有过大的iCCP chunks、zTXt、chunks、iTXt chunks。默认情况下,libpng 会在某种程度上防御这些。
您的 "imagemagick" 标签表明您是在询问如何使用 ImageMagick 进行操作。 ImageMagick 的默认宽度和高度限制非常大:"convert -list resource" 说
Resource limits: Width: 214.7MP Height: 214.7MP Area: 8.135GP
ImageMagick 中的图像宽度和高度限制来自命令行“-limit”选项,我想这也可以通过各种 ImageMagick API 中的一些等效指令来传达。 ImageMagick 继承了 libpng 对 iCCP 块等的限制。
IHDR 块中伪造的较小宽度和高度值不会欺骗 libpng 或 ImageMagick。他们只是发出 "Extra compressed data" 警告并跳过剩余的 IDAT 数据而不对其进行解压缩。
我正在尝试将图像上传到网站,我发现在允许上传 png
文件(和其他一些文件)时可能会发生这些减压炸弹攻击。因为我要更改上传的图片,所以我想确保我不会成为这次攻击的受害者。因此,在检查 png
文件是否为炸弹时,我是否可以只读取文件的 headers 并确保宽度和高度不超过设置的限制,例如 4000x4000 或其他?这是一种有效的方法吗?或者更好的方法是什么?
除了宽高,解压炸弹还会有过大的iCCP chunks、zTXt、chunks、iTXt chunks。默认情况下,libpng 会在某种程度上防御这些。
您的 "imagemagick" 标签表明您是在询问如何使用 ImageMagick 进行操作。 ImageMagick 的默认宽度和高度限制非常大:"convert -list resource" 说
Resource limits: Width: 214.7MP Height: 214.7MP Area: 8.135GP
ImageMagick 中的图像宽度和高度限制来自命令行“-limit”选项,我想这也可以通过各种 ImageMagick API 中的一些等效指令来传达。 ImageMagick 继承了 libpng 对 iCCP 块等的限制。
IHDR 块中伪造的较小宽度和高度值不会欺骗 libpng 或 ImageMagick。他们只是发出 "Extra compressed data" 警告并跳过剩余的 IDAT 数据而不对其进行解压缩。