SoundHijacking - Abusing Missing XFO
Yıllar öncesinde çokça tartışılan UI Redressing atağının ve önlemi olarak bildiğimiz X-Frame-Options Header'ı farklı bir amaçla kullanıldı. Araştırmacı Raushan Raj, Google Docs'te XFO header'ının kullanılmamasından faydalanarak sitesini ortam dinleme cihazına çevirmeyi başardı.
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.
Kaynak: https://www.tinfoilsecurity.com/blog/what-is-clickjacking
Clickjacking saldırısının çalışma mantığı yani frame içerisinde siteniz yüklendiği takdirde söz konusu olabilecek UI Redressing saldırıları web güvenlik tarihinde çokça konuşuldu.
Bu kez çok daha yaratıcı bir teknik ile karşı karşıyayız. Çünkü araştırmanın sahibi Raushan Raj, Google Docs (docs.google.com) domaininde X-Frame-Options header'ı olmamasından hareketle bunu bizim bu yazıda SoundHijacking adını verdiğimiz bir zafiyetin istismarına götürdü. 2337 dolar ile ödüllendirilen Raj'ın yöntemi gerçekten takdire şayan.
Bu vektörü kullanan Raj, kendi oluşturduğu ve public erişime açık bir dokümanı iframe içerisinde kendi sitesinde yüklüyor.
<iframe src=”https://docs.google.com/document/d/XXXXXXX/edit" allow=”microphone *”></iframe>
Sitenin ziyaret edilmesi ile Voice Typing'in enable olduğu doküman adeta bir ortam dinleme cihazı gibi çalışıyor ve yakaladığı konuşmaları metne çevirip dokümana yazıyor.
Iframe talimatındaki allow attribute'ü dikkatinizi çekmiş olmalı. Bu konuya Haftanın Hackleri'nde değinmiş idik.
Özetlemek gerekirse, 10 Temmuz 2018 tarihini taşıyan taslak ile önerilen Feature Policy ile konum bilgilerine erişim, mikrofon ve kamera kullanımı, multimedya oynatma özellikleri, jiroskop vb. sensörleri gibi pek çok tarayıcı özelliğinin etkin olup olmayacağı kullanıcının global tarayıcı ayarları dışında, sitelerdeki talimatlar ile de yönetilebilecek.
Örneğin, siz tarayıcınız üzerinde example.com'un mikrofon ve kameranıza erişmesine izin verdiniz. Fakat example.com, another.com adında farklı bir siteyi iframe içerisinde yüklüyor. Feature Policy sayesinde example.com, iframe ya da başka bir biçimde sayfa üzerinden görüntülenen bu üçüncü parti sitenin bu yetenekleri kullanmasını kısıtlayabilecek yahut izin verebilecek.
Daha önce de Google'da (Google Play Store) Clickjacking zafiyeti raporlayan Raj, bu bulgusu ile 2337 Dolarlık bir ödüle layık görülmüş.
Görüldüğü gibi X-Frame-Options header'ının yokluğu pek çok farklı atak senaryosunda kullanılmakta.
Not etmekte fayda var,
- X-Frame-Options header'ı bütün sayfaların HTTP yanıtlarında yer almalıdır.
- X-Frame-Options yerine, Content-Security-Policy frame-ancestors direktifi kullanılabilir.
Content-Security-Policy: frame-ancestors 'none'; // Hiçbir URL sayfayı iframe içerisinde yükleyemez.
Content-Security-Policy: frame-ancestors 'self'; // SAMEORIGIN parametresindeki işlevin aynısı.
X-Frame-Options ile birlikte yalnızca bir URL'i whitelist'e alırken, CSP frame-ancestors ile birden fazla domain'i, güvenilir URL'ler listesinde belirtip, sayfalarımızı iframe olarak yüklemelerine izin verebiliriz.
X-Frame-Options'ı Hangi Browserlarda Kullanabilirim?
Kaynak: https://caniuse.com/#search=x-frame-options