请问 WP_Image_Editor_Imagick 漏洞该怎么检测和修复?

2016-05-10 10:43:30 +08:00
 gdtv
4442 次点击
所在节点    PHP
25 条回复
zqcolor
2016-05-10 10:48:44 +08:00
Rewordpress WPImageEditorImagick 指令注入漏洞
在 /wp-includes/media.php 的_wp_image_editor_choose 函数内部找到:
$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' ) );
wzxjohn
2016-05-10 11:12:41 +08:00
这也叫修复?求别误导别人。
该漏洞真正的原因与 WordPress 无关,是 ImageMagick 的漏洞,也就是
CVE-2016-3714 , Insufficient shell characters filtering leads to (potentially remote) code execution ,即不完善的 Shell 字符过滤导致(有可能远程)代码执行。
CVE-2016-3718 , SSRF ,全称 Server-Side Request Forgery ,即“服务器端请求伪造”漏洞。
CVE-2016-3715 , File deletion ,文件删除。
CVE-2016-3716 , File moving ,文件位置移动。
CVE-2016-3717 , Local file read ,本地文件读取。
这些。正确的方法是联系主机商升级 ImageMagick 的版本来修复漏洞,而不是通过调整 GD 库的优先级来做。如果主机没有装 GD 库的话,这个顺序调整根本没用。
gdtv
2016-05-10 11:20:53 +08:00
@wzxjohn 如果是自己的服务器,请问怎么升级 ImageMagick 呢?谢谢
prozhong
2016-05-10 11:35:52 +08:00
我装了 wp 但是我的主机里 rpm -qa |grep ImageMagicK 未显示安装
maskerTUI
2016-05-10 11:56:24 +08:00
在 “/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>
gdtv
2016-05-10 12:01:29 +08:00
@maskerTUI 我的服务器上没有 /etc/ImageMagick/policy.xml 这个文件,怎么办?
maskerTUI
2016-05-10 12:04:40 +08:00
DesignerSkyline
2016-05-10 12:13:27 +08:00
我已经在 https://www.v2ex.com/t/277167 回复过了,安装更新即可
openSUSE 13.2 , Leap 42.1 以及 SUSE Linux Enterprise 可以通过安装发布的安全更新来解决
- openSUSE Leap 42.1:

zypper in -t patch openSUSE-2016-574=1

- openSUSE 13.2:

zypper in -t patch openSUSE-2016-569=1

- SUSE Linux Enterprise Workstation Extension 12-SP1:

zypper in -t patch SUSE-SLE-WE-12-SP1-2016-733=1

- SUSE Linux Enterprise Workstation Extension 12:

zypper in -t patch SUSE-SLE-WE-12-2016-733=1

- SUSE Linux Enterprise Software Development Kit 12-SP1:

zypper in -t patch SUSE-SLE-SDK-12-SP1-2016-733=1

- SUSE Linux Enterprise Software Development Kit 12:

zypper in -t patch SUSE-SLE-SDK-12-2016-733=1

- SUSE Linux Enterprise Server 12-SP1:

zypper in -t patch SUSE-SLE-SERVER-12-SP1-2016-733=1

- SUSE Linux Enterprise Server 12:

zypper in -t patch SUSE-SLE-SERVER-12-2016-733=1

- SUSE Linux Enterprise Desktop 12-SP1:

zypper in -t patch SUSE-SLE-DESKTOP-12-SP1-2016-733=1

- SUSE Linux Enterprise Desktop 12:

zypper in -t patch SUSE-SLE-DESKTOP-12-2016-733=1
DesignerSkyline
2016-05-10 12:14:43 +08:00
修复的具体内容如下:

This update for ImageMagick fixes the following issues:

Security issues fixed:
- Several coders were vulnerable to remote code execution attacks, these
coders have now been disabled by default but can be re-enabled by
editing "/etc/ImageMagick-*/policy.xml" (bsc#978061)
- CVE-2016-3714: Insufficient shell characters filtering leads to
(potentially remote) code execution
- CVE-2016-3715: Possible file deletion by using ImageMagick's 'ephemeral'
pseudo protocol which deletes files after reading.
- CVE-2016-3716: Possible file moving by using ImageMagick's 'msl' pseudo
protocol with any extension in any folder.
- CVE-2016-3717: Possible local file read by using ImageMagick's 'label'
pseudo protocol to get content of the files from the server.
- CVE-2016-3718: Possible Server Side Request Forgery (SSRF) to make HTTP
GET or FTP request.

Bugs fixed:
- Use external svg loader (rsvg)
hqfzone
2016-05-10 16:49:39 +08:00
如果是自己用的 wordpress ,不用太紧张,因为漏洞需要 author 及以上权限。
anewg
2016-05-10 16:56:04 +08:00
https://imagetragick.com/

使用 imagemagick 前检测文件 signatures (不要用 imagemagick 自身来检测文件类型)
比如使用 php 读取文件前几字节判断是否是你需要处理的图片( https://en.wikipedia.org/wiki/List_of_file_signatures

policy.xml 最好也一并加一下。
former
2016-05-10 17:11:58 +08:00
摘自: http://drops.wooyun.org/papers/15589
0x04 漏洞修复

关于这个漏洞影响 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 ,我们通过配置如下的 xml 来禁止解析 https 等敏感操作:
——

<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>
yekailyu
2016-05-10 17:21:19 +08:00
主机里有 wp ,但是 /etc/ImageMagick 根本没有这个文件夹,但是阿里云的什么什么漏洞扫描就扫出来 有 WP_Image_Editor_Imagick 这个漏洞。 请问这咋修复啊。 阿里云这招儿挺操蛋的
yekailyu
2016-05-10 17:21:46 +08:00
maskerTUI
2016-05-10 17:54:36 +08:00
@yekailyu 先看完我上面回复的两篇文章,最重要的是看一下自己是不是用 imagemagick 的,因为一般 wp 、 dz 都是用 gd 来处理的,阿里云误报也不是什么稀奇事。
gdtv
2016-05-10 17:56:05 +08:00
@maskerTUI 请问怎么看自己是不是用 imagemagick ?
wzxjohn
2016-05-10 18:56:54 +08:00
阿里云扫的应该是 convert 程序,只要安装了 ImageMagick 就会有 convert 程序。
检查办法是执行 convert -v 看看版本。
reb00ts
2016-05-10 19:12:27 +08:00
@wzxjohn 我怎么感觉阿里是直接扫代码目录找 media.php 文件呢->_->
gdtv
2016-05-10 20:15:08 +08:00
@wzxjohn
convert -v
bash: convert: command not found
这是?
lslqtz
2016-05-10 20:44:42 +08:00
@hqfzone 但是我有上传头像。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/277554

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX