V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gdtv
V2EX  ›  PHP

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

  •  
  •   gdtv · 2016-05-10 10:43:30 +08:00 · 4284 次点击
    这是一个创建于 2920 天前的主题,其中的信息可能已经有所发展或是发生改变。
    25 条回复    2016-05-11 11:14:24 +08:00
    zqcolor
        1
    zqcolor  
       2016-05-10 10:48:44 +08:00   ❤️ 1
    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
        2
    wzxjohn  
       2016-05-10 11:12:41 +08:00   ❤️ 3
    这也叫修复?求别误导别人。
    该漏洞真正的原因与 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
        3
    gdtv  
    OP
       2016-05-10 11:20:53 +08:00
    @wzxjohn 如果是自己的服务器,请问怎么升级 ImageMagick 呢?谢谢
    prozhong
        4
    prozhong  
       2016-05-10 11:35:52 +08:00
    我装了 wp 但是我的主机里 rpm -qa |grep ImageMagicK 未显示安装
    maskerTUI
        5
    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
        6
    gdtv  
    OP
       2016-05-10 12:01:29 +08:00
    @maskerTUI 我的服务器上没有 /etc/ImageMagick/policy.xml 这个文件,怎么办?
    DesignerSkyline
        8
    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
        9
    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
        10
    hqfzone  
       2016-05-10 16:49:39 +08:00
    如果是自己用的 wordpress ,不用太紧张,因为漏洞需要 author 及以上权限。
    anewg
        11
    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
        12
    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
        13
    yekailyu  
       2016-05-10 17:21:19 +08:00
    主机里有 wp ,但是 /etc/ImageMagick 根本没有这个文件夹,但是阿里云的什么什么漏洞扫描就扫出来 有 WP_Image_Editor_Imagick 这个漏洞。 请问这咋修复啊。 阿里云这招儿挺操蛋的
    yekailyu
        14
    yekailyu  
       2016-05-10 17:21:46 +08:00
    maskerTUI
        15
    maskerTUI  
       2016-05-10 17:54:36 +08:00
    @yekailyu 先看完我上面回复的两篇文章,最重要的是看一下自己是不是用 imagemagick 的,因为一般 wp 、 dz 都是用 gd 来处理的,阿里云误报也不是什么稀奇事。
    gdtv
        16
    gdtv  
    OP
       2016-05-10 17:56:05 +08:00 via Android
    @maskerTUI 请问怎么看自己是不是用 imagemagick ?
    wzxjohn
        17
    wzxjohn  
       2016-05-10 18:56:54 +08:00 via iPhone
    阿里云扫的应该是 convert 程序,只要安装了 ImageMagick 就会有 convert 程序。
    检查办法是执行 convert -v 看看版本。
    reb00ts
        18
    reb00ts  
       2016-05-10 19:12:27 +08:00
    @wzxjohn 我怎么感觉阿里是直接扫代码目录找 media.php 文件呢->_->
    gdtv
        19
    gdtv  
    OP
       2016-05-10 20:15:08 +08:00
    @wzxjohn
    convert -v
    bash: convert: command not found
    这是?
    lslqtz
        20
    lslqtz  
       2016-05-10 20:44:42 +08:00 via iPhone
    @hqfzone 但是我有上传头像。。
    lslqtz
        21
    lslqtz  
       2016-05-10 20:44:54 +08:00 via iPhone
    @gdtv 没有安装。
    lslqtz
        22
    lslqtz  
       2016-05-10 20:46:21 +08:00 via iPhone
    @wzxjohn 我觉得是扫 php 测试完后那个我就删了。
    venster
        23
    venster  
       2016-05-10 20:48:59 +08:00 via Android   ❤️ 1
    @yekailyu 你进阿里云的安骑士补丁页面,看一下详细描述,就是采用了楼上所说的让 G D 库进行优先处理的方案。
    yekailyu
        24
    yekailyu  
       2016-05-11 00:01:40 +08:00
    @venster 感谢。 看来阿里云就是用这种方式。。。全体扫描了一下,然后收费做这个。。临时修复。
    wzxjohn
        25
    wzxjohn  
       2016-05-11 11:14:24 +08:00   ❤️ 1
    @reb00ts
    @lslqtz 也有可能,不过毕竟我不用阿里云,也没法研究到底是扫什么。不过扫 php 是完全错误的做法,这个漏洞的叫法也是完全错误的。
    @gdtv 这表示你没装 ImageMagick ,不会受漏洞影响。除非你是编译安装的,没装到默认 $PATH 里。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3599 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 11:24 · PVG 19:24 · LAX 04:24 · JFK 07:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.