Bash是什麼東東?很多用戶們大概還不是很清楚吧,其實bash就是一個應用於大多數基於Linux或Unix操作系統的命令行程序,其中也包括Mac OS。那麼該怎麼升級Mac OS上的bash呢?現在小編就教大家一種手動升級的方法。
什麼是bash?
bash是應用於大多數基於Linux或Unix操作系統的命令行程序,其中包括有Mac OS。如果你的操作系統的默認命令行shell是bash的話,它就可能被網絡上遠端的黑客用於攻擊你的電腦。通過一個小小的腳本黑客便可以在你的電腦上加載程序或者更改特性,這些操作既不需要任何密碼,也不需要了解任何你所知道的東西。他們可以使用你的文件,獲取你的私密信息,刪除數據,運行程序等等。
危險性測試第一步:
打開終端窗口,在shell中鍵入以下命令行,緊接著輸入回車。終端可以在你電腦的應用文件夾的Utilities中可找到,你也可以使用快速搜索找到它。
env x=‘() { :;}; echo vulnerable’ bash -c “echo this is a test”
好結果是這樣的
如果你的電腦不存在被Shellshock漏洞威脅的隱患,那麼終端的輸出結果應該和下面的這一段差不多:
bash: warning: x: ignoring function definition attemptbash: error importing function definition for `x‘this is a test
糟糕的結果
如果你的電腦存在被威脅的可能,那你看到的結果將會是下面這樣:
vulnerable this a test
危險性測試第二步:
如果你通過了第一個測試,那麼試試下面的測試看看你的電腦能否抵御一種在星期四才被發現的新型攻擊方式;
env X=’(){(a)=》\‘ bash -c “echo date”; cat echo; rm -f echo
好結果又是這樣的
如果你的電腦沒有任何問題,那你應該會看到如下這樣的輸出(不輸出任何與當前日期有關的內容):
datecat: echo: No such file or directory
壞結果是這樣的
如果你的電腦在劫難逃,那你會看的輸出就是下面這種形式:
date
如圖所示(下面輸出的是我測試的時間):
上一頁1234下一頁共4頁
那麼現在有更新了嗎
大多數Linux發行版已經有了專為Shellshock開發的補丁(雖然大多並不完整),不過Mac OS X用戶至今還是沒有收到任何消息,蘋果對此事只字未提。最近Mavericks的更新10.9.5版本也沒有對Shellshock有任何的修復。
如果你感到惶恐不安,這裡倒是有一個手動更新的方法讓你機器上的GNU bash升級到更為安全的那個版本,在這裡要感謝StackExchange的用戶提供了有關方法。
在你的Mac電腦上打開終端窗口,輸入以下命令來查看你已經裝上的shell版本(記得最後敲回車)。
bash --version
如果你的GNU bash版本號為3.2.51(1)-release, 那你需要升級到3.2版本的最新版3.2.53,如果你已經照著這篇教程升級到過3.2.52(1)-release,那你需要照著下面的做完以確保更新到最新版本使你的電腦得到完全的保護。
bash除此外還有其它更新的版本,不過Mac OS只支持3.2分支。如果你是Linux用戶,你想要確保下載到與你當前使用的bash版本相匹配的補丁。那你可以在這裡找到各種主要版本的最近更新,包括3.0, 3.1, 3.2, 4.0, 4.1, 4.2, 和4.3。
你可以根據以下教程手動編譯bash的最新版本(3.2.53),但是首先你需要在你的電腦上安裝有一個蘋果的Xcode工具。如果你沒有安裝過這個工具,那你需要照著下面的准備工作章節做下去。
如果你不想升級bash,這裡有個由紅帽提供的解決方案,不過它還並沒有通過完整的測試,因此我並不推薦這個。
准備工作
你需要確保你已經裝上了Xcode,並同意了蘋果的條款,在老一些的Mac上,你還要確保你裝上了命令行工具。
你也可以在Mac App Store上下載到免費的Xcode。
如果你的Mac OS X版本太老而不能在Mac App Store上下載到可用的Xcode,你可以使用你的Apple ID登錄開發者中心去搜索一個合適的版本並下載。如果你是Mac OS10.7或者10.8用戶,那麼請在開發者下載頁面的左邊的搜索框裡搜索Xcode 4.6.3.
在你裝了Xcode之後,在你的應用文件夾內找到並運行它,之後同意相關條款。最開始加載的時候可能會花費一些時間。之後你需要確認是否有可用而完整的命令行工具,做法如下:
打開Xcode,在頂部的菜單欄裡打開菜單。
點擊選項。
點擊下載標簽。
在下載列表裡面找到命令行工具之後點擊下載。
提示:如果你沒有看到命令行工具選項那就證明你已經裝上了。
做完之後,你就為系統補丁做好了所有准備工作了。
上一頁12
34下一頁共4頁
第一步:下載並編譯補丁
當你確定裝上了Xcode,再次打開終端命令行並輸入一下命令,然後回車。每一行是一個命令,因此一定要整行復制。
mkdir bash-fixcd bash-fixcurl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -cd bash-92/bash-3.2curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0cd 。.xcodebuild
進程會跑上一段時間,你會看到在終端裡一大串輸出,那是因為Xcode正在你的電腦上編譯新的bash。等它運行完畢,輸出“BUILD SUCCEEDED”之後你會看到一個新的終端窗口。
第二步:下載編譯並建造第二個補丁
這一步添加於太平洋夏令時2014.9.26 3:00pm,該補丁主要針對於新的攻擊方式。如果想了解更多請看文章開頭的更新說明。
mv build/bash.build/Release/bash.build/DerivedSources/y.tab.* bash-3.2/cd bash-3.2curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-053 | patch -p0cd 。.xcodebuild
再一次,你會在完成的時候看到“BUILD SUCCEEDED”。
第三步:備份你當前版本(建議)
為避免發生某些錯誤,備份你當前使用的bash版本是個不錯的選擇,你可以在終端輸入以下兩行命令。
注意在這一步你很可能被提示需要輸入一個密碼,這個密碼就是你用於登錄Mac的那個密碼。當你敲擊的時候並不會在終端看到回顯,如果你的密碼過於復雜的話在提示密碼錯誤的情況下你可以試試多輸入幾次。
sudo cp /bin/bash /bin/bash.oldsudo cp /bin/sh /bin/sh.old
你不會看到任何確認信息,但是它已經備份完了,如果在第五步之後發生了錯誤的話。你還可以用復制命令找回你以前的老版本bash,將“.old”復制為原始文件(即沒有“.old”部分)。
上一頁123
4下一頁共4頁
第四步:確認你新建的版本信息
在終端裡輸入以下命令以確認你在電腦上新建的bash是最新版本:
build/Release/bash --versionbuild/Release/sh --version
輸出的文本應該是bash版本為3.2.53(1)-release你才可以確認你編譯了正確的版本。
第五步:使用新版本替換你老版的bash
全部做完之後。你只需復制你新版的bash覆蓋掉老版的bash,使用以下命令完成:
sudo cp build/Release/bash /binsudo cp build/Release/sh /bin
現在,再來測試一下看看電腦是否還是會輸出那個好結果:
env x=’() { :;}; echo vulnerable‘ bash -c “echo this is a test”
然後來進行第二測試:
env X=’(){(a)=》\‘ bash -c “echo date”; cat echo; rm -f echo