Linux
shell

Bashのv4.4.12へのアップデート手順

はじめに

最近シェルショック対策でbashを4.4.12へアップデートする手順を作ったのでメモをのこしておきます。

シェルショックは2014年話題になった脆弱性です。

特定バージョンでは環境変数の処理に脆弱性が存在し、攻撃が成功した場合、影響を受ける可能性があります。

今更感満載ですが放置すると

・不正な OS コマンドの実行させることも用意なので/etc/passwdとか普通に見られる
・バックドア作られる
・データの改ざんやデータの取得が行われる

可能性があります。直近のことですが、カットオーバーした瞬間攻撃を食らってびびりました。

脆弱性に該当するか確認するテストコマンド

root@vagrant:~# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

※脆弱性があると、以下のように2行出力されます

vulnerable
this is a test

脆弱性に該当しない環境では「this is a test」のみ出力されます

4.4.12への手順

sudo su -
mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz

#download all patches
for i in $(seq -f "%03g" 0 12); do wget http://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-$i; done

tar zxvf bash-4.4.tar.gz 

cd bash-4.4
#apply all patches

for i in $(seq -f "%03g" 0 12);do patch -p0 < ../bash44-$i; done

#build and install
apt install gcc make

./configure && make
make install
cd .. 
cd ..
sudo rm -r src
bash --version

確認

root@vagrant:~# bash --version
GNU bash, version 4.4.12(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
root@vagrant:~#

4.4.12にアップデートされました

再テストしてみましょう

root@vagrant:~# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

OKです。