OpenSSL’de Heartbleed böceği (CVE-2014-0160) nasıl düzeltilir?


152

Bugün itibariyle bir OpenSSL'deki hata sürümlerini etkileyen bulunmuştur 1.0.1yoluyla 1.0.1f(dahil) ve 1.0.2-beta.

Ubuntu 12.04’ten bu yana hepimiz bu hataya karşı savunmasızız. Bu güvenlik açığını düzeltmek için, etkilenen kullanıcıların OpenSSL'ye güncelleme yapması gerekir 1.0.1g.

Etkilenen her kullanıcı bu güncelleştirmeyi şimdi nasıl uygulayabilir ?


Openssl'ın etkilenen bir sürümü var mı?
Braiam

Ben 1.0.1-4ubuntu5.12 yamalı sürümünü aldım ve apache servisini yeniden başlattım ancak filippo.io/Heartbleed sitemde testler hala savunmasız olduğumu söylüyor

1
@Mat Bu sitenin ne test ettiğini bilmiyorum, ama belki eski bir anahtar kullandığınızı algılıyor. Anahtar sızdırılmış olabileceğinden, yeniden oluşturmanız gerekir.
Gilles,

1
Gerçekten OpenSSL'yi yeni sürümlerle güncellemek istemezsiniz, bu inanılmaz bir acı. Çok daha kolay, sadece sorunu yayan
sarnold

yükseltme işleminden sonra hizmetlerinizi yeniden başlattınız mı?
Axel

Yanıtlar:


141

Güvenlik güncelleştirmeleri 12.04, 12.10, 13.10 ve 14.04 için geçerlidir, bkz. Ubuntu Güvenlik Bildirimi USN-2165-1 .

Bu yüzden öncelikle mevcut güvenlik güncellemelerini uygulamanız gerekir; ö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ızsınızdır. Ayrıca bkz. Heartbleed: Bu nedir ve azaltmak için seçenekler nelerdir? Serverfault.com adresinde.

Aşağıdaki komut (yükseltmeden sonra) yeniden başlatılması gereken tüm servisleri 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 yapmanız gerekenler Tüm sunucu SSL anahtarlarını yeniden , sonra anahtarlar, sızdırılmış olabilir vaka saldırganlar sunucularından gizli bilgileri aldıktan olabilecek olan değerlendirmek.


23
Bunun Ubuntu 12.04.4 LTS'de çalıştığından emin değilim. Tam güncellemeden sonra openssl versionverir OpenSSL 1.0.1 14 Mar 2012. Bu yamalı sürüm değil, değil mi? Yoksa yanlış mı okuyorum?
Paul Cantrell

