我有一个网站,显示用户提交的图像。 我关心的一些wiseguy上传它可以利用在浏览器渲染引擎的一些0-day漏洞的图像。 此外,我想清除元数据(如EXIF数据)的图像,并尝试以无损方式进一步压缩它们(存在用于PNG和JPEG几个这样的命令行实用程序)。
通过上述考虑,我的问题是:有没有一些C / C ++库,在那里,迎合上面的场景? 即使解析的全流水线- >清洗- >消毒- >压缩- >写作不是在任何单个库中可用,我至少可以实现的分析- >清洗- >消毒- >写管道(不压缩)在支持JPEG / PNG / GIF库?
您的要求是不可能实现:如果在您使用的图像读取库中的一个零日漏洞,那么你的代码可能会被利用,当它试图解析和消毒传入文件。 通过“presanitizing”只要接收图像,你只是被移动开采点更早而不是更晚。
这将有助于唯一的事情就是解析和在沙箱消毒传入的图像,这样,至少,如果有一个漏洞,它会被包含在沙箱中。 沙箱可以是运行在一个非特权用户单独的进程chroot
环境(或VM,对于很偏执),与接口仅由在,消毒图像出的字节流的。
卫生处理本身可以是与打开所述图像作为简单的ImageMagick ,它解码为栅格,和重新编码,并以标准格式(比如,PNG或JPEG)发射它们。 需要注意的是,如果输入和输出都是有损格式(如JPEG),那么这种转变将是有损耗的。