Bash是什么東東?很多用戶們大概還不是很清楚吧,其實bash就是一個應(yīng)用于大多數(shù)基于Linux或Unix操作系統(tǒng)的命令行程序,其中也包括Mac OS。那么該怎么升級Mac OS上的bash呢?現(xiàn)在小編就教大家一種手動升級的方法。
什么是bash?
bash是應(yīng)用于大多數(shù)基于Linux或Unix操作系統(tǒng)的命令行程序,其中包括有Mac OS。如果你的操作系統(tǒng)的默認命令行shell是bash的話,它就可能被網(wǎng)絡(luò)上遠端的黑客用于攻擊你的電腦。通過一個小小的腳本黑客便可以在你的電腦上加載程序或者更改特性,這些操作既不需要任何密碼,也不需要了解任何你所知道的東西。他們可以使用你的文件,獲取你的私密信息,刪除數(shù)據(jù),運行程序等等。
危險性測試第一步:
打開終端窗口,在shell中鍵入以下命令行,緊接著輸入回車。終端可以在你電腦的應(yīng)用文件夾的Utilities中可找到,你也可以使用快速搜索找到它。
env x=‘() { :;}; echo vulnerable’ bash -c “echo this is a test”
好結(jié)果是這樣的
如果你的電腦不存在被Shellshock漏洞威脅的隱患,那么終端的輸出結(jié)果應(yīng)該和下面的這一段差不多:
bash: warning: x: ignoring function definition attemptbash: error importing function definition for `x‘this is a test
糟糕的結(jié)果
如果你的電腦存在被威脅的可能,那你看到的結(jié)果將會是下面這樣:
vulnerable this a test
![](/d/20211018/244d5eb61e58d28fd4c6e98ab79031f8.gif)
危險性測試第二步:
如果你通過了第一個測試,那么試試下面的測試看看你的電腦能否抵御一種在星期四才被發(fā)現(xiàn)的新型攻擊方式;
env X=’(){(a)=》\&; bash -c “echo date”; cat echo; rm -f echo
好結(jié)果又是這樣的
如果你的電腦沒有任何問題,那你應(yīng)該會看到如下這樣的輸出(不輸出任何與當(dāng)前日期有關(guān)的內(nèi)容):
datecat: echo: No such file or directory
壞結(jié)果是這樣的
如果你的電腦在劫難逃,那你會看的輸出就是下面這種形式:
date
如圖所示(下面輸出的是我測試的時間):
![](/d/20211018/a1af2755682e6431517163e3d9c53809.gif)
那么現(xiàn)在有更新了嗎
大多數(shù)Linux發(fā)行版已經(jīng)有了專為Shellshock開發(fā)的補?。m然大多并不完整),不過Mac OS X用戶至今還是沒有收到任何消息,蘋果對此事只字未提。最近Mavericks的更新10.9.5版本也沒有對Shellshock有任何的修復(fù)。
如果你感到惶恐不安,這里倒是有一個手動更新的方法讓你機器上的GNU bash升級到更為安全的那個版本,在這里要感謝StackExchange的用戶提供了有關(guān)方法。
在你的Mac電腦上打開終端窗口,輸入以下命令來查看你已經(jīng)裝上的shell版本(記得最后敲回車)。
bash --version
如果你的GNU bash版本號為3.2.51(1)-release, 那你需要升級到3.2版本的最新版3.2.53,如果你已經(jīng)照著這篇教程升級到過3.2.52(1)-release,那你需要照著下面的做完以確保更新到最新版本使你的電腦得到完全的保護。
bash除此外還有其它更新的版本,不過Mac OS只支持3.2分支。如果你是Linux用戶,你想要確保下載到與你當(dāng)前使用的bash版本相匹配的補丁。那你可以在這里找到各種主要版本的最近更新,包括3.0, 3.1, 3.2, 4.0, 4.1, 4.2, 和4.3。
你可以根據(jù)以下教程手動編譯bash的最新版本(3.2.53),但是首先你需要在你的電腦上安裝有一個蘋果的Xcode工具。如果你沒有安裝過這個工具,那你需要照著下面的準(zhǔn)備工作章節(jié)做下去。
如果你不想升級bash,這里有個由紅帽提供的解決方案,不過它還并沒有通過完整的測試,因此我并不推薦這個。
準(zhǔn)備工作
你需要確保你已經(jīng)裝上了Xcode,并同意了蘋果的條款,在老一些的Mac上,你還要確保你裝上了命令行工具。
你也可以在Mac App Store上下載到免費的Xcode。
如果你的Mac OS X版本太老而不能在Mac App Store上下載到可用的Xcode,你可以使用你的Apple ID登錄開發(fā)者中心去搜索一個合適的版本并下載。如果你是Mac OS10.7或者10.8用戶,那么請在開發(fā)者下載頁面的左邊的搜索框里搜索Xcode 4.6.3.
在你裝了Xcode之后,在你的應(yīng)用文件夾內(nèi)找到并運行它,之后同意相關(guān)條款。最開始加載的時候可能會花費一些時間。之后你需要確認是否有可用而完整的命令行工具,做法如下:
打開Xcode,在頂部的菜單欄里打開菜單。
點擊選項。
點擊下載標(biāo)簽。
在下載列表里面找到命令行工具之后點擊下載。
提示:如果你沒有看到命令行工具選項那就證明你已經(jīng)裝上了。
做完之后,你就為系統(tǒng)補丁做好了所有準(zhǔn)備工作了。
第一步:下載并編譯補丁
當(dāng)你確定裝上了Xcode,再次打開終端命令行并輸入一下命令,然后回車。每一行是一個命令,因此一定要整行復(fù)制。
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
![](/d/20211018/6affdd7b0c19fe8ff5c43cc2e004563c.gif)
進程會跑上一段時間,你會看到在終端里一大串輸出,那是因為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”。
![](/d/20211018/d07f328ffeefce0ba001ee742ab15639.gif)
第三步:備份你當(dāng)前版本(建議)
為避免發(fā)生某些錯誤,備份你當(dāng)前使用的bash版本是個不錯的選擇,你可以在終端輸入以下兩行命令。
注意在這一步你很可能被提示需要輸入一個密碼,這個密碼就是你用于登錄Mac的那個密碼。當(dāng)你敲擊的時候并不會在終端看到回顯,如果你的密碼過于復(fù)雜的話在提示密碼錯誤的情況下你可以試試多輸入幾次。
sudo cp /bin/bash /bin/bash.oldsudo cp /bin/sh /bin/sh.old
你不會看到任何確認信息,但是它已經(jīng)備份完了,如果在第五步之后發(fā)生了錯誤的話。你還可以用復(fù)制命令找回你以前的老版本bash,將“.old”復(fù)制為原始文件(即沒有“.old”部分)。
第四步:確認你新建的版本信息
在終端里輸入以下命令以確認你在電腦上新建的bash是最新版本:
build/Release/bash --versionbuild/Release/sh --version
輸出的文本應(yīng)該是bash版本為3.2.53(1)-release你才可以確認你編譯了正確的版本。
第五步:使用新版本替換你老版的bash
全部做完之后。你只需復(fù)制你新版的bash覆蓋掉老版的bash,使用以下命令完成:
sudo cp build/Release/bash /binsudo cp build/Release/sh /bin
現(xiàn)在,再來測試一下看看電腦是否還是會輸出那個好結(jié)果:
env x=’() { :;}; echo vulnerable‘ bash -c “echo this is a test”
然后來進行第二測試:
env X=’(){(a)=》\&; bash -c “echo date”; cat echo; rm -f echo
![](/d/20211018/21dcc899fafcbd72db2cde997188a0b6.gif)
如果日期依舊顯示,那么檢查一下你的home文件夾下是否有一個名為echo的文件在你測試的時候被創(chuàng)建。如果是的,那么刪除它再試一次。如果這樣還是依舊輸出日期,那么很可能是你遺漏了上面剛剛更新的第二步。如果你認為你在所有的命令行中沒有任何輸入錯誤,你也可以刪掉你的bash-fix文件夾之后從第一步開始重來。如果沒有什么問題也請刪除bash-fix文件夾——因為那只是個臨時目錄而已。
以上就是手動升級你Mac OS中的bash的操作方法了,有需要升級bash的用戶,可以參考這種方法,對自己的bash進行升級。