X
    Categories: News

CVE-2014-6271 - Bash 遠端執行的安全漏洞

不得不說, 嚴重的安全事件第一次發生, 機器多又沒整理時, 會開始做全部機器的列表, 不斷的發生, 可以逼著 練習使用遠端同時執行/檢查 命令 + 練就快速更新套件的能力.

雖然目前看到的 Bash 問題應該都還沒影響(mod_php 沒事), 還是來做點 新聞整理、測試與解法.

這次 Bash 影響的相關資料可見此篇: Bash specially-crafted environment variables code injection attack | Red Hat Security

2014/10/01 更新: 已經有人將連續的 CVE 整理成 Wiki 了 - Shellshock (software bug)

CVE-2014-6271 - Bash 遠端執行的安全漏洞

先看看 常見的 *unix(Linux) / Mac 系統有哪些有被影響到.

註: 只要有使用 Bash 的都可能有問題, 下面列的只是常見的.

安全通報

上述通報有些沒有清楚的中獎列表, 下面有中獎列表.(Ubuntu 上面通報中, 就有含中獎列表)

測試方法

於 Bash shell 執行下述:

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

有出現錯誤訊息就是正確的, 出現 "vulnerable" 就是要做安全性修正.

  • 需要安全性更新 的輸出結果

    vulnerable
    this is a test

  • 正常安全的輸出結果

    bash: warning: x: ignoring function definition attempt
    bash: 錯誤,輸入的函數定義為 `x'
    this is a test

Debian (Wheezy) / Ubuntu Linux 的解法

  1. sudo apt-get update
  2. sudo apt-get install bash # 或 apt-get install --only-upgrade bash 或 apt-get upgrade 即可.
  3. 註: Ubuntu quantal (含 quantal) 以前的版本, 目前尚未看到修正套件.

若 Debian jessie / squeeze 上述執行還沒辦法修正(由此可看到相關套件修正的版本於何處: Debian Security Information -- DSA-3032-1 bash), 下述兩種版本的各自更新法如下:

  • Debian Jessie
    1. # Debian 修正的sid 版本的 bash 套件
    2. vim /etc/apt/sources.list # 於最下面新增下述

      deb http://ftp.jp.debian.org/debian/ sid main non-free contrib

    3. apt-get update
    4. apt-get install bash # 或 apt-get install --only-upgrade bash
    5. vim /etc/apt/sources.list
    6. 移掉剛剛新增的 sid 那行
    7. apt-get update
    8. 到此即更新完成
  • Debian Squeeze
    1. # Debian 理論上有 squeeze 的版本, 但是還是沒更新到的話, 可以先用 wheezy 的套件
    2. vim /etc/apt/sources.list # 於最下面新增下述

      deb http://ftp.jp.debian.org/debian/ wheezy main non-free contrib
      deb http://security.debian.org/ wheezy/updates main contrib non-free

    3. apt-get update
    4. apt-get install bash # 或 apt-get install --only-upgrade bash
    5. vim /etc/apt/sources.list
    6. 移掉剛剛新增的 wheezy 那兩行
    7. apt-get update
    8. 到此即更新完成
  • 其它更新方法
    1. 此篇還有其它更新方法, 若上述都不行的話, 可以參考看看. (註: 我沒測試過此篇的方法)
    2. 詳見: security - What is the CVE-2014-6271 bash vulnerability, and how do I fix it?, 下述摘錄自此篇:
    3. wget http://down.openyoudao.org/bash-up.sh && sudo bash -x bash-up.sh # 請自行看過 bash-up.sh 的內容再決定要不要執行

MacOS 的解法

MacOS 同樣的也有此問題, 下述文章有整理幾種更新方法:

預設 MacOS 的 Bash 版本是 2007年的版本, 如下:

$ bash --version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.

可以考慮用下面兩套安裝 Bash 並更新 (註: 我使用最下面自己編譯的方式來解決.)

  • 2014/9/30 Mac 發佈更新: OS X Bash Update 1.0 Released to Address Shellshock Security Flaw
  •  Homebrew
    1. 開啟終端機
    2. sudo brew update
    3. sudo brew upgrade bash # 若沒安裝會出現下述訊息, 再自行決定要不要安裝來解決
    4. # Error: bash not installed
  • Macports
    1. 開啟終端機
    2. sudo port selfupdate
    3. sudo port upgrade bash # 若沒安裝會出現下述訊息, 再自行決定要不要安裝來解決
    4. # Error: bash is not installed
    5. sudo port upgrade outdated # 都已經升級了, 順便把舊的套件升一升
  • 手動 Make、更新
    1. 開啟終端機
    2. mkdir bash-fix
    3. cd bash-fix
    4. curl https://opensource.apple.com/tarballs/bash/bash-92.tar.gz | tar zxf -
    5. cd bash-92/bash-3.2
    6. curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0
    7. cd ..
    8. xcodebuild
    9. sudo cp /bin/bash /bin/bash.old
    10. sudo cp /bin/sh /bin/sh.old
    11. build/Release/bash --version # GNU bash, version 3.2.52(1)-release
    12. build/Release/sh --version   # GNU bash, version 3.2.52(1)-release
    13. sudo cp build/Release/bash /bin
    14. sudo cp build/Release/sh /bin

入侵示範

相關新聞 / 網頁

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post