OpenSSL'deki Heartbleed hatasını (CVE-2014-0160) yamalamak nasıl?

152

Bugün itibariyle, 1.0.1 aracılığıyla 1.0.1f 'i etkileyen bir hatada OpenSSL hatası bulundu. dahil) ve 1.0.2-beta .

Ubuntu 12.04'ten beri, hepimiz bu hataya karşı savunmasızız. Bu güvenlik açığını yamamak için etkilenen kullanıcılar OpenSSL 1.0.1g 'e güncellemelidir.

Etkilenen her kullanıcı bu güncellemeyi nasıl uygulayabilir now ?

    
sordu Lucio 08.04.2014 00:17

6 cevap

141

Güvenlik güncellemeleri 12.04, 12.10, 13.10 için kullanılabilir. ve 14.04 Ubuntu Güvenlik Bildirimi USN-2165-1 konusuna bakın.

Dolayısıyla, önce mevcut güvenlik güncellemelerini uygulamanız gerekir. Örneğin, örneğin

sudo apt-get update
sudo apt-get upgrade

komut satırından.

Etkilenen OpenSSL sürümünü kullanan hizmetleri (HTTP, SMTP, vb.) yeniden başlatmayı unutmayın; aksi halde hala savunmasız kalırsınız. Ayrıca bkz. Heartbleed: Nedir ve ne var? Serverfault.com adresindeki verileri azaltmak için .

Aşağıdaki komut, (yükseltmeden sonra) yeniden başlatılması gereken tüm hizmetleri gösterir:

sudo find /proc -maxdepth 2 -name maps -exec grep -HE '/libssl\.so.* \(deleted\)' {} \; | cut -d/ -f3 | sort -u | xargs --no-run-if-empty ps uwwp

Bundan sonra, ihtiyacınız var tüm sunucu SSL anahtarlarını yenilemek 'e, ardından anahtarlarınızın sızdırılmış olup olmadığını değerlendirmek için saldırganların sunucularınızdan gizli bilgiler alması gerekebilir.

    
verilen cevap Florian Diesch 08.04.2014 00:46
71

Hata, Heartbleed olarak bilinir.

Ben savunmasız mıyım?

Genellikle, bir noktada bir SSL anahtarı oluşturduğunuz bir sunucuyu çalıştırırsanız etkilenirsiniz. Son kullanıcıların çoğu (doğrudan) etkilenmez; en azından Firefox ve Chrome OpenSSL'yi kullanmaz. SSH etkilenmez. Ubuntu paketlerinin dağıtımı etkilenmez (GPG imzalarına dayanır).

OpenSSL 1.0-1.0.1f sürümlerini kullanan herhangi bir sunucu çalıştırırsanız (hata keşfedildikten sonra yamalanan kurs sürümleri hariç) savunmasız kalırsınız. Etkilenen Ubuntu sürümleri, 14.04 güvenilir ön sürümden 11.10 oneiric. Bu bir uygulama hatası, protokolde bir kusur değil, bu yüzden sadece OpenSSL kütüphanesini kullanan programlar etkilenir. OpenSSL eski 0.9.x sürümüne bağlı bir programınız varsa, bu etkilenmez. Sadece SSL protokolünü uygulamak için OpenSSL kütüphanesini kullanan programlar etkilenir; OpenSSL'yi başka şeyler için kullanan programlar etkilenmez.

İnternet'e açık olan savunmasız bir sunucuyu çalıştırdıysanız, günlükleriniz 2014-04-07'deki duyurudan bu yana bağlantı göstermedikçe, güvenliği ihlal edilmiş olarak düşünün. (Bu, güvenlik açığının duyurulmadan önce istismar edilmediğini varsayar.) Sunucunuz yalnızca içeride açığa çıkarsa, anahtarları değiştirmeniz gerekip gerekmediğini diğer güvenlik önlemlerinin ne olduğuna bağlı olarak belirleyebilirsiniz.

Etki nedir?

Hata, sunucudan 64 kb bellek alabilmek için SSL sunucunuza bağlanabilen herhangi bir istemci 'ye izin verir. Müşterinin herhangi bir şekilde doğrulanması gerekmez. Saldırı tekrarlanarak, istemci hafızanın farklı bölümlerini ardışık girişimlerde boşaltabilir.

Saldırganın alabileceği kritik veri parçalarından biri sunucunun SSL özel anahtarıdır. Bu verilerle saldırgan sunucunuzun kimliğine bürünebilir.

