这几天连续收到阿里云发来的漏洞警告短信,提示我的服务器存在WordPress的WP_Image_Editor_Imagick漏洞。刚找了一下相关解决方法,找到一篇比较详细的文章,按照上面的办法做完,进阿里云控制台再看果然没有报警了。所以把文章转过来,希望能帮到还没修补漏洞的朋友。
———————以下是原文开始:———————
作为一名站长而言,其实早在几天之前就看到了相关资讯新闻: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一键安装包中并没有安装。所以,解决阿里云漏洞检测报告即可!