Session Replay vs. Privacy, R.I.P Reverse Tabnabbing, Firefox Hacklendim mi?

Invicti Security Team - 04 Aralık 2017 -

Bu yazımızda mouse hareketlerinizin takip edilmesinden, Frame Injection ve Reverse Tabnabbing’e yeni tarayıcı güncellemeleriyle veda edeceğimizden, Clickjacking’in bir sonraki evrimi Click Content Jacking’den ve Firefox’un yeni hiç hacklendiniz mi özelliğinden bahsediyoruz.

Session Replay vs. Privacy, R.I.P Reverse Tabnabbing, Firefox Hacklendim mi?

Popüler Web Siteleri Her Hareketimizi İzliyor!

Popüler web siteleri her hareketimizi izliyor. No Boundaries serisinin ilk yazısında web sitelerindeki üçüncü parti scriptlerin bizi izleyerek nasıl hassas verilerimizi elde ettiği konu ediliyor.

Belki farkındasınız, belki de değilsiniz, ama pek çok web sitesi gezdiğimiz sayfaları, yaptığımız aramaları kayıt eden üçüncü parti scriptler içeriyor. Fakat son zamanlarda artan bir oranda web siteleri "session replay" adı verilen ve kullanıcının tuş hareketlerinden, mouse hareketlerine, sayfa kaydırma hareketlerine kadar tüm hareketleri -üstelik bu hareketlerle web sayfalarına girdiğimiz tüm bilgileri de içerecek şekilde- saklıyorlar. Öyle ki sanki omuz başımızdan bizleri dikizliyormuşçasına. Sadece istatistiklere yoğunlaşan diğer analitik hizmetlerinin aksine bu scriptler elde ettikleri kullanıcı datalarını playback yöntemi ile tekrar izleme şansı da sunuyor.

Sözüm ona kullanıcıların siteleri ile nasıl etkileşime geçtiğini ve ilgi alanlarını öğrenerek sistemlerini iyileştirme amacını güden bu servisler, amacını ziyadesi ile aşıyor. Web sayfalarına girdiğimiz veriler çoğunlukla herhangi bir hariç tutma işlemi yapılmadan elde ediliyor. Üstelik biz submit / gönder butonuna basmıyor olsak bile. (Benzer bir hadiseyi incelediğimiz Haftanın Hackleri yazısı için tıklayınız.) Ayrıca bu veriler çoğunlukla güvenli olmayan bir biçimde örneğin HTTPS bağlantısı olmadan sunucuya aktarılıyorlar. Kullanıcıya bu oturum kaydı ile ilgili de bir bilgi verilmiyor. Bu datalar anonim bir biçimde saklanacağını saymak için makul bir gerekçe yok. Üstelik bazı firmalar session kaydını, gerçek kullanıcı kimliği ile ilişkilendirmeyi de destekliyor.

Araştırma Session Replay hizmeti veren Yandex, FullStory, Hotjar, UserReplay, Smartlook, Clicktale, and SessionCam firmalarına ait ayrıntılı bilgiler içeriyor.

Aşağıdaki tablo web sitelerindeki hangi alanların session kaydına tabi tutulduğunu gösteriyor:

Popüler Web Siteleri Her Hareketimizi İzliyor!

Yukarıdaki tabloya göre, içi dolu daireler ilgili alanların session kaydından hariç tutulduğunu, boş daireler ise alanların session kaydına dahil olduğunu gösteriyor. Yarı dolu daireler ise length mask denilen, girilen karakter uzunluğunca özel bir karakterler örneğin asteriks (*) ile maskelendiğini gösteriyor.

Sadece bu kayıt aşamasında değil, sonraki aşamalarda da kullanıcı datalarının korunması için gerekli özen gösterilmiyor. Örneğin, oturumlar kaydedildikten sonra publisher'a yani site sahiplerine bir dashboard üzerinden gösteriliyor. Yandex, Hotjar ve Smartlook kayıtlar HTTPS bir bağlantı üzerinden alınmış olsa bile, playback gösterimlerini HTTP, yani güvensiz bir bağlantı üzerinden aktarıyor.

Peki nasıl korunacağız?

Yaygın olarak kullanılan ad-block listeleri EasyList ve EasyPrivacy FullStory, Smartlook, veya UserReplay scriptlerini bloklamıyor.

EasyPrivacy; Yandex, Hotjar, ClickTale and SessionCam 'ı bloklayan filtrelere sahip.

Araştırmada mercek atlına alınan 5 firmadan biri, (UserReplay), Do Not Track (DNT) headerı gönderen kullanıcılardan data toplanmamasını sağlayan bir özellik sunuyor. Fakat araştırmaya göre Alexa Top Million'da analiz edilen sitelerde, DNT headerına saygı gösterecek bir konfigürasyon ayarına rastlamadıklarını da özellikle belirtiyorlar.