7
Ubuntu 13.04 ile ne yapmalı? Yükseltilmiş bir openssl mevcut değil :-(
Frodik

20
Ubuntu 12.04'te sabit OpenSSL bile sürümü görüntüler 1.0.1 14 Mar 2012. Kurulumunuzun düzeltmeyi içerip içermediğini öğrenmek için crimi'nin cevabını okuyun .
dan

7
@Dan teşekkürler! Burada @ Crimi cevabını Resummarizing: koşarsan dpkg -l | grep ' openssl 've almak 1.0.1-4ubuntu5.12o zaman gitmeye hazırız.
Paul Cantrell

20
Yama ekleme ve yeniden başlatma yeterli değil. Anahtarları yeniden üretmeniz ve diğer gizli materyallerin yanı sıra anahtarlarınızın sızdırılmış olup olmadığını değerlendirmeniz gerekir. Bakınız örneğin , Heartbleed, her SSL sunucusu için yeni sertifikalar anlamına mı geliyor?
Gilles,

71

Böcek, Heartbleed olarak bilinir .

Korunmasız mıyım?

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

OpenSSL sürüm 1.0-1.0.1f kullanan herhangi bir tür sunucu çalıştırırsanız (hata keşfedildiğinden beri eklenmiş olan sürümler hariç) korunmasız kalırsınız. Etkilenen Ubuntu sürümleri 14.04 güvenilir ön sürümünden 11.10 oneiric. Bu bir uygulama hatasıdır, protokoldeki bir kusur değildir, bu nedenle yalnızca OpenSSL kütüphanesini kullanan programlar etkilenir. OpenSSL'nin eski 0.9.x sürümüne karşı bağlı bir programınız varsa, etkilenmez. Yalnızca SSL protokolünü uygulamak için OpenSSL kütüphanesini kullanan programlar etkilenir; OpenSSL’yi başka şeyler için kullanan programlar etkilenmez.

İnternete açık, güvenlik açığı bulunan bir sunucuyu çalıştırdıysanız, kayıtlarınız 2014-04-07 tarihinde yapılan duyurudan bu yana hiçbir bağlantı göstermediği sürece tehlikeye girdiğini düşünün. (Bu, güvenlik açığının duyurulmadan önce yararlanılmadığını varsayar.) Sunucunuz yalnızca şirket içinde açığa çıkarsa, anahtarları değiştirmeniz gerekip gerekmediği, başka hangi güvenlik önlemlerinin alındığına bağlı olacaktır.

Etkisi nedir?

Hata, SSL sunucunuza bağlanabilen herhangi bir istemcinin sunucudan yaklaşık 64kB bellek almasını sağlar. Müşterinin hiçbir şekilde kimliğinin doğrulanması gerekmez. Saldırıyı tekrarlayarak, müşteri art arda denemelerde belleğin farklı kısımlarını atabilir.

Saldırganın alabileceği kritik veri parçalarından biri, sunucunun SSL özel anahtarıdır. Bu verilerle, saldırgan sunucunuzu taklit edebilir.

Bir sunucuda nasıl kurtarırım?

  1. Etkilenen tüm sunucuları çevrimdışı duruma getirin. Çalıştıkları sürece, kritik verilerden potansiyel olarak sızıntı yapıyorlar.

  2. libssl1.0.0Paketi 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 üret . Bu gereklidir, çünkü hata bir saldırganın eski özel anahtarı edinmesine izin vermiş olabilir. İlk başta kullandığınız aynı prosedürü izleyin.

    • Bir sertifika yetkilisi tarafından imzalanmış sertifikalar kullanıyorsanız, yeni ortak anahtarlarınızı CA'nıza gönderin. Yeni sertifikayı aldığınızda sunucunuza yükleyin.
    • 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ıklarından emin olun).
  4. Artık ödün vermeyen yeni anahtarlara sahip olduğunuzdan, sunucunuzu tekrar çevrimiçi duruma getirebilirsiniz .

  5. Eski sertifikaları iptal et .

  6. Hasar değerlendirmesi : SSL bağlantıları sunan bir işlemin hafızasında yer alan veriler sızdırılmış olabilir. Bu kullanıcı şifrelerini ve diğer gizli verileri içerebilir. Bu verilerin ne olabileceğini değerlendirmeniz gerekir.

    • Parola doğrulamasına izin veren bir hizmet kullanıyorsanız, güvenlik açığının açıklanmasından çok az bir süre önce bağlantı kuran kullanıcıların parolalarını tehlikeye atmış sayılmalıdır. (Bir süre önce, şifre bir süre bellekte kullanılmamış kaldığı için.) Günlüklerinizi kontrol edin ve etkilenen kullanıcıların şifrelerini değiştirin.
    • Ayrıca, tüm oturum çerezlerini tehlikeye atmış olabileceği için geçersiz kılar.
    • Müşteri sertifikaları ödün verilmez.
    • Güvenlik açığından çok az zaman önce paylaşılan veriler sunucunun hafızasında kalmış olabilir ve bu nedenle bir saldırgana sızdırılmış olabilir.
    • Birisi eski bir SSL bağlantısı kaydettiyse ve sunucunuzun anahtarlarını aldıysa, artık transkriptlerini deşifre edebilirler. ( PFS sağlanmadığı sürece - bilmiyorsanız, olmadı.)

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

İstemci uygulamalarının etkilendiği yalnızca birkaç durum vardır. Sunucu tarafındaki sorun, herkesin bir sunucuya bağlanabilmesi ve böceği kullanmasıdır. Bir müşteriden yararlanmak için üç şartın yerine getirilmesi gerekir:

  • İstemci programı, SSL protokolünü uygulamak için OpenSSL kütüphanesinin buggy versiyonunu kullandı.
  • İstemci kötü amaçlı bir sunucuya bağlı. (Örneğin, bir e-posta sağlayıcısına bağlandıysanız, bu bir endişe değildir.) Bu, sunucu sahibi bu güvenlik açığından haberdar olduktan sonra gerçekleşti, muhtemelen 2014-04-07 sonrasında.
  • İstemci işleminde bellekte sunucuyla paylaşılmayan gizli veriler vardı. (Yani sadece wgetbir dosyayı indirmek için koştuysanız, sızdıracak veri yoktu.)

Bunu UTC 2014-04-07 akşamları arasında ve OpenSSL kütüphanenizi yükseltmek arasında yaptıysanız, istemci işleminin hafızasında bulunan verileri tehlikeye sokacak şekilde düşünün.

Referanslar


4
"SSL / TLS bağlantılarının yalnızca sunucu tarafının etkilendiğine" inanmıyorum. openssl.org/news/secadv_20140407.txt , istemciden veya sunucudan gelen sırları açığa çıkarabileceğini söylüyor. ubuntu.com/usn/usn-2165-1 kabul eder. Kötü amaçlı bir sunucuya bağlanırken istemci sertifikalarını kullanma şansınız az, ancak olasılık var.
armb

