我听说在任意用户提供的图像上使用 ImageMagick 可能会存在安全问题。例如,下面的链接提供了一些缓冲区溢出漏洞的证据。有人知道我现在是否可以安全地将其用作处理用户图像的 Web 服务的一部分吗?
答案1
该安全公告是 2006 年发布的。所有软件都有漏洞,但我不会说 ImageMagick 的漏洞比其他软件多。说真的,如果您正在实施 Web 服务,那么通过 Apache 攻击您的概率可能与通过 ImageMagick 攻击您的概率一样大。
简而言之,不要担心,但要保持所有软件都是最新的。
编辑:顺便说一句,我帮助客户实现了一个使用 ImageMagick 的 Web 服务,我从未听说过它有任何问题。
答案2
是的,存在安全风险——软件有缺陷,其中一些缺陷可用于攻击其运行的系统。
但你可以将风险降到最低:
创建一个具有最低权限的用户帐户,以便它足以运行 ImageMagick。现在只使用该帐户执行 ImageMagick
启用自动安全更新:可以将 Ubuntu 等 Linux 系统配置为自动安装安全修复程序。这样可以减少系统在发现漏洞时处于危险状态的时间。Windows 系统也有一个自动更新系统,但不包括 ImageMagick 等第三方软件。
答案3
不。
ImageMagick 的设计注重灵活性。它不像浏览器的图像处理库那样针对精心设计的输入进行强化。它可能继续更容易找到可利用的漏洞在 ImageMagick 这样的库中而不是在浏览器中。
攻击者如果发现 ImageMagick 存在缓冲区溢出,便可以利用该漏洞以运行 ImageMagick 进程的权限运行任意代码。
这可以为攻击者提供一个滩头阵地,他们可以利用它来进一步提升权限;例如通过PATH 和特洛伊木马攻击通过混淆其他后端或利用生产环境内其他未修补的服务。
如果你绝对必须在第三方内容上使用 ImageMagick,请参阅“其他安全注意事项”ImageMagick 的安全策略文档:
除了安全策略之外,您还可以通过以下方式使 ImageMagick 更安全...
- 保持 ImageMagick 最新。最新版本修复了我们过去发现的任何安全漏洞。
- 清理您传递给 ImageMagick 的任何文件名或命令行选项。
- 在经过清理的软件容器(例如 Docker)中运行 ImageMagick。
- 以最低权限用户(例如“nobody”)运行 ImageMagick。明确设置图像文件类型。例如,使用文件名 png:image.png 而不是 image.png。如果文件名中没有明确的图像类型,ImageMagick 会猜测图像类型。