Bash 新漏洞:用户可以执行 root 权限 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mengzhuo
V2EX    信息安全

Bash 新漏洞:用户可以执行 root 权限

  •  
  •   mengzhuo 2014-09-25 09:38:43 +08:00 10003 次点击
    这是一个创建于 4085 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Github上通知的
    http://seclists.org/oss-sec/2014/q3/649

    共享VPS的可得小心了……
    第 1 条附言    2014-09-25 11:02:02 +08:00
    请参考 http://seclists.org/oss-sec/2014/q3/650

    主要是bash对环境变量的解读有问题

    导致所有CGI接口的程序都是潜在的受害者
    第 2 条附言    2014-09-25 11:10:12 +08:00
    三个维度的攻击,CGI,OpenSSH,和牵扯着环境变量的程序,感觉不比心血差

    So far, HTTP requests to CGI scripts have been identified as the major
    attack vector.
    ....
    The other vector is OpenSSH, either through AcceptEnv variables, TERM
    or SSH_ORIGINAL_COMMAND.
    Other vectors involving different environment variable set by
    additional programs are expected.
    第 3 条附言    2014-09-25 11:32:59 +08:00
    红帽的文章:
    如何构建攻击
    https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/

    爆漏洞的邮件组里大家已经开始指责作者在embargo内向外透露了这个漏洞的详细信息……江湖味太浓了
    34 条回复    2014-09-25 22:11:09 +08:00
    jasontse
        1
    jasontse  
       2014-09-25 09:51:33 +08:00 via Android
    webshell 也要注意被提权
    semicircle21
        2
    semicircle21  
       2014-09-25 09:53:13 +08:00
    常年 root 敢死队用户表示这都不是事儿~
    chinni
        3
    chinni  
       2014-09-25 09:57:35 +08:00
    Cent 好像已经修复了?
    lyragosa
        4
    lyragosa  
       2014-09-25 09:58:00 +08:00
    zsh用户表示应该无影响?
    steptodream
        5
    steptodream  
       
    @lyragosa 除非你系统没装bash
    66beta
        7
    66beta  
       2014-09-25 10:10:52 +08:00
    俺的DO上只有测试站点,不怕不怕
    顶多被copy走价值2万多的知识产权
    LazyZhu
        8
    LazyZhu  
       2014-09-25 10:14:13 +08:00   1
    业务使用的 Debian 其实只要加一个安全补丁源,每天更新下就可以了。
    https://www.debian.org/security/
    coolicer
        9
    coolicer  
       2014-09-25 10:17:29 +08:00
    @LazyZhu Ubuntu可以用吗?
    LazyZhu
        10
    LazyZhu  
       2014-09-25 10:22:24 +08:00
    @coolicer
    https://help.ubuntu.com/14.04/serverguide/configuration.html
    Ubuntu也有相应的关键安全补丁源的
    glasslion
        11
    glasslion  
       2014-09-25 10:27:08 +08:00
    @lyragosa csh, tcsh, ksh, sh, and zsh 无一幸免
    dndx
        12
    dndx  
       2014-09-25 10:27:17 +08:00
    root 权限有点夸张了吧,bash 又不是 setuid 的程序。
    Tink
        13
    Tink  
    PRO
       2014-09-25 10:27:35 +08:00 via iPhone
    我去,那zsh呢
    heiher
        14
    heiher  
       2014-09-25 10:49:08 +08:00
    哪里有说和 root 权限有关了?
    cxl008
        15
    cxl008  
       2014-09-25 10:55:48 +08:00
    求方法
    lsylsy2
        16
    lsylsy2  
       2014-09-25 11:20:04 +08:00
    @LazyZhu 有办法在命令里只更新来自这个源的内容么?
    万一用cron更新的时候把别的什么软件版本更新了出问题就了……
    LazyZhu
        17
    LazyZhu  
       2014-09-25 11:41:40 +08:00
    @lsylsy2
    笨办法,多个sources.list切换

    /etc/apt/sources.list.security
    /etc/apt/sources.list.all
    fany
        18
    fany  
       2014-09-25 12:17:42 +08:00 via iPhone
    如果您使用的是CentOS、RedHat或Fedora,请在SSH下执行以下命令:
    yum clean all
    yum update bash
    如果您用的系统是Ubuntu或Debian,请在SSH下执行以下命令:
    apt-get update
    apt-get upgrade
    dorentus
        19
    dorentus  
       2014-09-25 12:27:04 +08:00
    没看到和 root 权限相关的说明。

    CGI 暂且不提(反正多年没用过 CGI 了),
    我的本地和远程机器的登录 shell 都是 fish shell,

    ---- 本地 ----

    1) env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
    显示果然有漏洞

    2) env x='() { :;}; echo vulnerable' fish -c "echo this is a test"
    没触发漏洞

    3) env x='() { :;}; echo vulnerable' zsh -c "echo this is a test"
    没触发漏洞

    4) set -x x '() { :;}; echo vulnerable' # 相当于 bash 的 export x=...
    bash -c "echo this is a test"
    触发漏洞

    ---- ssh ----
    5) set -x x '() { :;}; echo vulnerable'
    ssh 到远程机器之后执行:bash -c "echo this is a test"
    没见漏洞(这是自然的,因为远程机器 sshd 配置里面 AcceptEnv 只允许了 LANG LC_*)

    6) 那么试试 set -x LANG '() { :;}; echo vulnerable' # 这里`包括之后每次执行一条命令都会有警告 locale 不对
    那么执行:bash -c "echo this is a test"
    很自然地还是没见漏洞

    7) 再试 set -x TERM '() { :;}; echo vulnerable'
    ssh 到远程机器,远程 fish shell 提示:Could not set up terminal
    然后连接断开

    PS: 同第六步,设置 LANG 之后,ssh 到另一台登录 shell 为 bash 的机器上,LANG 依然是没传递过去
    同第七步,设置 TERM,然后 ssh 到另一台登录 shell 为 bash 的机器上,终于成功触发了漏洞
    mind3x
        20
    mind3x  
       2014-09-25 12:33:53 +08:00
    见风就是雨……谁说的有root?谁说的其他shell也中招?瞎JB扯...
    mornlight
        21
    mornlight  
       2014-09-25 12:34:30 +08:00
    @fany 没看到更新啊yum update bash后显示No Packages marked for Update
    heganj
        22
    heganj  
       2014-09-25 12:39:39 +08:00
    hjc4869
        24
    hjc4869  
       2014-09-25 12:58:26 +08:00
    apt-get purge bash;
    Busy
        25
    Busy  
       2014-09-25 13:01:12 +08:00
    os x 怎么说
    mengzhuo
        26
    mengzhuo  
    OP
       2014-09-25 14:08:08 +08:00
    @mind3x

    很多服务是用Root权限跑的,
    这些用root权限+和环境变量相关的结构就有可能制造攻击,DHCP、打印机、samba、Apache
    懂?
    mind3x
        27
    mind3x  
       2014-09-25 14:19:15 +08:00
    @mengzhuo 你用root来跑apache? 也是醉了。提权归提权,bash归bash,别混为一谈。
    nicai000
        28
    nicai000  
       2014-09-25 14:24:31 +08:00
    @mengzhuo 你才不懂吧, 这个漏洞就事论事, 和"用户可以执行root权限"区别很大, 不可一概而论.

    而且CGI现在几个人用? 另外你的DHCP, 打印机, samba都能接收命令挂钩BASH CGI? 别闹了好嘛?
    mengzhuo
        29
    mengzhuo  
    OP
       2014-09-25 14:40:00 +08:00
    @nicai000
    @mind3x

    不是我说的
    http://blog.erratasec.com/2014/09/bash-shellshock-bug-is-wormable.html#.VCOXsCtdWf8


    而且:
    随便一台Debian

    ps aux | grep root
    root 1259 0.0 0.0 10232 1000 ? S 9月15 0:01 /sbin/dhclient
    root 28592 0.0 0.1 279040 4784 ? S 9月16 0:01 smbd -F

    呵呵
    nicai000
        30
    nicai000  
       2014-09-25 14:54:36 +08:00
    @mengzhuo 他不懂你更不懂, 没问题啊. 而且他也没说把这个和简单提权混为一谈. 还是得说回来, dhcp和smb挂了bash cgi? 没有就没事儿啊, 呵呵.
    palxex
        31
    palxex  
       2014-09-25 17:12:08 +08:00
    homebrew通过bottle安装的注意:没用。请自行build-from-source!
    dorentus
        32
    dorentus  
       2014-09-25 19:44:21 +08:00
    @mengzhuo
    稍微正常一点的服务,即使用 root 的话也是做一些设置之后就 drop root 权限、切换到普通权限用户的。

    我的机器上,没有 dhclient 和 smbd。(再说 dhclient 又不会从网络获取什么环境变量,更不用说 shell 了)。

    ps aux | grep root 能看到的,可能会受影响的,也就是 nginx 而已。但是 nginx 也只是 master process 是用 root 跑的,它没有监听任何端口;监听端口、提供 HTTP service 的那些子进程,都是用 www-data 用户跑的。
    9hills
        33
    9hills  
       2014-09-25 20:12:03 +08:00
    lz不要耸人听闻,哪里root提权了
    iwinux
        34
    iwinux  
       2014-09-25 22:11:09 +08:00
    真是笑死
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4930 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:40 PVG 17:40 LAX 01:40 JFK 04:40
    Do have faith in what you're doing.
    ubao msn 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