@armb İyi bir noktaya değindin. Müşteri sertifikalarının kullanılıp kullanılmadığı önemli değildir, veri sızıntısı sertifikaların kullanımıyla ilişkili değildir. Profesyonellerin yardımını aldım .
Gilles,

Müşteri sertifikaları, özel anahtarları sızdırmanız gereken bir durumdur, ancak evet, şifreler, yetkilendirme çerezleri vs. yine de sızıntı yapabilir. Ancak, tipik kullanımda kıvrılma veya yazma gibi OpenSSL tabanlı bir istemciyle, kötü amaçlı bir sunucuya bağlanırken bellekteki diğer siteler için sırlarınız olmaz; bu durumda, müşterinin sırlarını verirseniz, tek sızıntının olacağını düşünüyorum. Onları meşru bir siteye vermeyi umuyor ve Heartbleed, sertifika doğrulamanın doğru siteye bağlı olmadığınızı ortaya çıkarmasından önce el sıkışma sırasında sızdırıyor.
armb

1
@Gilles Hangi müşterilerin Heartbleed’e karşı savunmasız oldukları kanıtlanmıştır? . Nginx (proxy modu), wget, linkler ve diğerleri hakkında "ilginç" bir bellek kazanmayı başardım.
Lekensteyn

1
@ MuhamedHuseinbašić Paket openssl, komut satırı araçlarını içerir. SSL protokolünü (Apache gibi) uygulamak için OpenSSL kütüphanesini kullanan uygulamalar tarafından kullanılmaz. Ancak, yalnızca dağıtımın güvenlik güncellemelerini uygulamanız gerekir.
Gilles

40

Ubuntu çalıştırmasında 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 eklenmesi gerekir.

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

Https://launchpad.net/ubuntu/+source/openssl/1.0.1-4ubuntu5.12 adreslerine baktığımızda , hangi 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
...

2
Sürüm 5.12'yi yükselttim ve aldım ancak bu araç hala savunmasız olduğumu söylüyor filippo.io/Heartbleed Düşünceler?
toxaq

3
Güncellenmiş sunucularımızı bu taraf üzerinde test ettim ve bana etkilenmediğimi söyledi. Sisteminizi yeniden başlattınız mı yoksa en azından gerekli tüm işlemlerin yeniden başlatıldığından emin misiniz?
Crimi

3
OPENSSL’yi güncelledikten sonra tek yapmam gereken apache hizmetini yeniden başlatmaktı, ancak zarif olmadı . Gitmek ve yeniden başlatmak zorunda kaldısudo service apache2 restart
Tom Hert

1
Güvenlik açığımın nedenini şimdi buldum: mod spdy-beta yükledim. Çıkardıktan ve apache'yi yeniden başlattıktan sonra tüm testler artık yeşil.
Andreas Roth

3
Güncelleme openssl, Apache, Nginx veya postfix gibi uygulamaları düzeltmez. libssl1.0.0Diğer yayınlarda açıklandığı şekilde güncellemeniz ve yeniden başlatmanız gerekir.
tnj

17

Senin Eğer apt-get depoları herhangi önceden derlenmiş içeriyor yapmak 1.0.1g OpenSSL , sürüm yani sadece resmi web sitesinden kaynakları indirin ve derlemek.

Son openssl sürümünü derlemek ve yüklemek 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 değiştirerek bir sembolik bağlantıyla 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

Cf bu blog yazısı .

Not: Blog yazısında belirtildiği gibi, bu geçici çözüm "1.0.1g openSSL kaynaklarıyla yeniden derlenmesi gereken Nginx ve Apache sunucusu" sorununu çözmez.


2
Genellikle Ubuntu yeni yukarı akış sürümünü sağlamaz, ancak değişiklikleri minimumda tutmak için desteklenen tüm sürümlerin sürümlerini yayar.
Florian Diesch

1
Not: OpenSSL'yi güncelledikten sonra sunucunuzu yeniden başlattığınızdan emin olun. Apache ve Nginx yeni lib'i aldı ve güvenlik açığı kapatıldı.
dAngelov

6
Heh, şimdi bu yazının ayrıntılarını okumak için zaman harcadığım için daha da çok üzülüyorum - İnternet üzerinden rastgele bir yerden tarball indirmek, paketlerini açmak ve bir kısmını root olarak çalıştırmak sadece umursamaz bir davranış. Tarball imzaları indirilmiş ve kontrol edilmiş olsaydı biraz daha iyi olurdu, ancak imzaları doğru anahtarla imzaladığınızdan emin olmanız zor bir soru. Dağıtımlar, tarball'ların ve yamaların güvenli bir şekilde kanıtlanmasını sağlama çabasına çoktan gitti. Teşekkürler.
sarnold,

