萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> macOS 教學

Mac 檢測 Shellshock (Bash 漏洞) 攻擊風險:終端機測試指令與手動升級 Bash

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

Shellshock 測試

快速測試 (兩階段)

測試一:經典 Payload

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
  • 安全:輸出 bash: warning: x: ignoring function definition attempt ... this is a test
  • 受影響:輸出包含 vulnerable this is a test

測試二:CVE-2014-7169 繞過補丁 Payload

env X='() { (a)=>\' bash -c "echo date"; cat echo; rm -f echo
  • 安全:無輸出日期,顯示 cat: echo: No such file or directory
  • 受影響:輸出當前日期時間 (代表任意程式碼執行成功)。

檢查 Bash 版本

bash --version
# 顯示 GNU bash, version 3.2.51(1)-release 即為受影響版本,需升級至 3.2.53+

macOS 手動升級 Bash 至 3.2.53 (需 Xcode 命令列工具)

  1. 安裝 Xcode (Mac App Store) 並同意授權 → Xcode → Preferences → Locations → Command Line Tools 選擇最新版安裝。
  2. 終端機依序執行編譯指令 (分三階段打補丁、編譯):
# 階段 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
  1. 驗證:bash --version 應顯示 3.2.53(1)-release;再跑一次測試一、二確認均為安全輸出。

注意:現代 macOS (10.11+) 已透過系統更新自動修補 Shellshock,手動編譯僅供舊版系統 (10.9/10.10) 或特殊環境參考。生產環境請優先套用官方安全更新。

copyright © 萬盛學電腦網 all rights reserved