Shellshock (CVE-2014-6271 等) 是 Bash 解析環境變數時的嚴重漏洞,允許攻擊者透過精心構造的環境變數執行任意程式碼。macOS 內建 Bash 受影響,需檢測並升級。

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt ... this is a testvulnerable this is a testenv X='() { (a)=>\' bash -c "echo date"; cat echo; rm -f echo
cat: echo: No such file or directorybash --version
# 顯示 GNU bash, version 3.2.51(1)-release 即為受影響版本,需升級至 3.2.53+
# 階段 1:基礎原始碼 + 官方補丁 052
mkdir bash-fix && cd bash-fix
curl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -
cd bash-92/bash-3.2
curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0
cd ../..
xcodebuild
# 階段 2:補丁 053 (針對 CVE-2014-7169)
mv build/bash.build/Release/bash.build/DerivedSources/y.tab.* bash-3.2/
cd bash-3.2
curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-053 | patch -p0
cd ..
xcodebuild
# 階段 3:備份舊版、替換新版
sudo cp /bin/bash /bin/bash.old
sudo cp /bin/sh /bin/sh.old
sudo cp build/Release/bash /bin/bash
sudo cp build/Release/sh /bin/sh
bash --version 應顯示 3.2.53(1)-release;再跑一次測試一、二確認均為安全輸出。注意:現代 macOS (10.11+) 已透過系統更新自動修補 Shellshock,手動編譯僅供舊版系統 (10.9/10.10) 或特殊環境參考。生產環境請優先套用官方安全更新。