Araştırmanın ayrıntıları için lütfen tıklayınız.

Frame Injection ve Reverse-Tabnabbing Tarih mi Oluyor?

Chromium Blogu'nda yer alan yazıya göre, tarayıcının gelecek versiyonları önemli güvenlik güncellemeleri içeriyor. Kullanıcılardan aldıkları feedbackler ile biçimlenen yeni özellikler web güvenliği dünyasında şöhrete sahip Frame Injection ve Reverse Tabnabbing gibi birkaç zafiyetin tarih olması anlamına geliyor.

Kullanıcılardan gelen her 5 geri bildirimden birinin ihlal raporu içermesi ile harekete geçen Chromium mühendisleri, yaptıkları analizlerde ihlale yol açan bir dizi davranışı da tespit etti. Kullanıcıların en çok şikayet ettiği deneyim ise, sayfa yönlendirmeleri.

Yine yazıda bağlantı verilen destek sayfasında kullanıcılara rahatsızlık veren bu tarz özellikler özetlenmiş durumda. Buna göre:

  • Kullanıcının etkileşimi olmaksızın yapılan sayfa yönlendirmeleri
  • Kullanıcının etkileşimi sağlamak için çeşitli yollarla kullanıcıyı buna ikna eden/zorlayan davranışlar:
    • Kullanıcıyı ikna etmek sistem hata veya bilgi mesajları görünümündeki tasarlanan sayfa elementleri
    • Dialog kutuları ve bilgilendirme ekranını taklit eden öğeler
    • Çalışmayan özellikleri tasvir edenler.
    • Kapatma düğmesi görünümde olup, başka bir sayfayı açma ya da yönlendirme işlevi yapan elementler

Frame Injection'a Veda

Frame Injection, kullanıcıdan alınan girdilerin yeterli kontrole ve encoding'e tabi tutulmadan sayfaya eklenmesi ile oluşan ve sayfaya bir iframe elemanı eklenmesi ya da sayfada var olan bir frame'in source'unun kullanıcıdan alınan data ile değiştirilebildiği web zafiyetidir.

Peki sayfamıza enjekte edilen bir iframe ile saldırgan ne yapabilir?

2010 yılında Zalewski'nin Mozilla'ya raporladığı ve StrojeHijacking olarak adlandırdığı zafiyet dolayısı ile, siz esas sayfada bir inputa değer girerken, aniden sayfanın focusu bir iframe olarak değiştirilip, tuş hareketleriniz yakalanabilirdi.

Bugün ise sayfamıza enjekte edilen bir frame'in yaratacağı en önemli tehdit, framelerin top level navigation yapabiliyor oluşu, yani kendilerini içeren sayfayı başka bir sayfaya redirect edebiliyor oluşları

top.location.href="http://www.attacker.site";

Tedbir için kullanıcıdan alınan dataların kontrollerinin doğru bir biçimde yapılması, bu değerlerin sayfaya yazdırılırken encode işlemlerinin yapılmasının yanı sıra, bir derinlemesine bir savunma olarak CSP'nin frame-src attribute'u da kullanılabilir.

Fakat Chrome 64 ile birlikte gelen özellik, Frame Injection zafiyetini tarihin tozlu raflarına kaldıracak cinsten.

Reverse Tabnabbing'i Çok Sevmiştik!

Bu özelliğe göre, kaynağı üçüncü parti siteler olan iframeler top level navigation'ı tetiklemek isterlerse, browser bu isteği uygulamak yerine, kullanıcıdan onay almak için bir notification görüntüleyecek.

Reverse Tabnabbing'i Çok Sevmiştik!

Sayfalarımızdan harici bağlantılara verdiğimiz linkler, şayet target="_blank" olarak, yani yeni bir sayfada açılıyorsa, bu açılan sayfa "opener" değişkeni vasıtasıyla, kendisini açan pencereye ulaşabiliyor. SOP gereği, bu yeni açılan sayfa opener'ın DOM'una erişemese de, opener'ın location özelliğini değiştirilebiliyor. Yani opener 'ın işaret ettiği, kendisini açan sayfayı yeni bir adrese redirect edebiliyor.

Tabnabbing zafiyetinden esinlenerek Reverse Tabnabbing olarak isimlendirilen bu zafiyet linklerdeki rel attribute'ına aşağıdaki değerlerin girmesi ile ortadan kaldırılabilir:

<a href="..." target="_blank" rel="noopener noreferrer">...</a>

