easychen
V2EX  ›  DevOps

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

  •  5
     
  •   easychen · Sep 25, 2014 · 12808 views
  •   You need to sign in to view this topic
    This topic created in 4423 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
    hjc4869
    Sep 25, 2014
    1
    不是共享服务器的应该不需要太急吧
    lovedboy
    lovedboy
    Sep 25, 2014
    2
    个人感觉影响有限。要靠cgi才能发挥作用,并且代码里面调用了shell.
    ptyfork
    ptyfork
    Sep 25, 2014
    3
    我的macbook怎么办?
    easychen
    easychen
    OP
    Sep 25, 2014
    4
    @lovedboy 可能被其他漏洞一起利用。修起来不麻烦的就修了吧。
    bullettrain1433
    bullettrain1433
    Sep 25, 2014
    5
    vps已经修复
    ibigbug
    ibigbug
    Sep 25, 2014
    6
    VPS 修复了
    OS X 怎么办?
    withrock
    withrock
    Sep 25, 2014
    7
    这个漏洞怎么利用呢?有exploit例子么哦?
    Sokos
    Sokos
    Sep 25, 2014❤️1
    8
    raincious
    raincious
    Sep 25, 2014❤️1
    9
    有推说:

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

    新的漏洞利用测试代码,输出了日期的话。。
    kqz901002
    kqz901002
    Sep 25, 2014❤️1
    34
    @robertlyc 自带旧版的还是有漏洞的...
    regmach
    regmach
    Sep 25, 2014
    35
    谢谢
    galaxy
    galaxy
    Sep 25, 2014
    36
    话说,用OpenSSH测试,发现没有提权,就是说不考虑CGI的话,Linux其实是安全的?
    withrock
    withrock
    Sep 25, 2014
    37
    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
    cj1324
    Sep 25, 2014
    38
    继续等下一波升级包。。
    9hills
    9hills
    Sep 25, 2014
    39
    这个漏洞对大部分人没影响。。。
    run2
    run2
    Sep 25, 2014
    40
    @9hills (openwrt?)路由器的话会怎么样
    geew
    geew
    Sep 25, 2014
    41
    服务器没有cgi脚本的话应该也没有影响吧
    jiang42
    jiang42
    Sep 25, 2014
    42
    目测freeBSD已经完全修复,有木有最新的测试代码?
    cj1324
    cj1324
    Sep 25, 2014 via Android
    43
    @jiang42 嘿嘿freebsd 默认不带BASH ,官网首页也没见相关安全公告。。
    jiang42
    jiang42
    Sep 25, 2014
    44
    @cj1324 我自己装了个 bash,下午升级了下,已经通过各种版本的测试代码了。。
    woodstonel
    woodstonel
    Sep 25, 2014
    45
    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
    qloog
    Sep 25, 2014
    46
    已修复~~~
    cj1324
    cj1324
    Sep 25, 2014
    47
    @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
    54c3
    Sep 25, 2014
    48
    gouera
    gouera
    Sep 26, 2014
    49
    就是说我的是静态网站,就没事?
    mailunion
    mailunion
    Sep 26, 2014
    50
    @Livid Mod
    magine
    magine
    Sep 26, 2014
    51
    suse源还没修复,虽然不知道为什么,但是好像很糟糕的样子orz
    bjzhush
    bjzhush
    Sep 26, 2014
    52
    Done,thx
    Vonex
    Vonex
    Sep 26, 2014
    53
    升级最新补丁后,执行如下命令:
    env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable"
    如果输出如下则仍然受影响
    still vulnerable
    wwek
    wwek
    Sep 26, 2014
    54
    yum -y update bash;/sbin/ldconfig;rpm -qa -changelog bash | grep "2014"
    Draplater
    Draplater
    Sep 26, 2014 via Android
    55
    @sobigfish openwrt的shell是busybox自带的,不受影响,可能是因为没有环境变量当函数的功能。
    petertao
    petertao
    Sep 27, 2014
    56
    [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
    easychen
    OP
    Sep 30, 2014
    57
    mac 的bash fix出来了 http://support.apple.com/kb/DL1769
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1290 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 91ms · UTC 22:13 · PVG 06:13 · LAX 14:13 · JFK 17:13
    ♥ Do have faith in what you're doing.