HeartBleed nedir?

heartbleednedir

HeartBleed yakın zamanlarda oraya çıkan internetin en büyük ayıplarından biridir. Kullanıcıların bilgilerine kolaylıkla ulaşılmasını sağlayan bir OpenSSL hatasıdır. Bu problemden etkilenmiş bütün siteler açıklarını hızla kapatmaktadırlar. Sizin de hesabınızı güvene almak için yapmanız gereken heartbleed’den nasibini almış sitelerdeki şifrelerinizi değiştirmektir.

HeartBleed’den etkilenen sitelerden bazıları:

  • Google (Gmail de dahil)
  • Yahoo (Yahoo Mail de dahil)
  • Facebook (kesin değil, ama şifre değiştirmekte fayda var)
  • Instagram
  • Pinterest
  • Tumblr
  • GoDaddy
  • TurboTax
  • USAA
  • Dropbox
  • GitHub
  • OKCupid
  • SoundCloud

Screen Shot 2014-04-11 at 5.59.22 PM
Oysa, açık kaynaklı projelerden biri olan OpenSSL ‘in en güzel yanı kodlamanın açık olmasıdır. Böylece OpenSSL kodlamasında gizli kısımlar olamaz. Hatta, heartbleed’in bulunduğu ve düzeltildiği anı bile görebilirsiniz.

HeartBleed’in bu şeffaflığa rağmen iki yıldır bulunamamış ve gözden kaçmış olması da şaşırtıcıdır. HeartBleed TLS/SSL ile ilgili bir problem değildir, hatta OpenSSL’in çalışma prensipleri ile de alakalı değildir. Basit bir kodlama hatasıdır.

İki server birbiri ile iletişime geçip şifrelenmiş el sıkışma meydana getirecekleri zaman (encrypted handshake), kalp atışı (heartbeat) denen bir olay yaparlar. Bu HeartBleed de adını bu HeartBeat olayından almaktadır.

HeartBeat birbirleri ile haberleşen iki bilgisayarın birbirlerinin varlığını kontrol etmeye yarar. Yani bir tarafın bağlantısı koptuğunda diğer taraf bunu hemen anlar ve bilgi göndermeyi keser.

Örneğin siz, bankanız ile online işlem yaparken sizin cihazınızdan bankaya bir kalp atışı gider ve bankanın bilgisayarı buna cevap verir. Böylece bir şey ters gittiğinde kalp atışı senkronizasyonu bozulur ve gerekli önlem alınır. Bu basit işlem her gün milyonlarca kez yapılmaktadır ve arızalı OpenSSL bir çuval inciri berbat etmektedir. Hem de şu kısacık kod ile:
memcpy(bp, pl, payload);

memcopy (memory copy) bp ya da pl nereyi gösterirse göstersin hafızadaki payload byte’larını kopyalar. HeartBleed açığının oluşma nedeni ise memcpy sadece payload’ı değil hafızada o anda bulunan geri kalan 64k’ya kadar her şeyi bp’nin landing strip’ine kopyalıyor olması ve bilgiyi isteyen tarafa yollamasıdır. Bu işlemin gerçekleşmeyeceği tek durum ise hafızanın okunmayan bir kısmına ulaşılınca meydana gelmektedir. Bu durumda da segmentation fault hatası oluşur.

Bu karmaşık olayı şöyle basit bir önekle açıklayabiliriz:
Bir fotoğrafçıya gittiğinzi düşünün. Masanın üzerinde size ait olmayan fotoğraflar duruyor. Siz bu fotoğrafların üzerine size ait bir adet fotoğraf koyup, dükkan sahibine 100 adet fotoğrafın sizin olduğunu söylediğinizde adamcağız ‘seni kıracağıma, dişimi kırarım’ diyip bu fotoğrafları bir güzel bir kutuya yerleştirip size veriyor.

Segmentation Fault denen olayda ise çöpün üzerinde duran 80 adet fotoğrafın üzerine 1 fotoğraf kopyup buradaki 100 adet fotoğraf benim dediğinizi düşünün. 82. fotoğrafa gelince çöpe ulaşıldığı için dükkan sahibi amca error verip kalıyor.

Peki bu korkunç olay ne demek oluyor? Bilgiye ulaşmak isteyenler bu metafordaki yöntemle insanların kullanıcı isimlerine, şifrelerine, her türlü gizli bilgilerine kolaylıkla sahip olabiliyorlar.

Bu açığın çözümü de açığın kendisi kadar kolay:

* Read type and payload length first */
if (1 + 2 + 16 > s->s3->rrec.length)

return 0;

/* silently discard */

hbtype = *p++;

n2s(p, payload);

if (1 + 2 + payload + 16 > s->s3->rrec.length)

return 0;

/* silently discard per RFC 6520 sec. 4 */

pl = p;

HeartBleed açığı olan siteler hızla bu arızayı gideriyor ve kullanıcılarından şifrelerini değiştirmelerini istiyorlar.
HeartBleed açığı olan siteleri: http://filippo.io/Heartbleed/ buradan kontrol edebilirsiniz.
Screen Shot 2014-04-11 at 7.01.24 PM

Kaynaklar:
gizmodo
tamindir.com

12 Comments:

  1. Merak ettiğim bir olay idi, zevkle okudum, hiç bu işi bilmeyene anlatır gbi anlattığınız için minnettarım, bu sitenin sadece ayfon’dan ibaret olmadığını da bana göstermiş oldunuz, teşekkürler.

  2. Iphonedo verdiğin linkteki yere iphonedo.net yazdım hata verdi

  3. Teşekkürler iPhonedo Bey.

  4. Hacı valla süpersin. Çok güzel anlatmşsın

  5. Teşekkür ediyorum , bu güzel açıklama için.

  6. Kral adamsın vesselam 🙂

  7. theverge.com da sık sık haberini yapmışlardı ama tamamını anlamamıştım teşekkürler Türkçe yayınladıın için.

  8. Hocam sizin meslek nedir?

  9. Eline emeğine sağlık iPhonoDo beyciğim. Bu tür şeylere merak duyduğum için büyük bi zevkle okudum 🙂 Açıklamasını herkesin anlayabiliceği bi şekilde yaptığın için tekrardan teşekkür ederim 🙂

  10. Adam penatrasyoncu çıktı ya la..

Comments are closed