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

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

在〈CVE-2014-6271 - Bash 遠端執行的安全漏洞〉中有 3 則留言

  1. 不好意思
    想請教ㄧ下
    因為我們公司只有db server使用red hat
    檢查結果是需要更新套件的
    但因為這部分我比較不熟悉
    像這類的漏洞
    如果系統單單只有公司dbserver使用
    前端mes系統的ap則是server 2008 iis
    這樣影響會大嗎

    1. server 2008 iis 沒有這個問題,
      基本上, 如果沒有對外的話, 是比較不會有問題, 但是都建議能更新就更新, 畢竟 Bash 更新對現在寫得 code, 基本上不會有任何影響.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料