Chrome 65 ile birlikte geleceği duyurulan yeni özellik ile, main page üzerinden açılan tablar, main page'i redirect edemeyecek, bunun yerine yine kullanıcıya bir notification gösterilecek.

Chrome'un gelecek versionlarında güvenlik özelliklerinin ayrıntıları için lütfen tıklayınız.

Clickjacking 'in Muhteşem Dönüşü: Click Content Jacking

Clickjacking saldırısı uzun yıllardır web güvenliği dünyasında bilinen bir zafiyet. Özetle Clickjacking saldırı yönteminde saldırgan hedef siteyi opacity değeri düşük bir iframe içerisinde yükleyerek, ziyaretçinin transparan hale gelen hedef sitenin altında gördüğü masum sitede işlem yapıyormuş hissine kapılmasını sağlar. Böylece saldırgan, kurbanı zararsız görünen bağlantılara tıklamaya ikna ederken, hedef sitedeki bir dizi aksiyonun tetiklenmesine yol açar.

Click Content Jacking

Resim: https://www.tinfoilsecurity.com/blog/what-is-clickjacking

Günümüzde sık rastlanmasa da oAuth ataklarında hala önemli bir payanda görevi görebilmektedir.

Arbaz Hussain isimli güvenlik araştırmacısı aynı origine sahip iki farklı frame arasında drag & drop işlemi yapılabileceğinden hareketle, yeni bir içerik çalma (content extraction) yöntemi keşfetti.

Yazıdaki senaryoya göre, victim.com Clickjacking saldırısına karşı herhangi bir güvenlik mekanizması olmayan basit bir blog sitesi. Bu blog sitesinin, bir de yorum özelliği olduğunu düşünelim.

Böylesi bir sitede Clickjacking'e karşı bir güvenlik tedbiri olan X-Frame-Options headerının yokluğunu raporlamak en iyi ihtimalle medium kategorisinde değerlendirilecektir. Oysa Arbaz Hussain 'e göre hemen pes etmemeli ve siteyi gezinmeye devam etmeliyiz.

victim.com Üzerinde yine XFO headerı ile korunmayan http://victim.com/api/user.json URL'ine denk geldiğinizi düşünün:

Click Content Jacking

Görüldüğü üzere user.json dosyası CSRF_TOKEN, CreditCard, email gibi hassas veriler içeriyor.

Şimdi saldırganın kendi hazırladığı bir sayfada hem http://victim.com/api/user.json adresini hem de victim.com'u bir iframeler içerisinde yüklediğini düşünelim.

Yazının başında da belirttiğimiz gibi eğer iki frame birbiri ile aynı origine sahipse bu iki frame arasında drag & drop (sürükle & bırak) işlemi yapılabildiğinden söz etmiş idik. Bir iframe'de gözüken ve hassas bilgiler içeren JSON dosyası böylelikle, diğer iframe'deki blog post comment alanına sürüklenip bırakılabilecek ve "Comment!" butonunu tıklanarak hassas bilgiler içeren JSON dosyasının yorum olarak blog postun hemen altında gözükmesi sağlanacak.

Yazının ayrıntıları için lütfen tıklayınız.

Firefox'dan Dev Hizmet: Acaba ben de mi hacklendim?

Mozilla mühendisleri, veri sızıntılarından nasibini almış sitelere ziyarette, kullanıcıları bilgilendirecek bir sistem üzerinde çalışıyorlar. Buna göre, şayet veri sızıntılarından etkilenmiş bir siteyi ziyaret ediyorsanız, adres çubuğunun hemen altında çıkan bir bilgilendirme kutusu ile bir uyarı gösterilecek. Üstelik kulllanıcı adı veya epostanızın bu ifşaatın içerisinde yer alıp almadığını sorgulayabileceksiniz.

Firefox'dan Dev Hizmet: Acaba ben de mi hacklendim?

Çalışmalarına henüz başlanan özellik, şimdilik Firefox'un codebase'inde değil. Özelliğin prototipi bir add-on olarak Nihanth Subramanya tarafından geliştirilmeye devam ediyor. Breach Alerts adı verilen add-on'un kodlarına Github reposu üzerinden ulaşılabilir. Kodları derleyip, Firefox'a import etmek mümkün. Şimdilik sadece Firefox Developer Edition tarafından destekleniyor ve güvenlik uzmanı Troy Hunt'un Have I Been Pwned sitesi tarafından listelenen sitelere yapılan ziyaretlerde tetikleniyor.

Mozilla'nın dil ve gösterime özel bir dikkat göstermesi gereken bu özellik son kullanıcılar için önemli bir farkındalık yaratacak.

Haberin ayrıntıları için lütfen tıklayınız.