easychen
V2EX  ›  DevOps

手上有服务器的同学们,赶紧去修 Bash 的漏洞吧

  •  5
     
  •   easychen · Sep 25, 2014 · 12254 views
    This topic created in 4274 days ago, the information mentioned may be changed or developed.

    如何检测使用的Bash有漏洞

    在bash下运行代码:

    env x='() { :;}; echo vulnerable' bash -c 'echo hello'

    如果输出是:

    vulnerable
    hello

    那么赶紧修复吧。

    Ubuntu如何升级

    很简单,直接运行下边apt-get命令即可:

    sudo apt-get update && sudo apt-get install bash

    运行以后再运行上边的代码会提示:

    bash: warning: x: ignoring function definition attempt
    bash: error importing function definition for x'
    hello

    这个时候漏洞就修复好啦。

    CenterOS

    yum update -y bash

    57 replies    2014-09-30 08:58:45 +08:00
    hjc4869
        1
    hjc4869  
       Sep 25, 2014
    不是共享服务器的应该不需要太急吧
    lovedboy
        2
    lovedboy  
       Sep 25, 2014
    个人感觉影响有限。要靠cgi才能发挥作用,并且代码里面调用了shell.
    ptyfork
        3
    ptyfork  
       Sep 25, 2014
    我的macbook怎么办?
    easychen
        4
    easychen  
    OP
       Sep 25, 2014
    @lovedboy 可能被其他漏洞一起利用。修起来不麻烦的就修了吧。
    bullettrain1433
        5
    bullettrain1433  
       Sep 25, 2014
    vps已经修复
    ibigbug
        6
    ibigbug  
       Sep 25, 2014
    VPS 修复了
    OS X 怎么办?
    withrock
        7
    withrock  
       Sep 25, 2014
    这个漏洞怎么利用呢?有exploit例子么哦?
    Sokos
        8
    Sokos  
       Sep 25, 2014   ❤️ 1
    raincious
        9
    raincious  
       Sep 25, 2014   ❤️ 1
    有推说:

    @terrywang

    Bash 爆出严重的安全漏洞 CVE-2014-6271 影响非常大。更杯具的是目前的补丁还是不完全体,可以继续被利用,比如 env -i X='() { (a)=>\' bash -c 'echo curl -Is terry.im'; head echo 囧

    https://twitter.com/terrywang/status/514977519129223169
    easychen
        10
    easychen  
    OP
       Sep 25, 2014   ❤️ 1
    @ibigbug OSX我也不知道怎么办,如果不自己编译,大概得等brew放bash新版吧。
    woollq
        11
    woollq  
       Sep 25, 2014
    已修复 多谢!!!!
    Livid
        13
    Livid  
    MOD
    PRO
       Sep 25, 2014
    package { 'bash':
    ensure => latest
    }
    reusFork
        14
    reusFork  
       Sep 25, 2014
    没装apache不用cgi,不会有影响的。debian系的默认shell还是dash。
    路由的web界面倒是可能用cgi,不过一般不用bash
    lyragosa
        15
    lyragosa  
       Sep 25, 2014
    mac怎么办!!!
    robertlyc
        16
    robertlyc  
       Sep 25, 2014
    @lyragosa brew update && brew install bash
    towser
        17
    towser  
       Sep 25, 2014
    陈理捷老师?已fo。
    robertlyc
        18
    robertlyc  
       Sep 25, 2014
    @easychen homebrew已fix了
    MaiCong
        19
    MaiCong  
       Sep 25, 2014
    感谢 已更新
    fypyyzr
        20
    fypyyzr  
       Sep 25, 2014
    @ibigbug 泥吼啊
    ptyfork
        21
    ptyfork  
       Sep 25, 2014
    你们装完homebrew的bash顺便把系统自带的bash删了? 否则update有啥用?
    shuangchun
        22
    shuangchun  
       Sep 25, 2014
    centeros是什么。
    chunchu
        23
    chunchu  
       Sep 25, 2014
    感谢,已更新,虽然没有什么重要的服务跑在上面
    demo
        24
    demo  
       Sep 25, 2014
    纯windows打酱油来了
    knightlhs
        25
    knightlhs  
       Sep 25, 2014
    centos 修复完成 非常感谢 虽然只是跑了pptp 跟 blog
    Lycnir
        26
    Lycnir  
       Sep 25, 2014
    @Livid 请问大大用的是啥配置管理工具?
    Tink
        27
    Tink  
    PRO
       Sep 25, 2014
    我擦,BuyVM的Ubuntu居然update之后bash没有新版。。。
    jqw1992
        28
    jqw1992  
       Sep 25, 2014
    谢谢,已经更新上了
    Tink
        29
    Tink  
    PRO
       Sep 25, 2014
    换了个源好了。。
    Livid
        30
    Livid  
    MOD
    PRO
       Sep 25, 2014 via iPhone
    @Lycnir 这个就是 Puppet 的语法。
    ygf0934
        31
    ygf0934  
       Sep 25, 2014
    已修复,感谢
    mornlight
        32
    mornlight  
       Sep 25, 2014
    panlilu
        33
    panlilu  
       Sep 25, 2014
    X='() { (a)=>\' sh -c "echo date"; cat echo

    新的漏洞利用测试代码,输出了日期的话。。
    kqz901002
        34
    kqz901002  
       Sep 25, 2014   ❤️ 1
    @robertlyc 自带旧版的还是有漏洞的...
    regmach
        35
    regmach  
       Sep 25, 2014
    谢谢
    galaxy
        36
    galaxy  
       Sep 25, 2014
    话说,用OpenSSH测试,发现没有提权,就是说不考虑CGI的话,Linux其实是安全的?
    withrock
        37
    withrock  
       Sep 25, 2014
    Bash安全缺陷验证及修复方法
    ----UCloud云计算团队
    一、漏洞概述

       在GNU bash环境变量中定义一个函数之后,如果后续还有其它字符串,bash在解析这些字符串的时候存在一个缺陷,允许远程攻击者执行任意的命令,只要攻击者 构建一个特殊的环境变量即可。攻击者可以利用此缺陷重写或绕过环境变量的限制执行shell命令,从而导致信息泄漏、未授权的恶意修改、服务中断。

    下面是验证过程:

    [root@10-4-2-230 test]# ls
    [root@10-4-2-230 test]# env -i  X='() { (a)=>\' bash -c 'echo touch google'
    bash: X: line 1: syntax error near unexpected token `='
    bash: X: line 1: `'
    bash: error importing function definition for `X'
    [root@10-4-2-230 test]# ls
    echo  google


    二、受影响版本

      目前GNU bash4.3及以下版本存在此问题。
    三、利用场景

    如下业务场景中都会受此缺陷影响:
       1、OpenSSH sshd使用了ForceCommand特性
       
       ForceCommand特性用来给远程用户提供受限的命令执行能力,因此使用了此特性的如git、subversion等都会受影响。
       
       2、Apache HTTP Server使用了modcgi和mod_cgid模块;
                
       在Apache Server启用了modcgi和mod_cgid模块时,只要CGI脚本是由bash编写,或者使用了派生的subshell都会受影响。能够产生这样的subshell的包括:
       C语言的system/popen,Python的os.system/os.popen,PHP的system/exec,Perl的open/system。
     
    四、修复方法

    yum clean all
    yum --enablerepo=updates install bash

    五、验证方法

    验证是否存在次漏洞的方法:
          
    [root@10-4-2-230 test]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test”
    vulnerable
    this is a test

    漏洞修复之后,再执行该命令:
    [root@10-4-2-230 test]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
         bash: warning: x: ignoring function definition attempt
         bash: error importing function definition for `x'
         this is a test

    六、参考链接

    https://www.invisiblethreat.ca/2014/09/cve-2014-6271/
    cj1324
        38
    cj1324  
       Sep 25, 2014
    继续等下一波升级包。。
    9hills
        39
    9hills  
       Sep 25, 2014
    这个漏洞对大部分人没影响。。。
    run2
        40
    run2  
       Sep 25, 2014
    @9hills (openwrt?)路由器的话会怎么样
    geew
        41
    geew  
       Sep 25, 2014
    服务器没有cgi脚本的话应该也没有影响吧
    jiang42
        42
    jiang42  
       Sep 25, 2014
    目测freeBSD已经完全修复,有木有最新的测试代码?
    cj1324
        43
    cj1324  
       Sep 25, 2014 via Android
    @jiang42 嘿嘿freebsd 默认不带BASH ,官网首页也没见相关安全公告。。
    jiang42
        44
    jiang42  
       Sep 25, 2014
    @cj1324 我自己装了个 bash,下午升级了下,已经通过各种版本的测试代码了。。
    woodstonel
        45
    woodstonel  
       Sep 25, 2014
    Bash程序爆出严重漏洞CVE-2014-6271(https://access.redhat.com/security/cve/CVE-2014-6271)。该漏洞被定级为高危,很容易被恶意攻击者利用,侵入您的云主机。为了保障您的云主机的安全,建议对您的的云主机进行如下的漏洞验证和修复操作:
    1. 漏洞验证

    在命令行键入如下命令:

    env x="() { :;}; echo vulnerable" bash -c "echo this is a test"
    如果输出为:

    vulnerable
    this is a test
    则证明您的云主机存在此漏洞。

    如果输出类似如下:

    bash: warning: x: ignoring function definition attempt
    bash: error importing function definition for "x"
    this is a test
    则证明此漏洞已经修复。

    2. 修复漏洞

    如果您的系统为CentOS系统,请以root身份执行以下命令,以升级Bash为最新版:

    yum update bash -y
    如果您的系统为Ubuntu/Debian系统,请以root身份执行以下命令:

    apt-get update
    apt-get install bash -y
    更新后立即生效,不需要重启服务或云主机。

    我们会同步更新系统模板,预计今天以内更新完成,届时您新创建的云主机将不受此漏洞影响。如果有其他问题,请联系MOS QQ客服,或发邮件到[email protected]

    说明:Ubuntu 13.10已经于2014年7月17日停止更新,因此无法获得更新,建议你升级至14.04LTS。具体升级指导,请参见https://help.ubuntu.com/community/TrustyUpgrades#Ubuntu_Servers_.28Recommended.29 />
    参考链接:

    https://access.redhat.com/node/1200223

    http://www.cnbeta.com/articles/331569.htm

    -------------
    美团云团队
    qloog
        46
    qloog  
       Sep 25, 2014
    已修复~~~
    cj1324
        47
    cj1324  
       Sep 25, 2014
    @jiang42
    实践证明 FreeBSD 和大多数发行版本一样
    感谢 @panlilu 提供测试支持。

    大约在19个小时以前
    提交记录 http://svnweb.freebsd.org/ports/head/shells/bash/
    只修复了 CVE-2014-6271

    并没有修复 CVE-2014-7169

    官方完整修复前。推荐做法 用csh代替bash

    懒得截图了。直接贴片段
    ···
    └──>> bash --version
    GNU bash, version 4.3.25(0)-release (amd64-portbld-freebsd10.0)
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

    This is free software; you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.

    └──>> env -i X='() { (a)=>\' sh -c "echo date"; cat echo
    date
    cat: echo: No such file or directory
    ···
    54c3
        48
    54c3  
       Sep 25, 2014
    gouera
        49
    gouera  
       Sep 26, 2014
    就是说我的是静态网站,就没事?
    mailunion
        50
    mailunion  
       Sep 26, 2014
    @Livid Mod
    magine
        51
    magine  
       Sep 26, 2014
    suse源还没修复,虽然不知道为什么,但是好像很糟糕的样子orz
    bjzhush
        52
    bjzhush  
       Sep 26, 2014
    Done,thx
    Vonex
        53
    Vonex  
       Sep 26, 2014
    升级最新补丁后,执行如下命令:
    env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable"
    如果输出如下则仍然受影响
    still vulnerable
    wwek
        54
    wwek  
       Sep 26, 2014
    yum -y update bash;/sbin/ldconfig;rpm -qa -changelog bash | grep "2014"
    Draplater
        55
    Draplater  
       Sep 26, 2014 via Android
    @sobigfish openwrt的shell是busybox自带的,不受影响,可能是因为没有环境变量当函数的功能。
    petertao
        56
    petertao  
       Sep 27, 2014
    [root@MyAli ~]# yum update bash -y
    Loaded plugins: security
    Setting up Update Process
    Package(s) bash available, but not installed.
    No Packages marked for Update

    这种情况怎么回事呢?
    easychen
        57
    easychen  
    OP
       Sep 30, 2014
    mac 的bash fix出来了 http://support.apple.com/kb/DL1769
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4083 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 238ms · UTC 10:15 · PVG 18:15 · LAX 03:15 · JFK 06:15
    ♥ Do have faith in what you're doing.