Sunucuda nasıl kurtarırım?

  1. Etkilenen tüm sunucuları çevrimdışı duruma getirin. Çalıştırdıkları sürece potansiyel olarak önemli veriler sızdırıyor olabilirler.

  2. libssl1.0.0 paketini yükseltin ve etkilenen tüm sunucuların yeniden başlatıldığından emin olun.
    Etkilenen işlemlerin hala '' grep 'libssl ile çalışıp çalışmadığını kontrol edebilirsiniz. (silindi)' / proc / / maps '

  3. Yeni anahtarlar oluştur . Bu, bir saldırganın eski özel anahtarı almasına izin vermiş olabileceğinden, bu gereklidir. İlk olarak kullandığınız prosedürü izleyin.

    • Sertifika yetkilisi tarafından imzalanmış sertifikaları kullanırsanız, yeni genel anahtarlarınızı CA'nıza gönderin. Yeni sertifikayı aldığınızda, sunucunuza kurun.
    • Kendinden imzalı sertifikalar kullanıyorsanız, sunucunuza yükleyin.
    • Her iki durumda da, eski anahtarları ve sertifikaları yoldan çıkarın (ancak bunları silmeyin, artık kullanılmadığından emin olun).
  4. Artık ödün vermeyen yeni anahtarlarınız olduğundan, sunucunuzu tekrar çevrimiçi duruma getirebilirsiniz .

  5. Eski sertifikaları iptal et

  6. Hasar değerlendirmesi : SSL bağlantılarına hizmet veren bir işlemin belleğinde bulunan veriler potansiyel olarak sızdırılmış olabilir. Bu kullanıcı şifreleri ve diğer gizli verileri içerebilir. Bu verinin ne olabileceğini değerlendirmelisin.

    • Parola kimlik doğrulamasına izin veren bir hizmet çalıştırıyorsanız, güvenlik açığından önce biraz önce bağlanan kullanıcıların parolalarının güvenliği ihlal edilmiş olarak kabul edilmelidir. (Biraz önce, şifre bir süre bellekte kullanılmamış olabilir.) Günlüklerinizi kontrol edin ve etkilenen herhangi bir kullanıcının parolalarını değiştirin.
    • Ayrıca, tüm oturum çerezlerini de ihlal ettikleri için geçersiz kılar.
    • İstemci sertifikaları ihlal edilmedi.
    • Güvenlik açığından önce biraz önce değiştirilen veriler sunucu belleğinde kalmış olabilir ve bu nedenle bir saldırganın sızdırılmış olabilir.
    • Birisi eski bir SSL bağlantısı kaydettiyse ve sunucunuzun anahtarlarını geri aldıysa, artık transkriptlerini deşifre edebilirler. ( PFS sağlanmadıkça - bilmiyorsanız, bu değildi.)

Bir müşterimde nasıl iyileşirim?

İstemci uygulamalarının etkilendiği yalnızca birkaç durum vardır. Sunucu tarafında sorun, herkesin bir sunucuya bağlanabilmesi ve hatayı kullanabilmesidir. Bir müşteriden yararlanmak için üç koşulun yerine getirilmesi gerekir:

  • İstemci programı, SSL protokolünü uygulamak için bir buggy sürümünü OpenSSL kütüphanesi kullandı.
  • İstemci, kötü amaçlı bir sunucuya bağlandı. (Örneğin, bir e-posta sağlayıcısına bağlandıysanız, bu bir sorun değildir.) Bu, sunucu sahibinin güvenlik açığı konusunda bilgilendirildikten sonra, muhtemelen 2014-04-07'den sonra gerçekleşmesi gerekiyordu.
  • İstemci işleminde, sunucuyla paylaşılmayan bellekte gizli veriler vardı. (Bu yüzden, bir dosyayı indirmek için wget çalıştırdıysanız, sızıntı olacak veri yoktu.)

Bunu 2014-04-07 UTC akşamları arasında gerçekleştirdiyseniz ve OpenSSL kitaplığınızı yükselttiyseniz, istemci sürecinin belleğinde bulunan verilerin ele geçirileceğini düşünün.

Kaynaklar

verilen cevap Gilles 08.04.2014 12:02
40

Ubuntu'da hangi OpenSSL sürümünün yüklü olduğunu görmek için:

dpkg -l | grep openssl

Aşağıdaki sürüm çıktısını görürseniz, CVE-2014-0160 için yama eklenmiş olmalıdır.

ii  openssl      1.0.1-4ubuntu5.12      Secure Socket Layer (SSL)...

İşte 'e bakarak, hangi tür hataların düzeltildiğini gösterir:

