Heartbleed

SSL/TSL protokolü Internet üzerinde web sunucuları, tarayıcılar, e-posta, anlık mesajlaşma araçları ve VPN gibi uygulamaların şifreli bir şekilde haberleşmeleri için geliştirilmiştir. Temel amacı gizlilik ve güvenlik sağlamaktır. Açık ve gizli anahtara sahiptir. Açık anahtar ile şifrelenen veri gizli anahtar tarafından çözülür. Böylece iletilen verinin şifresinin doğru adreste ve doğru alıcı tarafından çözülmesi sağlanır. İşleyiş yapısına Wiki‘den (Türkçe) bakalabilirsiniz. Kısaca anlatacak olursak:

  • Ali -> Selam -> Ayşe diye bir mesaj yolladı. Bu mesaj desteklenen en yüksek TSL protokolü, rastgele bir sayı, doğrulama, şifreleme, mesaj doğrulama kodu (MAC) içeren şifreleme yöntemi ve bir sıkıştırma yöntemi ile yollandı.
  • Ayşe -> Selam -> Ali diye cevap verdi. Bu cevap da Ali tarafından seçilen TSL protokolü, rastgele sayı, doğrulama, şifreleme, mesaj doğrulama kodu (MAC) içeren şifreleme yöntemi ve sıkıştırma yöntemine uygun olarak verildi.
  • Ayşe -> Sertifika -> Ali mesajı yolladı. Bu mesaj şifreleme yöntemine uygun olarak şeçildi.
  • Ayşe -> SelamTamamlandı -> Ali diye bir mesaj daha yolladı.
  • Ali -> AnahtarDeğişimi -> Ayşe mesajı yolladı. Bu mesaj açık anahtarı (PreMasterSecret veya hiçbir anahtar) içermektedir. Bu değişimle artık üzerinden iletişim kurabilecekleri ortak bir sır belirleyebilecekler.
  • Ali ve Ayşe rastgele sayılar ve anahtar ile doğrulama ve şifrelemede kullanacakları ortak bir sır oluşturdular.
  • Ali -> ŞifrelemeYönteminiDeğiştir -> Ayşe mesajı gönderdi. Bu mesaj “Ayşe, bundan sonra sana göndereceğim her mesaj doğrulanacak ve şifrelenecek.” anlamına gelmektedir.
  • Ali -> Bitti -> Ayşe mesajı gönderdi. Bu mesaj  oluşturulan sır ile doğrulanmış ve şifrelenmiştir.
  • Ayşe Bitti mesajının şifresini çözmek isteyecektir. Eğer, oluşturdukları sıra uygun değilse el sıkışma gerçekleşmeyecektir.
  • Ayşe -> ŞifrelemeYönteminiDeğiştir -> Ali mesajı gönderdi. Bu mesaj da “Ali, bundan sonra sana göndereceğim her mesaj doğrulanacak ve şifrelenecek” anlamına gelmektedir.
  • Ayşe -> Bitti -> Ali mesajı gönderdi. Aynı şekilde oluşturulan sır ile doğrulandı ve şifrelendi.
  • Ali de Bitti mesajının şifresini çözecektir.
  • Son noktada, el sıkışma işlemi tamamlanmış olacaktır.

SSL/TSL’e kısa bir giriş yaptıktan sonra dün Heartbleed adıyla bir OpenSSL hatası keşfedildi. Heartbleed adı ise TSL/DTSL’de olan heartbeat (RFC6520) uzantısındaki hatadan geliyor. Bu hata normal şartlar altında şifreli bir şekilde korunun verinin çalınmasına sebep olabilmektedir. Bununla birlikte, gizli anahtar ile şifreli verinin çözülmesi, kullanıcıların sahip oldukları kullanıcı adı ve şifre gibi içeriklerin elde edilmesi, iletişimin dinlenebilmesi, verilerin servis veya kullanıcılardan hiçbir şekilde farkında olmadan çalınmasına olanak sağlamaktadır. Diğer yandan, yapılabilecek herhangi bir saldırının kolaylığı ve iz bırakmaması kullanıcıları büyük bir risk altına sokmaktadır. Yukarıdaki işleyiş örneğine de bakacak olursanız Ali ile Ayşe arasında geçen şifreli iletişim bu hata yüzünden saldırganların iletişimde kullanılan şifrelere sahip olmalarına ve mesaj içeriğini çok kolay bir şekilde elde edebilmelerine neden olmaktadır.

