V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zvving
V2EX  ›  程序员

为什么 ImageMagick 这样的开源软件也会引入如此严重的安全漏洞?

  •  
  •   zvving · 2016-05-05 09:13:05 +08:00 · 6721 次点击
    这是一个创建于 3153 天前的主题,其中的信息可能已经有所发展或是发生改变。

    安全漏洞介绍在这里: 安全预警: ImageMagick 图象处理软件存在远程代码执行(CVE-2016-3714) - FreeBuf.COM | 关注黑客与极客

    LZ 知道开源不是万能的,不过 ImageMagick 这样流行的开源软件必然有少部分外部开发协作维护,为什么也会让这样严重的安全问题代码入库?

    有了解类似情况的前辈能科普下不?

    第 1 条附言  ·  2016-05-05 12:51:09 +08:00

    很多朋友回复的是软件会有 bug,这当然没问题。

    不过一个图片转换软件为什么要读取并执行图片内容呢?imagemagick 有类似功能?这点我没能理解。

    第 2 条附言  ·  2016-05-05 21:27:33 +08:00
    乌云的解释很清楚:[CVE-2016-3714 - ImageMagick 命令执行分析 | WooYun 知识库]( http://drops.wooyun.org/papers/15589#rd) 看来的确是有依赖内容调用第三方库执行命令,所以引起的问题。感谢部分答主耐心解释。

    的确是犯了 ”永远不要相信用户的输入“ 类型的错,@justou 👍

    LZ 的确新手一枚,少部分 V 友口下留情才能让 V 站更友好不是。;)
    37 条回复    2016-05-06 09:23:35 +08:00
    function007
        1
    function007  
       2016-05-05 09:17:20 +08:00   ❤️ 2
    OpenSSL 笑而不语
    tony1016
        2
    tony1016  
       2016-05-05 09:19:45 +08:00
    安全 bug 本来就难以被发现。 openssl 比这货更流行,不也心脏出血
    congeec
        3
    congeec  
       2016-05-05 09:23:54 +08:00   ❤️ 1
    开源的好处在于代码有很多人看,能发现部分 bug
    当然,代码写的太乱谁也救不了。你看,一楼很懂
    zkd8907
        4
    zkd8907  
       2016-05-05 09:29:47 +08:00
    开源!=安全
    akagi
        5
    akagi  
       2016-05-05 09:30:27 +08:00
    复杂的边界条件没那么好判断
    realpg
        6
    realpg  
       2016-05-05 09:31:33 +08:00
    LZ 被迫害妄想症泛滥么

    这是作者故意写的? 2333333
    youxiachai
        7
    youxiachai  
       2016-05-05 09:32:54 +08:00
    lz...压根就不知道一个安全漏洞..是历经何其复杂的过程.才被发现.......
    m8syYID5eaas8hF7
        8
    m8syYID5eaas8hF7  
       2016-05-05 09:35:41 +08:00
    @youxiachai 对,之前看 struts 那个漏洞的分析贴,不认真看源码真的是什么都发现不了。。。。
    Testalias
        9
    Testalias  
       2016-05-05 09:39:08 +08:00
    NTP 也爆出漏洞了
    akagi
        10
    akagi  
       2016-05-05 09:40:58 +08:00
    @youxiachai +1 不过自动化工具可以代劳一部分
    xcodebuild
        11
    xcodebuild  
       2016-05-05 10:00:20 +08:00
    只要是软件都会有 bug 。。和开源不开源没关系
    sunsh217
        12
    sunsh217  
       2016-05-05 10:07:40 +08:00
    免费给你用就不错了,还鸡鸡歪歪。 不想用可以不用。
    xbb7766
        13
    xbb7766  
       2016-05-05 10:14:14 +08:00 via Android
    Openssl 和 bash 发来贺电
    leavic
        14
    leavic  
       2016-05-05 10:39:34 +08:00
    我从来就不相信别人写的代码
    loading
        15
    loading  
       2016-05-05 10:42:06 +08:00   ❤️ 2
    对于开源项目,说句实话,大家都忙于完善功能,对于安全方面,很多都只修正浅显的漏洞。
    harry890829
        16
    harry890829  
       2016-05-05 10:43:22 +08:00
    然而,还有一部分人专门 review 代码找 bug 的,找到了拿到黑市卖……
    GeekGao
        17
    GeekGao  
       2016-05-05 10:50:25 +08:00   ❤️ 1
    鄙人之见,代码中的安全问题往往是经验问题。 contributor 们虽然会写代码但并不一定有很强的意识去 review 代码做安全审查
    ragnaroks
        18
    ragnaroks  
       2016-05-05 11:29:52 +08:00
    @loading
    +Max
    foonsun
        19
    foonsun  
       2016-05-05 11:35:55 +08:00
    openssl 笑了~
    dphdjy
        20
    dphdjy  
       2016-05-05 12:30:39 +08:00 via Android
    @leavic 我连自己写的都不相信 :doge:
    janxin
        21
    janxin  
       2016-05-05 12:34:41 +08:00 via iPhone
    为什么大公司的应用也有 bug 呢
    visonme
        22
    visonme  
       2016-05-05 12:43:23 +08:00   ❤️ 1
    自古开源不缺坑,只是个臭虫那更加正常了。
    流行度和有外部团队协作维护这不能说明它就不能有重大 bug ,只是在有些的空间和时间内,相对会减低 bug 而已,毕竟真正一天到晚针对 IM 的做安全测试的公司,团队,个人会有多少呢?
    像 ms , google 等大公司有专业的安全 /测试团队,他们的产品也无法避免存在重大的 bug 的问题,所以对于开源我们不能要求太高了。
    zaishanfeng
        23
    zaishanfeng  
       2016-05-05 12:52:11 +08:00 via Android
    额 漏洞之所以叫漏洞 是因为你没发现的时候它不叫漏洞
    ffffwh
        24
    ffffwh  
       2016-05-05 13:19:11 +08:00
    不好的编程习惯引入的漏洞。

    比方说这次是用了 system()来开 subprocess ,而不是 fork/exec 。
    skyworker
        25
    skyworker  
       2016-05-05 13:24:43 +08:00
    如果你能去传说中的"0day"漏洞交易市场看看, 那里的安全性 bug 估计会更让你叹为观止.
    superbear
        26
    superbear  
       2016-05-05 13:44:15 +08:00
    你以为开源软件背后是一堆人在维护,其实可能只是一两个人在撑着
    zingl
        27
    zingl  
       2016-05-05 14:44:53 +08:00   ❤️ 1
    “让这样严重的安全问题代码入库”

    这马后炮放的
    SlipStupig
        28
    SlipStupig  
       2016-05-05 14:50:56 +08:00
    漏洞就跟 bug 一样,是人就会犯错
    youxiachai
        29
    youxiachai  
       2016-05-05 15:13:52 +08:00
    oh,no

    lz 该从哪里吐槽呢..

    "不过一个图片转换软件为什么要读取并执行图片内容呢? imagemagick 有类似功能?这点我没能理解。"

    试问一些,一个图片转换文件,不读取文件内容,怎么转换...

    至于后面那句"读取并执行图片内容",那是发现了这个远程执行漏洞...才有这个问题.....不知道 lz 能不能看懂..

    我感觉..lz 对于安全这块的知识几乎是空白的..
    palytoxin
        30
    palytoxin  
       2016-05-05 16:04:35 +08:00
    ImageMagick 够难用了,谁说开源就一定好。 IDEA 把 eclipse 甩出一条街
    justou
        31
    justou  
       2016-05-05 16:38:47 +08:00   ❤️ 1
    永远不要相信用户的输入
    keakon
        32
    keakon  
       2016-05-05 17:02:49 +08:00
    有个东西叫缓冲区溢出,没有做好检查的话,会一直往后写,导致栈被修改掉。而函数的返回地址也在栈里,就导致返回时跳到其他区域,就能执行攻击代码了。
    allenx
        33
    allenx  
       2016-05-05 20:29:23 +08:00
    谁让现在这么多闲得蛋疼的人专门去找别人的漏洞呢
    ChiChou
        34
    ChiChou  
       2016-05-05 21:42:09 +08:00
    @allenx 有经济利益驱动,怎么能叫闲的蛋疼呢~
    binux
        35
    binux  
       2016-05-05 21:53:59 +08:00   ❤️ 1
    这个洞根本不能用粗心犯错解释的,完全就是经验习惯问题。
    system 这么高危的调用,正常都要提起 12 分警觉。而且就像 sql 注入一样,过滤是不够的。
    lslqtz
        36
    lslqtz  
       2016-05-06 06:06:37 +08:00 via iPhone
    openssl 笑而不语。
    Neveroldmilk
        37
    Neveroldmilk  
       2016-05-06 09:23:35 +08:00
    开源不代表安全吧,这就好比“公共汽车会比私家车安全”一样的伪命题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2782 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.