...
 SECURITY UPDATE: memory disclosure in TLS heartbeat extension
    - debian/patches/CVE-2014-0160.patch: use correct lengths in
      ssl/d1_both.c, ssl/t1_lib.c.
    - CVE-2014-0160
 -- Marc Deslauriers <email address hidden>   Mon, 07 Apr 2014 15:45:14 -0400
...
    
verilen cevap crimi 08.04.2014 08:40
17

Yer paylaşımlı havuzlarınız öntanımlı 1.0.1g OpenSSL sürümü içermiyorsa, resmi web sitesinden kaynak indirin ve derleyin.

Son openssl sürümünü derlemek ve kurmak için tek komut satırının altında.

curl https://www.openssl.org/source/openssl-1.0.1g.tar.gz | tar xz && cd openssl-1.0.1g && sudo ./config && sudo make && sudo make install

Eski openssl ikili dosyasını yenisiyle sembolik olarak değiştirin.

sudo ln -sf /usr/local/ssl/bin/openssl 'which openssl'

Hepiniz iyisiniz!

# openssl version should return
openssl version
OpenSSL 1.0.1g 7 Apr 2014

Bu blog yayınından .

NB: Blog yayınında belirtildiği gibi, bu geçici çözüm "1.0.1g openSSL kaynakları ile yeniden derlenmesi gereken Nginx ve Apache sunucusunu" düzeltmeyecek.

    
verilen cevap Quentin Rousseau 08.04.2014 04:18
12

Sunucu çapında bir paket yükseltmesi yapmak istemeyenler için. Bugün bu rehberlerden bir grup okudum ve apt-get upgrade openssl === apt-get upgrade bu sizin makineniz tarafından istenen tüm güvenlik düzeltmelerini uygulayacaktır. Harika, açık bir şekilde eski bir paket sürümüne yaslanmadıkça.

Bu, Apache 2'yi çalıştıran Ubuntu 12.04 LTS'de gereken minimum eylemdir:

  • bu adrese gidin ve bu güvenlik açığına sahip olduğunuzu kanıtlayın. WEB SUNUCUSUNUZUN DOĞRUDAN DIŞ ADRESİNİ kullanmalısınız. Yükleyici kullanıyorsanız (örneğin ELB) doğrudan web sunucunuzla bağlantı kurmuyor olabilirsiniz.

  • Paketleri yükseltmek ve yeniden başlatmak için aşağıdaki 1 astarı çalıştırın. Evet, tüm rehberlerin 4 Nisan 2014'ten sonra bir zaman damgasına sahip olmanız gerektiğini söylediğini gördüm, bu bana göre bir durum değil.

    güncellemeyi & amp; & amp; apt-get installsl libssl1.0.0 & amp; & amp; /etc/init.d/apache2 yeniden başlat

  • Uygun paket sürümlerinin yüklü olduğundan emin olun ve web sunucunuzu güvenlik açığı için bir kez daha kontrol edin.

Anahtar paketleri şu şekildedir; aşağıdaki bilgileri kullanarak aşağıdaki bilgileri kullanarak belirledim ve daha sonra hırsızlıktan (makinelerin durumu hakkında çok fazla bilgiye sahip olmanıza gerek yok) düzenledim.

$ dpkg -l | grep ssl

ii  libssl-dev                       1.0.1-4ubuntu5.12          SSL development libraries, header files and documentation
ii  libssl1.0.0                      1.0.1-4ubuntu5.12          SSL shared libraries
ii  openssl                          1.0.1-4ubuntu5.12          Secure Socket Layer (SSL)* binary and related cryptographic tools

1.0.1-4ubuntu5.12 güvenlik açığını KAPATMAMALIDIR. Aşağıdaki web sitesine giderek web sunucunuzu test ederek durumun böyle olduğundan emin olun.

İşte

    
verilen cevap Adrian 08.04.2014 23:56
11

Burada acilen yardım etmeye çalışan birçok yorumcu gördüm. Bazı test web sitelerini kullanırken talimatları izliyor, yükseltiyor, yeniden başlatıyor ve hala savunmasız durumdalar.

Paketlerin libssl gibi beklemediğinizden emin olmanız gerekir.

:~$ sudo apt-get upgrade -V
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
  libssl-dev (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
  libssl1.0.0 (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
  linux-image-virtual (3.2.0.31.34 => 3.2.0.60.71)
  linux-virtual (3.2.0.31.34 => 3.2.0.60.71)
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.

apt-mark unhold libssl1.0.0 'sini yükseltmek için (örneğin). Ardından, yeni sürüme geçirin: apt-get upgrade -V . Ardından, etkilenen hizmetleri yeniden başlatın.

    
verilen cevap Domino 08.04.2014 19:51

Etiketlerdeki diğer soruları oku