Yükseltemediğim eski bir Ubuntu sisteminde mermi kırığı güvenlik açığını nasıl düzeltebilirim?


22

Ubuntu 9.04, Jaunty çalıştıran uzaktan yönettiğim bir sistem var (2 saat dilimi uzakta). Çeşitli nedenlerden ötürü, esasen çok uzaklardan bir dağıtım güncellemesi yapmaya çalışmak konusunda gerçekten istekli olduğum için, daha yeni bir sürüme yükseltemiyorum. Açıkçası artık desteklenmiyor ve resmi bir yama yok. Bu kodu nasıl ekleyebileceğim ve mermi kabiliyetindeki güvenlik açıklarını gidermek için bash'ı kendim yeniden derleyebileceğim konusunda talimatlar var mı?


5
Bu konuda ne gibi araştırmalar yaptınız? Muhtemelen en basit çözüm, yeniden oluşturmak ve kendiniz yamalamak olacaktır. Sunucuyu güncellemenin basit zamanı olduğunu kabul etmeniz gerekebilir.
Ramhound

Evet, bu benim geri dönüş seçeneğim. Sunucu çıkışta, fonları değiştirmek için gelene kadar aksamaya devam etmeye çalışıyorum. Yerinde miydim, mermiyi ısırır ve güncellemeyi yapardım, ancak çok nadiren bir aksama yaşamadım ve el ele veremeden bile olsa riske atmamayı tercih ederim. için.
Claus

Sayfada bazı anahtar kelimeler edinerek insanların bunu bulabilmesi için. Ayrıca, Mac, OS X, Mavericks'te benim için çalıştı. arstechnica.com/security/2014/09/...

1
yamalı olarak bırakın, "topallamak" hızla değişecektir. Çok net ol beş yıl önce çıkan bir dağıtım kullanıyorsun . Destek Ekim 2010'da sona ermiştir. Endişelenmeniz gereken çok daha fazla güvenlik açığı var.
tedder42

Yanıtlar:


29

Bunu çaldı Ask Ubuntu , onu Hacker News'den çalan birinden. Benim için iki eski sunucuda çalıştı

mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 1 28); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz 
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 1 28);do patch -p0 < ../bash43-$i; done
#build and install
./configure --prefix=/ && make && make install
cd .. 
cd ..
rm -r src

Güncelleme: Eklemediyseniz farkettim --prefix=/ configure komutuna sonunda /usr/local/bin/bash bu güncel ve /bin/bash hala savunmasız olacak.


Kodda bir hata var: "0 25" dizisi "1 26" olmalı. Bunu okuyorsanız ve cevabı düzenleyebiliyorsanız, lütfen güncelleyin. Teşekkürler!
joelparkerhenderson

İken ./configure --prefix=/ && make iyi çalışır make install gerektiren görünüyor sudo
Stewart

Bunu oraya sunduğunuz için teşekkür ederiz - göç ederken bazı şeyleri düzeltmenin adil bir yolu. Bazı insanlarda çok sayıda vms var ve her birini yeniden oluşturmak gerçekçi değil. Daha güncel bir kurulumda olmanın daha uzun vadede çözerken bunu bir ani düzeltme olarak kullanmak anahtardır.
Jas Panesar

@ rubo77 Şimdi 1 27 olması gerekiyor (yeni 27 yaması en önemli olanı)
joelparkerhenderson

1
Yama 28 eklendi. Bu yapar CVE-2014-7186 / 7187 güvenlik açığını giderdiği görülüyor.
unkilbeeg

2

Kaynaklarınızı listenin en yenisine güncellemenin ve ardından sadece bash'ı yükseltmek için apt-get komutunu kullanmanın bir çözümü de var. Gerçekten hızlı ve Bir makale yazdım hakkında. İşte temelde yaptığınız şey:

En son Ubuntu 'trusty' apt-get depolarına yükseltin (eskiden beri eski-repositories.ubuntu.com URL’lerini de değiştirmeniz gerekebilir, eğer bunları kullanıyorsanız bağlantılı makaleyi kontrol edin):

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list

Bash'i yükseltin / düzeltme uygulayın:

sudo apt-get update
sudo apt-get install --only-upgrade bash

Ve muhtemelen apt-get depolarını değiştir.


Mükemmel çalıştı!
Peter Kruithof

-1

Komut olmalıdır

sudo apt-get update && sudo apt-get install --only-upgrade bash

2
Bu yardımcı olmaz; OP'nin dediği gibi, artık desteklenmiyor, bu yüzden bash için bir yükseltme olmayacak.
Andrew Ferrier

-3

Basit bir seçenek sadece bash kullanmamaktır. Emin olmak dash yüklü ve bu /bin/sh bir bağlantıdır dash, değil bash. (Bu, Debian'ın bazı sürümlerinde varsayılandır, ancak Ubuntu'dan emin değilim.) Zorunlu komutlarla ssh erişimi için kullanıcı hesabınız varsa, onların giriş kabuklarını da değiştirmeniz gerekir. Ayrıca açıkça bash kullanarak komut dosyalarını kontrol etmeniz gerekebilir; için grepping #!/bin/bash onları bulmalıyım.


5
Bu, "C ++ 'ta segfaults olabileceğini gördük, bunun yerine sadece Java kullandık" demeye benziyor.
DevSolar

3
Daha yakın bir analoji, birinin GCC’de bir hata yaşadığını söyleyerek klanmayı denemesini sağlayacaktır. Her ikisi de aynı dili uygular (farklı ama bazen örtüşen standart olmayan uzantı kümeleriyle) ve asıl ihtiyacın "bash" için değil, "kabuk tercümanı" için olması muhtemel değildir.
R..

Dediğiniz gibi, açıkça bash kullanabilecek komut dosyaları var. Bash kullanan varolan dosyaları seçseniz bile, ileride birisi açıkça bash kullanan sisteme yeni bir komut dosyası ekleyebilir. Aynısı, meşgul kutusunu kullanan gömülü sistemler için de geçerlidir (meşgul kutusuna / bin / sh noktaları), fakat aynı zamanda bash yüklüdür. En iyi şey, savunmasız sistemlerde bash güncellemektir.
jcarballo

Unix / Linux betiklerinin çoğu bash veya ksh veya zsh gibi başka modern bir kabuk gerektirir. Bunlar, insanların herhangi bir dilde beklediği, ancak (BusyBox) kül / Dash / sh (orijinal) gibi "çıplak kemikler" kabuklarında bulunmayan çok sayıda işlevselliğe sahiptir. Bu basit mermiler, daha büyük mermilerin işlevselliğinin sadece% 20 - 30'una sahiptir ve bu da onları daha hızlı yapar. Bununla birlikte, gelişmiş dizi işleme ve desen eşleştirme gibi pek çok yaygın işlem için harici yardımcı programların kapsamlı bir şekilde kullanılmasını gerektirir. Bash ve benzeri, kül, vb. senaryo. Ama tam tersi değil.
DocSalvager
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.