Versi Debian lawas dan Bash Shellshock

11

Kami menjalankan Debian Etch, Lenny, dan Squeeze karena upgrade belum pernah dilakukan di toko ini; kami memiliki lebih dari 150 sistem yang menjalankan berbagai versi Debian. Mengingat "kejutan shell" minggu ini, saya menganggap saya perlu memperbarui bash. Saya tidak kenal Debian jadi saya khawatir.

Dapatkah saya hanya menjalankan apt-get install bashpada semua sistem Debian saya dan mendapatkan paket Bash yang benar sementara repositori saya diarahkan ke entri Squeeze. Jika tidak, tindakan apa lagi yang saya miliki?

DavidH
sumber
7
Anda selektif dapat backport bash ke sistem tersebut. mungkin akan berjalan ok pada mereka. Tapi Anda benar-benar harus meng-upgrade. Anda menyadari bahwa sesuatu yang lebih tua dari pada oldstable tidak memiliki pembaruan keamanan, bukan? Dan ingatlah kerentanan keamanan ini hanya satu dari banyak.
Faheem Mitha
Apakah ini masalah? Apa yang ada system shelldi sistem itu? (Yaitu, shell yang Anda dapatkan saat menjalankan systempanggilan POSIX, yaitu / bin / sh). Jika / bin / sh adalah bash, maka Anda perlu memperbarui. Jika tidak ... Maka Anda mungkin baik-baik saja (tetapi Anda harus memperbarui bash sendiri)
Arafangion

Jawaban:

11

Anda memiliki opsi untuk hanya meningkatkan versi bash. Untuk melakukannya gunakan apt-getperintah berikut :

apt-get update

Kemudian setelah pembaruan mengambil semua pembaruan yang tersedia dijalankan:

apt-get install --only-upgrade bash

Untuk mendapatkan pembaruan pada rilis yang lebih lama, Squeeze misalnya, Anda mungkin perlu menambahkan repo Squeeze-LTS ke daftar sources.list Anda.

Untuk menambahkan repositori ini, edit /etc/apt/sources.listdan tambahkan baris berikut ke akhir file.

deb http://ftp.us.debian.org/debian squeeze-lts main non-free contrib

Untuk memeriksa kerentanan sistem tertentu (atau melihat apakah pemutakhiran berfungsi), Anda dapat memeriksa versi bash yang Anda gunakan dan melihat apakah versi tersebut terpengaruh (mungkin) atau ada banyak skrip uji shell yang tersedia di web.

EDIT 1

Untuk meningkatkan versi bashLenny atau Etch, lihat jawaban Ilya Sheershoff di bawah ini untuk cara mengkompilasi bashdari sumber dan secara manual tingkatkan versi bashyang digunakan oleh rilis Anda.

EDIT 2

Ini adalah contoh sources.listfile dari server Squeeze yang berhasil saya tingkatkan:

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

# squeeze-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# Other - Adding the lsb source for security updates
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free
111 ---
sumber
Seorang pemula mungkin tidak tahu mereka harus menjalankan pembaruan apt-get terlebih dahulu, untuk mendapatkan katalog paket terbaru.
Brenda J. Butler
Saya harus menggunakan: deb ftp.us.debian.org/debian memeras contrib utama untuk memutakhirkan bash ke versi 4.1-3 dan kemudian menggunakan sumber yang ditambal untuk membuatnya tidak rentan.
@ BrendaJ.Butler Saran yang bagus, saya menambahkan langkah itu juga.
111 ---
4

Jika apt-get installopsi tidak berfungsi, Anda harus mengkompilasi ulang bash dari sumber. Contoh Lenny dan Etch ada dalam jawabannya. Saya belum punya mesin Squeeze, tetapi orang dapat dengan mudah mengetahui apa yang harus dilakukan.

The solusi dari TaNNkoST saya telah menemukan di internet:

Periksa jumlah tambalan yang tersedia dan ubah nomor di bagian "(seq" jika ada yang baru.

UNTUK LENNY

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 4.1-3 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
tar zxvf bash-4.1.tar.gz
cd bash-4.1

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 14); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-4.1-patches/bash41-$i
patch -p0 < bash41-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can  Delete the old one thats a problem
rm /bin/bash.old

UNTUK ETCH Saya telah mengikuti logika yang sama, tetapi saya belum yaccmenginstal pada sistem jadi saya harus menginstal bisonpaket untuk itu. Inilah yang saya pikirkan:

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 3.2-4 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
tar zxvf bash-3.2.tar.gz
cd bash-3.2

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 54); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-$i
patch -p0 < bash32-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# at this point my system is not vulnerable already, test your system
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

# if this is not the case for your system - try the following

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can Delete the old one thats a problem
rm /bin/bash.old
Ilya Sheershoff
sumber
1
Saya menemukan saya mendapatkan kesalahan make: yacc: Command not founduntuk solusi Lenny, dan memperbaikinya dengan menggunakan apt-get install bison.
SharpC
1

Tidak yakin apakah Anda ingin mempercayai paket ini tetapi seseorang telah membuat paket untuk woody (3.0), sarge (3.1), etch (4.0) dan lenny (5.0). Mereka tersedia di sini:

http://blog.bofh.it/debian/id_451

Hati-hati, tidak ada repositori untuk menginstal paket-paket ini melalui apt-get. Anda perlu menggunakan dpkgatau membuat repositori lokal Anda sendiri.

tlo
sumber
" Jika Anda ingin mempercayai paket ini "? Itu ditandatangani dengan kunci GPG dari Pengembang Debian. Sama seperti paket resmi Debian lainnya.
peppe
0

Untuk memperbarui Bash pada banyak OS yang berbeda, Anda dapat menggunakan skrip universal Deshellshock .

Rasul
sumber