Clickjacking(UI redressing) Saldırıları

Clickjacking(UI redressing), kullanıcıların farkında olmadan tıklama yapması için kullanılan bir arayüz saldırı tekniğidir. Clickjacking farklı şekillerde oluşturulabilir ancak en bilindik olan modeli, frame’in görünmez hale getirilerek asıl içeriğin üzerine eklenmesi ile kullanıcının görünmez alana tıklamasını sağlamaktır. Kullanıcılar bu görünmez frame’e (çerçeve) tıkladıkları anda clickjacking saldırısına maruz kalmış olurlar.

Clickjacking saldırısı, sonuçlarına göre farklı isimlerle adlandırılabiliyor. Örneğin; Facebook üzerindeki bir clickjacking saldırısı ile bir saldırganın kendi belirlediği gönderi için beğeni toplaması Likejacking, kullanıcının imlecini farklı bir pozisyona yönlendiren başka bir UI redressing tekniği ise Cursorjacking olarak adlandırılıyor. (Not: Cursorjacking, Mozilla Firefox üzerinde bulunan FLASH destekli bir zafiyetten kaynaklanıyordu ve geliştiriciler tarafından giderildi.)

Basit Clickjack Örneği:

Aşağıda örnek olarak verilen kodda

<iframestyle=”height: 1440px; width: 720px;” src=”zafiyetlisite.com.tr/”></iframe>

“iframe” tagları arasında src parametresine zafiyetlisite.com.tr adresi verilerek clickjack saldırısı için hedef alınmıştır.

[Kod Bloğu]<html>

<body>

<iframestyle=”height: 1440px; width: 720px;” src=”https://zafiyetlisite.com.tr/”></iframe>

</body>

</html>
[/Kod Bloğu]

Örnek bir senaryoda; bu zafiyetten yararlanan saldırganlar, “l” (küçük L) yerine “I” (büyük I) harfini kullanarak yarattıkları “zafiyetiisite.com.tr” alan adı içerisinde zararlı içerik oluşturarak frame içerisine opacity değeri “0” olan ve bu zararlı içeriğe yönlendirme yapacak buton eklerler. Daha sonra hedef aldığı sitenin kullanıcılarının bu butona tıklamasını sağlayıp uyguladıkları alan adı aldatmacası ile de kurbanların farklı bir siteye yönlendirildiklerinin farkına varmamalarını sağlamaya çalışırlar. Böylece daha tutarlı bir clickjacking saldırısı gerçekleştirmiş olurlar.

Clickjacking Saldırısından Korunma Yöntemleri

Clickjacking saldırısını önlemek için HTTP Header’larının aşağıdaki güvenlik başlıklarına dikkat ederek düzenlenmesi önerilmektedir. Öncelik olarak eğer zafiyetlisite.com.tr web sitesi X-Frame-Options: deny veya X-Frame-Options: sameorigin olarak headerlarını yapılandırmış olsaydı karşımıza aşağıdaki gibi bir görsel gelirdi.

  • DENY – Sayfanın bir çerçevede(frame) görüntülenmesini engeller.
  • SAMEORIGIN– Sayfa yalnızca kendisiyle aynı orijinli bir sayfadaki bir çerçeveye gömülebilir.
  • ALLOW-FROM URL: Yalnızca belirtilen URL tarafından sitenin embed edilmesine izin verir.

Content Security Policy(CSP), tıklama hırsızlığı gibi saldırılara karşı bir algılama ve önleme mekanizmasıdır. CSP genellikle web sunucusunda formun bir dönüş Header’ı olarak uygulanır. Önerilen korunma yöntemi CSP içerisinde frame-ancestors  özelliğini “none” veya “self” olarak  tanımlamaktır.

Örnek: Content-Security-Policy: frame-ancestors ‘self’;

Bunların yanı sıra siteniz içerisindeki bir bağlantı ile kullanıcı farklı bir alan adına ait siteye yönlendiriliyor ise kullanıcıya “x.com üzerinden y.com adresine yönlendiriliyorsunuz, devam etmek istiyor musunuz?” gibi bir uyarı mesajı ile kullanıcının onayı alınmalıdır.