Clickjacking, kullanıcının görünmeyen veya başka bir öğe olarak gizlenmiş bir web sayfası öğesini tıklaması için kandıran bir saldırıdır. Bu, kullanıcıların farkında olmadan kötü amaçlı yazılım indirmesine, kötü amaçlı web sayfalarını ziyaret etmesine, kimlik bilgileri veya hassas bilgiler sağlamasına, para transfer etmesine veya çevrimiçi olarak ürün satın almasına neden olabilir.
Tipik olarak, tıklama hırsızlığı, kullanıcının gördüğü sayfanın üstünde, bir iframe içinde, görünmez bir sayfa veya HTML öğesi görüntülenerek gerçekleştirilir. Kullanıcı, görünen sayfayı tıkladığına inanır, ancak aslında, onun üzerine aktarılan ek sayfada görünmez bir öğeye tıklamaktadır.
Görünmez sayfa, kötü amaçlı bir sayfa veya kullanıcının ziyaret etmeyi düşünmediği meşru bir sayfa olabilir – örneğin, kullanıcının bankacılık sitesinde para transferine izin veren bir sayfa.
Clickjacking Varyasyonları:
- Likejacking – Facebook “Beğen” düğmesinin manipüle edildiği ve kullanıcıların aslında beğenmek istemedikleri bir sayfayı “beğenmelerine” neden olan bir teknik.
- Cursorjacking – Kullanıcının algıladığı pozisyon için imleci başka bir pozisyona değiştiren bir UI düzeltme tekniği. Cursorjacking, Flash ve Firefox tarayıcısındaki şu anda düzeltilmiş olan güvenlik açıklarına dayanır.
Tıklama saldırısı örneği:
- Saldırgan, kullanıcıya Tahiti’ye ücretsiz bir gezi vermeyi vaat eden çekici bir sayfa oluşturur.
- Saldırgan, arka planda kullanıcının bankacılık sitesine giriş yapıp yapmadığını kontrol eder ve eğer öyleyse, saldırganın banka bilgilerini forma girmek için sorgu parametrelerini kullanarak para transferini sağlayan ekranı yükler.
- Banka havalesi sayfası, ücretsiz hediye sayfasının üzerinde görünmez bir iframe içinde görüntülenir ve “Aktarımı Onayla” düğmesi, kullanıcı tarafından görülebilen “Hediye Al” düğmesinin üzerine tam olarak hizalanır.
- Kullanıcı sayfayı ziyaret eder ve “Ücretsiz Yolculuğumu Ayırt” düğmesine tıklar.
- Gerçekte, kullanıcı görünmez iframe’e tıklar ve “Aktarım Onayla” düğmesine tıklar. Fonlar saldırgana aktarılır.
- Kullanıcı, ücretsiz hediye hakkında bilgi içeren bir sayfaya yönlendirilir (arka planda ne olduğunu bilmeden).
Bu örnek, bir tıklama saldırısında, kötü niyetli eylemin (bu durumda banka web sitesinde) saldırgana kadar izlenemeyeceğini gösterir, çünkü kullanıcı bunu kendi hesabında yasal olarak oturum açarken gerçekleştirmiştir.
Tıklamayı azaltma
Clickjacking’e karşı savunmanın iki genel yolu vardır:
- Client-side methods– en yaygın olanı Çerçeve Bozma olarak adlandırılır. İstemci tarafı yöntemler bazı durumlarda etkili olabilir, ancak kolayca atlanabildikleri için en iyi uygulama olarak kabul edilmezler.
- Server-side methods– en yaygın olanı X-Frame-Options’dır. Sunucu taraflı yöntemler, güvenlik uzmanları tarafından tıklama hırsızlığına karşı etkili bir savunma yöntemi olarak önerilmektedir.
X-Frame-Options yanıt başlığıyla clickjacking azaltma
X-Frame-Options yanıt başlığı, bir web sayfasının HTTP yanıtının bir parçası olarak geçirilir ve bir tarayıcının < FRAME > veya < IFRAME > etiketi içinde bir sayfa oluşturmasına izin verilip verilmeyeceğini belirtir.
X-Frame-Options başlığı için izin verilen üç değer vardır:
DENY – herhangi bir alanın bu sayfayı bir çerçeve içinde görüntülemesine izin vermez
SAMEORIGIN – geçerli sayfanın başka bir sayfada bir çerçeve içinde görüntülenmesine izin verir, ancak yalnızca geçerli etki alanı içinde
ALLOW-FROM URI – geçerli sayfanın bir çerçevede, ancak yalnızca belirli bir URI’de görüntülenmesine izin verir örneğin:
Clickjacking’e karşı savunmak için SAMEORIGIN seçeneğini kullanma
X-Frame-Options, içerik yayıncılarının kendi içeriklerinin saldırganlar tarafından görünmez bir çerçevede kullanılmasını engellemesine olanak tanır.
DENY seçeneği, geçerli sayfanın bir çerçevede herhangi bir şekilde kullanılmasını engelleyen en güvenli seçenektir. Daha yaygın olarak SAMEORIGIN, çerçevelerin kullanımına olanak sağladığından, ancak bunları geçerli etki alanıyla sınırladığı için kullanılır.
X-Frame-Options Sınırlamaları
- Bir web sitesinde SAMEORIGIN seçeneğini etkinleştirmek için, X-Frame-Options başlığının her bir sayfa için HTTP yanıtının bir parçası olarak döndürülmesi gerekir (siteler arası uygulanamaz).
- X-Frame-Options, izin verilen alan adlarının beyaz listesini desteklemez, bu nedenle aralarında çerçeveli içerik görüntülemesi gereken çok alanlı sitelerle çalışmaz.
- Tek bir sayfada sadece bir seçenek kullanılabilir, bu nedenle örneğin aynı sayfanın hem mevcut web sitesinde hem de harici bir sitede çerçeve olarak görüntülenmesi mümkün değildir.
- ALLOW-FROM seçeneği tüm tarayıcılar tarafından desteklenmez.
- X-Frame-Options, çoğu tarayıcıda kullanımdan kaldırılmış bir seçenektir.
Clickjacking testi – Siteniz Savunmasız Mı?
Sitenizin tıklama hırsızlığına karşı savunmasız olup olmadığını test etmenin temel bir yolu, bir HTML sayfası oluşturmak ve web sitenizden hassas bir sayfayı bir iframe’e dahil etmeye çalışmaktır.
Test kodunu başka bir web sunucusunda yürütmek önemlidir, çünkü bu, bir tıklama saldırısındaki tipik davranıştır.
OWASP Test Kılavuzunun bir parçası olarak sağlanan aşağıdaki gibi bir kod kullanın:
HTML sayfasını bir tarayıcıda görüntüleyin ve sayfayı aşağıdaki gibi değerlendirin:
- “Web sitesi tıklama hırsızlığına karşı savunmasız” metni görünüyorsa ve bunun altında hassas sayfanızın içeriğini görüyorsanız, sayfa tıklama hırsızlığına karşı savunmasızdır.
- Yalnızca “Web sitesi tıklama hırsızlığına karşı savunmasız” metni görünürse ve hassas sayfanızın içeriğini görmüyorsanız, sayfa en basit tıklama hırsızlığına karşı savunmasız değildir.
Bununla birlikte, sayfada hangi tıklama hırsızlığı önleme yöntemlerinin kullanıldığını ve bunların saldırganlar tarafından atlanıp atlanamayacağını görmek için ek testlere ihtiyaç vardır.