“破殼”(Shellshock)漏洞修複

來源:互聯網
上載者:User

“破殼”(Shellshock)漏洞修複
“破殼”(Shellshock)漏洞修複

背景:

距離“破殼”(Shellshock)漏洞漏洞爆發一句過去兩周有餘了(2014年9月24日公布)。相信很多人都已經聽說過了這個危害等級為十的漏洞,編號為CVE-2014-6271,該漏洞將導致遠程攻擊者在受影響的系統上執行任意代碼;相比之下,與上一個著名的漏洞“心臟出血”只有五,不過奇怪的是,“破殼”漏洞目前的反響並不高。“破殼”漏洞實際上早在1989年實際上就已經存在了,修複也是極為麻煩的。且目前為止也沒有哪個bash補丁能夠保證100%修複,強烈建議及時更新最新的bash相關係統補丁,以做到系統的儘可能安全。

漏洞影響範圍:

安天CERT目前已經驗證在Redhat、CentOS、Ubuntu、Fedor、Amazon Linux、MacOS 10.10均擁有存在CVE-2014-6271漏洞的Bash版本,同時由於Bash在各主流作業系統的廣泛應用,此漏洞的影響範圍包括但不限於大多數應用Bash的Unix、Linux、MacOS;而針對這些作業系統管理下的資料均存在高危威脅。漏洞的利用方式會通過與Bash互動的多種應用展開,包括HTTP、DNS、OpenSSH、DHCP等。

漏洞原理:

目前的Bash使用的環境變數是通過函數名稱來調用的,導致漏洞出問題的是以”(){”開頭定義的環境變數在命令ENV中解析成函數後,Bash執行未退出,而是繼續解析並執行shell命令,而其核心的原因在於在輸入的過濾中沒有嚴格限制邊界,也沒有做出合法化的參數判斷。

在補丁中主要進行了參數的合法性過濾,補丁程式在/bulitins/evalstring.c的parse_and_execute函數中進行了輸入的command進行了合法性的邊界檢測,將代碼注入的可能性排除。在排除中主要用到了flags的兩次判斷和command的一次類型匹配,為了能夠flags判斷準確,在補丁中預先定義了SEVAL_FUNCDEF、SEVAL_ONECMD兩個標識作為判斷依據。此漏洞的進行補丁更新有三處,主要進行輸入的command進行過濾作用。

從闡述的漏洞原理可知,漏洞的根本原因存在於Bash的ENV命令實現上,因此漏洞本身是不能夠直接導致遠程代碼執行的。如果達到遠程代碼執行的目的,必須要藉助第三方服務程式作為媒介才能夠實現,第三方服務程式也必須滿足眾多條件才可以充當此媒介的角色。漏洞名稱Shellshock代碼為CVE-2014-6271的漏洞原理圖見如下:

漏洞驗證方法:

目前的Bash指令碼是以通過匯出環境變數的方式支援自訂函數,也可將自訂的Bash函數傳遞給子相關進程。一般函數體內的代碼不會被執行,但此漏洞會錯誤的將“{}”花括弧外的命令進行執行。

###egg:[root@web3 ~]# env x=\'() { :;}; echo vulnerable\' bash -c \"echo this is a test\"vulnerablethis is a test

###如上執行結果表明是存在Shellshock漏洞的。

修複案例:
在這裡將示範離線環境修複Redhat EnterPrise 5的Shellshock漏洞,詳細步驟見如下:
<span style="font-family:Georgia, Bitstream Charter, serif;">1、查看作業系統和bash版本:[root@db01 ~]# lsb_release -dDescription: Red Hat Enterprise Linux Server release 5.8 (Tikanga)[root@db01 ~]# bash -versionGNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)Copyright (C) 2005 Free Software Foundation, Inc.2、開啟官網進入CVE-2014-6271漏洞資料庫頁面,找到對應版本的補丁下載https://access.redhat.com/security/cve/CVE-2014-62713、漏洞補丁下載下來之後是如下兩個檔案[root@db01 ~]# ll bash-*-rw-r--r-- 1 root root 1901644 Oct 10 18:10 bash-3.2-33.el5_10.4.x86_64.rpm-rw-r--r-- 1 root root 1380099 Oct 10 18:10 bash-debuginfo-3.2-33.el5_11.4.x86_64.rpm4、安裝補丁[root@db01 ~]# rpm -ivh bash-debuginfo-3.2-33.el5_11.4.x86_64.rpm warning: bash-debuginfo-3.2-33.el5_11.4.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186Preparing... ########################################### [100%]   1:bash-debuginfo ########################################### [100%][root@db01 ~]# rpm -ivh bash-3.2-33.el5_10.4.x86_64.rpm --forcewarning: bash-3.2-33.el5_10.4.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID e8562897Preparing... ########################################### [100%]   1:bash ########################################### [100%] </span>[root@db01 ~]#
至此該漏洞已經修複完成。漏洞修複驗證:

修複完成之後執行如下命令驗證,其結果說明漏洞已經修複:

[root@db01 ~]# env x=\'() { :;}; echo vulnerable\' bash -c \"echo this is a test\" this is a test[root@db01 ~]#[root@db01 ~]# env -i X=\'() { (a)=>\\\' bash -c \'echo date\'; cat echodateFri Oct 10 18:28:34 CST 2014[root@db01 ~]# 

補丁附件:

bash-3.2-33.el5_10.4.x86_64 -

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.