2
ŞİMDİ kaynağından derlemek ve daha sonra apt'den daha yeni bir kurulum yapmak iyi bir fikir olabilir, bu şekilde ubuntu'nun eski sürümlerinde beklenenden çok daha güvenli bir şekilde, sadece iki
kuruşum

2
@sarnold openssl.org openssl kaynağını indirmek için rastgele bir yer gibi görünmüyor. Kanonik bunu gereksiz kılmalı, ancak openssl.org ' dan çalışmak için yetkili bir kurum olmalıdır .
Rustavore 13:16

12

Sunucu çapında paket yükseltme yapmak istemeyenler için. Bugün bu rehberlerin bir kısmını okudum ve apt-get upgrade openssl=== apt-get upgradebu, makinenizin gerektirdiği tüm güvenlik düzeltmelerini uygulayacak. Açıkça, bir yerde eski bir paket sürümüne yaslanmıyorsanız, Harika.

Bu, Apache 2 çalıştıran Ubuntu 12.04 LTS'de yapılması gereken en düşük eylemdir:

  • Bu adrese gidin ve güvenlik açığınız olduğunu kanıtlayın. WEB SUNUCUSUNUZUN DIŞ DIŞ ADRESİNİ kullanmalısınız. Bir loadbalancer (örneğin ELB) kullanıyorsanız, doğrudan web sunucunuzla iletişim kurmayabilirsiniz.

  • Paketleri yükseltmek ve yeniden başlatmak için aşağıdaki 1 lineri çalıştırın. Evet, tüm rehberlerin 4 Nisan 2014'ten sonra bir zaman damgası olması gerektiğini söylemiştim, bu benim için durum gibi görünmüyor.

    apt-get güncelleme && apt-get install openssl libssl1.0.0 && /etc/init.d/apache2 yeniden başlat

  • Uygun paket sürümlerinin kurulu olduğundan emin olun ve web sunucunuzda güvenlik açığını bir kez daha kontrol edin.

Anahtar paketler aşağıdaki gibidir, bu bilgiyi aşağıdaki komutu kullanarak belirledim ve daha sonra kertenkeleyi düzenledim (makinelerimin durumu hakkında bu kadar fazla bilgiye ihtiyacınız yok).

$ 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.12bu güvenlik açığını içermemelidir. Durumun, aşağıdaki web sitesine tekrar gidip web sunucunuzu test ederek olmasını sağlayın.

http://filippo.io/Heartbleed/


2
Bir sunucudaki güvenlik açığını kanıtlamak için harici bir siteyi kullanmak benim için yanlış bir yaklaşım gibi görünüyor.
Rinzwind

Dış güvenlik açığı test komut dosyaları bu günlerde giderek daha yaygın hale geliyor. Dahili bir komut dosyasının ne yaptığını tam olarak yapar, bağlantı yalnızca harici bir web sunucusundan başlatılır. Tüm bağlantıları uzaktan başlatan bir program örneği için WhiteHatSecurity.com gibi sitelere bakabilirsiniz. Bunun uçmayacağı durumlar var, örneğin ağ güvenlik açığı testi, ancak öne dönük bir web sunucusunu test etmek için (genel olarak bir SSL sunucusu olacak) bu neredeyse ideal.
Adrian

Yükseltiliyorsa neden paketi kurmalı?
Braiam

1
apt-get install openssl libssl1.0.0benim için yaptım. openssl version -aŞimdi Koşu gösterir:built on: Mon Apr 7 20:33:29 UTC 2014
Topher

"Dış güvenlik açığı test komut dosyaları bugünlerde giderek daha yaygın hale geliyor." Bu dış sitenin sistemimi kötüye kullanması olasılığını ortaya koyuyor: tüm bunların başarısız olduğunu bilmeleri için ihtiyacım var. Hayır bu doğru yol değil. (ve evet kendi sitelerimi apache ve openssl ile barındırıyorum).
Rinzwind

11

Burada acilen yardıma ihtiyaç duyan birçok yorumcu gördüm. Yönergeleri izliyorlar, test web sitelerinin bazılarını kullanırken yükseltme ve yeniden başlatma ve hala savunmasızlar.

Paketleri libssl gibi bekletmediğinizden emin olmak için kontrol etmelisiniz.

:~$ 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.

Bunları yükseltmek apt-mark unhold libssl1.0.0için (örneğin). Sonra yükseltme: apt-get upgrade -V. Ardından, etkilenen hizmetleri yeniden başlatın.

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.