解决 WordPress 博客 WP_Image_Editor_Imagick 漏洞

Bittersweet 转载2016-5-11
本文最后更新于 2567 天前(2016-5-11),其中的信息可能已经有所发展或者不再适用于现阶段。
本文全长 1249 字,全部读完大约需要 4 分钟。

作为一名站长而言,其实早在几天之前就看到了相关资讯新闻:ImageMagick 被爆高危漏洞(CVE-2016-3714),黑客等攻击者通过此漏洞可执行任意命令,最终窃取重要信息取得服务器控制权。想来对服务器而言危害程度还是比较大的。

于此同时,今天下午档主收到来自阿里云服务器的安全提示,一个存放在阿里云主机上的 WordPress 网站程序存在 WP_Image_Editor_Imagick 漏洞问题,需要登入后台修复补丁。

当然,提供在线修复补丁功能的骑士专业版作为阿里云的收费服务,当然不是免费获取的,不过此服务收费并不贵,如果没有技术能力并且期待官方的安全服务保障的站长,缴费仍是最佳选择。对于档主而言,自然不会因为这个 WP_Image_Editor_Imagick 漏洞就轻易开通收费服务,因为这个漏洞本来就不是出自 WP 程序本身,而是服务器环境中安装有 ImageMagick 且没有升级修复补丁才有。

仔细检查了一遍,云主机系统并没有安装过 ImageMagick 组件,不过最后为了安全起见,尽管没有安装 ImageMagick,既然阿里云提示了漏洞还是应该及时修补一番。

临时解决 WP 漏洞的方法只需要修改一行代码就好。

1、找到 wp-includes/media.php,第 2898 行;

2、修改下列第一条代码为第二条:

$implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_Imagick' ,  'WP_Image_Editor_GD' ) );

$implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' ) );

即把 2 个库优先级对调即可。

这个修复仅是临时解决方案,更可靠、最直接的方法还是请将 WordPress 程序升级到最新版本,如果服务器安装有 ImageMagick 组建同样需要升级至新版本。

最后顺便附上 ImageMagick 官方提供的临时解决措施:

通过配置策略文件暂时禁用 ImageMagick,可在 /etc/ImageMagick/policy.xml 文件中添加如下代码:

<policymap>

<policy domain="coder" rights="none" pattern="EPHEMERAL" />

<policy domain="coder" rights="none" pattern="URL" />

<policy domain="coder" rights="none" pattern="HTTPS" />

<policy domain="coder" rights="none" pattern="MVG" />

<policy domain="coder" rights="none" pattern="MSL" /></policymap>

相关链接:

ImageMagick(http://www.imagemagick.org/

WordPress(https://cn.wordpress.org/

补充内容:

看到应该有不少站长朋友关注这个问题,需要说明一下的是:该漏洞真正的原因与 WordPress 无关,是 ImageMagick 的漏洞,通过修改 GD 库顺序只能绕过阿里云的安全漏洞检测,如果系统安装有 ImageMagick 请首先解决其自身漏洞,如果服务器或者云主机本身并没有安装 ImageMagick 组件(检查 /etc 下是否存在 /ImageMagick 文件夹可知)那么问题并不大,因为 WordPress、discuz! 等程序一般都是采用 GD 库来处理的,阿里云出现误报也不是什么稀奇事。

其次,只要安装了 ImageMagick 就会有 convert 程序。检查办法是执行 convert -v 看版本。如果返回 bash: convert: command not found 说明系统没有找到 convert 程序,表明并没有安装 ImageMagick ,同样无需担忧。

而若安装了 ImageMagick 程序,由于这个漏洞影响 ImageMagick 6.9.3-9 以前所有版本,包括 ubuntu 源中安装的 ImageMagick 。而官方在 6.9.3-9 版本中对漏洞进行了不完全的修复。所以,我们不能仅通过更新 ImageMagick 的版本来杜绝这个漏洞。

可以通过如下两个方法来暂时规避漏洞:

第一,处理图片前,先检查图片的“magic bytes”,也就是图片头,如果图片头不是你想要的格式,那么就不调用 ImageMagick 处理图片。如果你是 php 用户,可以使用 getimagesize 函数来检查图片格式,而如果你是 wordpress 等 web 应用的使用者,可以暂时卸载 ImageMagick ,使用 php 自带的 gd 库来处理图片。

第二,使用 policy file 来防御这个漏洞,这个文件默认位置在 /etc/ImageMagick/policy.xml。具体修改内容参考前文提供的代码。

所以,ImageMagick 漏洞虽然在新闻报道中传言危害极大,但是也是针对大型网站或者广大虚拟主机商而言,一般个人网站的云主机配置并没有安装 ImageMagick 组件,至少来自军哥的 LNMP 一键安装包中并没有安装。所以,解决阿里云漏洞检测报告即可!

本文转载自网络。