新しいめのOSであれば
yum update glibc
とか
apt-get install libc6
して再起動したらOK。
でもDebianの4(ethc)や5(lenny)はサポートが切れてるので修正パッチはこない。
そんな古いDebianサーバでアップデートの必要があったので検証。
パッチの中を見る
squeeze-ltsでは修正のパッチがきており「2.11.3-4+deb6u4」で対策済みとの事なので
このパッケージのgethostbyname()関連のパッチを見た。
なんかそんなに複雑な修正ではなさそうなので、
etchやlennyのリポジトリで最新(って言い方もおかしいけど・・・)の
glibcのパッケージソースを取得し、上記パッチを追加してdebパッケージを再作成。
作成したパッケージをインストールすれば対策できるんじゃないかということでやってみました。
Debian etchでの対策
事前にetchのアーカイブリポジトリを/etc/apt/sources.listに追加しておきます。
deb http://ftp.riken.jp/Linux/debian/debian-archive/debian/ etch main
deb-src http://ftp.riken.jp/Linux/debian/debian-archive/debian/ etch main
etchでの最新のlibc6のソースを取得
cd /root
apt-get update
apt-get install libc6
apt-get install dpkg-dev
apt-get build-dep libc6
apt-get source libc6
apt-get install devscripts
とってきたdebパッケージにパッチ(cvs-gethostbyname.diff)を追加して
パッチ名をseriesに追加
cd /root/glibc-2.3.6.ds1/debian/patches/all
wget http://sources.debian.net/data/main/e/eglibc/2.11.3-4+deb6u4/debian/patches/any/cvs-gethostbyname.diff
echo "all/cvs-gethostbyname.diff -p 1" >> /root/glibc-2.3.6.ds1/debian/patches/series
パッケージのバージョンを設定
dch
パッケージ作成
cd /root/glibc-2.3.6.ds1/
dpkg-buildpackage -us -uc
作成したパッケージインストール
cd /root
dpkg -i libc6_2.3.6.ds1-13etch10_i386.deb
チェックプログラムを実行してみて確認(作成方法は割愛)
./ghost
not vulnerable
Debian lennyでの対策
lennyの場合もほとんど一緒です。
事前にlennyのアーカイブリポジトリを/etc/apt/sources.listに追加しておきます。
deb http://ftp.riken.jp/Linux/debian/debian-archive/debian/ lenny main
deb-src http://ftp.riken.jp/Linux/debian/debian-archive/debian/ lenny main
lennyでの最新のlibc6のソースを取得
cd /root
apt-get update
apt-get install libc6
apt-get install dpkg-dev
apt-get build-dep libc6
apt-get source libc6
apt-get install devscripts
とってきたdebパッケージにパッチ(cvs-gethostbyname.diff)を追加して
パッチ名をseriesに追加
cd /root/glibc-2.7/debian/patches/all
wget http://sources.debian.net/data/main/e/eglibc/2.11.3-4+deb6u4/debian/patches/any/cvs-gethostbyname.diff
echo "all/cvs-gethostbyname.diff -p 1" >> /root/glibc-2.7/debian/patches/series
パッケージのバージョンを設定
dch
パッケージ作成
cd /root/glibc-2.7/
dpkg-buildpackage -us -uc
作成したパッケージインストール
cd /root
dpkg -i libc6_2.7-18lenny8_i386.deb
チェックプログラムを実行してみて確認(作成方法は割愛)
./ghost
not vulnerable