请问 WP_Image_Editor_Imagick 漏洞该怎么检测和修复? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gdtv
V2EX    PHP

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

  •  
  •   gdtv 2016-05-10 10:43:30 +08:00 4720 次点击
    这是一个创建于 3444 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    我已经在 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     Solana     5447 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 09:12 PVG 17:12 LAX 02:12 JFK 05:12
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86