Nelerin sızmış olabileceğine dair olarak dört kategori oluşturulmuş. Bunlar; birinci anahtarlar, ikincil anahtarlar, şifreli veriler ve hafıza içerikleridir. Kısaca özetlersek; birincil anahtarlar şifreleme için kullanılan açık ve gizli anahtarları içermektedir. Saldırganın servisler tarafından şifrelenen trafiğin arasına girilebileceği, şifreyi çözebileceği, özellikle geçmiş trafiğin hatanın yamalansa bile şifresinin çözülebileceğidir. İkincil anahtarlar, servislerde kullanılan kullanıcı adı ve parola gibi kullanıcı içerikleridir. Şifreli veriler, servislerde tutulan verilerdir. Bunlar iletişime konu olan veriler, e-postalar, belgeler veya şifrelemeye konu olan herhangi bir içerik olabilmektedir.  Hafıza içerikleri de hafıza adreslerinde tutulan teknik detaylar olabildiği gibi çeşitli saldırılara karşı alınan güvenlik önemleri de olabilmektedir.

Ben de etkileniyor muyum?

Malesef etkileniyorsunuz. OpenSSL Internet üzerindeki trafiği şifrelemek üzere en çok kullanılan açık kaynak şifreleme kütüphanesi olduğu için en çok kullanılan sosyal medya siteleri, kurduğunuz SSL içerikli bir uygulama, ağ uygulamaları, hatta devlet siteleri bile gizlilik ve işlemleri (trafik, giriş vs.) korumak adına bu protokolü kullandığı için etkilenmektedir. Bu yüzden sizler de doğrudan veya dolaylı olarak etkilenmektesiniz. Ayrıca, ilk keşfedenlerin bu hatayı bulanlar olmadığını da unutmamalısınız. Hatayı duyuran Codenomicon ve Google‘dan Neel Mehta yaptıkları test saldırılarında durumun çok ciddi olduğunu ve bu açığın çoktan kullanılmış olabileceğini belirtmektedirler.

Hangi OpenSSL sürümleri etkilenmekte?

  • OpenSSL 1.0.1 ve 1.0.1f etkilenmekte,
  • OpenSSL 1.0.1g etkilenmiyor,
  • OpenSSL 1.0.0 etkilenmiyor,
  • OpenSSL 0.9.8 etkilenmiyor.

Hangi GNU/Linux dağıtımları etkilenmekte?

  • Debian Wheezy, (OpenSSL 1.0.1e-2+deb7u4) etkilenmekte,
  • Ubuntu 12.04.4 LTS, (OpenSSL 1.0.1-4ubuntu5.11) etkilenmekte,
  • CentOS 6.5, (OpenSSL 1.0.1e-15) etkilenmekte,
  • Fedora 18, (OpenSSL 1.0.1e-4) etkilenmekte,
  • OpenBSD 5.3 (OpenSSL 1.0.1c 10 Mayıs 2012) ve 5.4 (OpenSSL 1.0.1c 10 Mayıs 2012) etkilenmekte,
  • FreeBSD 8.4 (OpenSSL 1.0.1e) ve 9.1 (OpenSSL 1.0.1c) etkilenmekte,
  • NetBSD 5.0.2 (OpenSSL 1.0.1e) etkilenmekte,
  • OpenSUSE 12.2 (OpenSSL 1.0.1c) etkilenmekte.

Ne yapmalı?

Servis tarafını ilgilendiren duruma biz herhangi bir şey yapamıyoruz. Sadece, onların SSL sertifikalarını güncellemelerini bekleyeceğiz. Ardından, bir önlem olarak kullandığımız parolalarımızı değiştireceğiz. Bununla birlikte, bizi ilgilendiren tarafta ise ilk olarak dağıtımlarınızda kurulu olan OpenSSL paketinin sürümünü kontrol edin. Kontrol ettiğimde bende yüklü olan 1.0.1f olan sürümü 1.0.1g‘ye düşürüldü. Eğer, bu açıktan etkilenen bir sürüme sahipseniz ilk iş olarak etkilenmeyen sürümlere geçin. Muhtemelen, bir güncelleme çıkmıştır.