Clickjacking (Tıklama Hırsızlığı) Nedir ve Nasıl Korunulur?
Clickjacking, güvendiğiniz bir siteyi görünmez katman yapıp sizi farkında olmadan bir işlem onaylamaya kandırmaktır. Nasıl çalıştığı, neden tehlikeli olduğu, site sahibinin X-Frame-Options ve CSP frame-ancestors ile korunması ve neden bir yapılandırma eksiği olduğu.
Hızlı cevap: Clickjacking (tıklama hırsızlığı), bir saldırganın sizin güvendiğiniz bir web sitesini görünmez bir katman olarak kendi tuzak sayfasının üstüne yerleştirmesi ve sizi aslında farkında olmadan o gizli sayfada bir işlem yapmaya kandırmasıdır. Bir düğmeye tıkladığınızı sanırsınız ama gerçekte görünmez katmandaki bir onayı (para transferi, izin verme, hesap ayarı değiştirme) tıklamış olursunuz. Saldırı, sitenin bir iframe içinde başka bir sayfaya gömülebilmesinden yararlanır. Korunmanın yolu site sahibinin elindedir ve basittir: sitenizin başka sayfalar içine gömülmesini engelleyen HTTP başlıklarını (X-Frame-Options: DENY ya da Content-Security-Policy frame-ancestors) eklemek. Bu tek yapılandırma, clickjacking saldırılarının neredeyse tamamını durdurur ve pek çok sitede eksiktir.
Bir web sitesine güveniyorsunuz, üzerindeki bir düğmeye tıklıyorsunuz, ama tıkladığınız şey gördüğünüz düğme değil. Clickjacking tam olarak budur: saldırgan, güvendiğiniz siteyi görünmez bir katman haline getirip kendi tuzağının üstüne koyar, siz masum bir şeye tıkladığınızı sanarken aslında gizli katmandaki tehlikeli bir işlemi onaylarsınız. Bu yazı, clickjacking'in nasıl çalıştığını ve bir site sahibi olarak buna karşı sitenizi nasıl koruyacağınızı anlatıyor.
Nasıl çalışır
Clickjacking, tarayıcıların bir web sayfasını başka bir sayfanın içine (iframe ile) gömebilme özelliğinden yararlanır. Saldırgan bir tuzak sayfası hazırlar; bu sayfada, örneğin "Ödülü Kazan" yazan çekici bir düğme vardır. Bu düğmenin tam üstüne, görünmez (saydam) hale getirilmiş bir iframe içinde güvendiğiniz gerçek bir siteyi (bankanız, sosyal medyanız) yerleştirir ve o sitenin tehlikeli bir düğmesini (para gönder, izin ver) tam sizin tıklayacağınız yere hizalar. Siz "Ödülü Kazan"a tıkladığınızı sanırsınız; gerçekte görünmez katmandaki gerçek işlemi onaylarsınız.
Saldırının gücü, her şeyin meşru sitede olup bitmesindedir; siz zaten o siteye giriş yapmışsınızdır, dolayısıyla işlem sizin yetkinizle gerçekleşir.
Neden tehlikeli
| Senaryo | Sonuç |
|---|---|
| Bankacılık onayı | Farkında olmadan para transferi |
| İzin ekranı | Bir uygulamaya yetki verme |
| Sosyal medya | Beğenme, takip, paylaşım (likejacking) |
| Hesap ayarı | E-posta/parola değiştirme onayı |
| Tek tık satın alma | İstemsiz sipariş |
Clickjacking'in sinsiliği, kullanıcının hiçbir hata yapmamasıdır; güvendiği bir siteye tıklar, ama tıklaması çalınır. Bu yüzden savunma kullanıcıda değil, sitenin kendisindedir.
Korunma: site sahibinin sorumluluğu
İyi haber şu: clickjacking'e karşı korunma site sahibinin elindedir ve teknik olarak basittir. Tarayıcıya "bu sayfa başka sayfaların içine gömülemez" demek yeterlidir. Bunu iki HTTP başlığından biriyle yaparsınız:
| Yöntem | Ayar | Etki |
|---|---|---|
| X-Frame-Options | DENY ya da SAMEORIGIN | Sayfanın iframe'e gömülmesini engeller |
| CSP frame-ancestors | 'none' ya da 'self' | Modern, daha esnek eşdeğeri |
Modern yaklaşım, Content-Security-Policy'nin frame-ancestors direktifidir; hangi sitelerin (varsa) sayfanızı gömebileceğini hassas biçimde kontrol eder. Çoğu site için "frame-ancestors 'self'" ya da "'none'" doğru seçimdir. Bu başlıklar, genel HTTP güvenlik başlıkları kümesinin bir parçasıdır; diğerlerini (HSTS, X-Content-Type-Options) SPF, DKIM, DMARC ve e-posta sahteciliği ve genel web güvenliği bağlamında ele aldık.
Bir zafiyet mi, bir yapılandırma eksiği mi
Clickjacking genelde bir kod açığı değil, bir yapılandırma eksiğidir; yani bir şeyi yanlış yapmaktan değil, bir korumayı hiç eklememekten kaynaklanır. Bu yüzden pek çok sızma testinde clickjacking bir bulgu olarak çıkar: site çalışır, güvenli görünür, ama iframe koruması eksiktir. Bu tür eksikler, bir web uygulaması sızma testi sırasında sistematik olarak tespit edilir. Eklenmesi dakikalar sürer ama eklenene kadar site açık bir hedeftir.
KAOS ve DSET yaklaşımı
DSET, kurumların web uygulamalarını clickjacking dahil yapılandırma eksiklerine karşı değerlendirir. Yerel yapay zekâ motorumuz KAOS, bir sitenin HTTP güvenlik başlıklarını tarayarak eksik X-Frame-Options ya da frame-ancestors korumasını tespit eder ve her bulguyu çalışan bir kanıtla, yanlış pozitif olmadan raporlar. Amaç, dakikalar içinde kapatılabilecek bir açığın bir saldırgana fırsat vermeden giderilmesini sağlamaktır.
Sık sorulan sorular
Clickjacking'e karşı kullanıcı olarak ne yapabilirim? Sınırlı bir şey, çünkü savunma esas olarak site sahibindedir. Yine de tarayıcınızı güncel tutmak, tanımadığınız sitelerdeki cazip "kazandınız" düğmelerine dikkatli olmak ve hassas işlemleri (bankacılık) yalnızca doğrudan girdiğiniz resmi sekmede yapmak riski azaltır. Ama asıl koruma, güvendiğiniz sitelerin iframe koruması eklemesiyle sağlanır; bu bir site-sahibi sorumluluğudur.
X-Frame-Options mı CSP frame-ancestors mı kullanmalıyım? İkisi de clickjacking'i engeller ama frame-ancestors daha modern ve esnektir; hangi sitelerin sayfanızı gömebileceğini hassas biçimde kontrol eder ve eski X-Frame-Options'ın yerini alır. En iyi yaklaşım, geniş tarayıcı uyumu için ikisini birlikte kullanmaktır: X-Frame-Options: SAMEORIGIN ve CSP frame-ancestors 'self'. Çoğu site için bu ikisi yeterlidir.
Sitem küçük, clickjacking beni ilgilendirir mi? Evet. Clickjacking, sitenizin boyutuna değil, içinde yapılan işlemlere bağlıdır. Kullanıcıların giriş yaptığı, bir işlem (satın alma, ayar değiştirme, onay) yaptığı her site hedef olabilir. Üstelik korumanın eklenmesi dakikalar sürer ve maliyeti yoktur; bu kadar ucuz ve etkili bir önlemi atlamak için bir neden yoktur.
Kaynaklar
- OWASP clickjacking savunma rehberi: https://owasp.org
- MDN Content-Security-Policy frame-ancestors: https://developer.mozilla.org
- DSET Siber Güvenlik ve Web Uygulama Güvenliği Hizmetleri: https://dset.com.tr/hizmetler
Web uygulamanızı clickjacking ve diğer yapılandırma eksiklerine karşı değerlendirmek için DSET ile iletişime geçin. Ankara Hacettepe Teknokent laboratuvarımızdan web güvenliği danışmanlığı sağlıyoruz.
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.