Iframe Güvenlik Açıkları ve BulutPress® Tarafından Uygulanan Çözümler

BulutPress® içerik yönetim sisteminin birinci önceliği güvenliktir. Hem ziyaretçilerin hem de sunucunun veri güvenliğini sağlama aldıktan sonra, kullanıcı deneyimi, hız, mobil uyumluluk, arama motoru optimizasyonu, görsel estetik gibi konulara önem veririz.

Bir web sitesinde güvenlik açığı oluşturan unsurlardan bir tanesi de Iframe kullanımıdır. BulutPress® ile oluşturulmuş web siteleri, aldığımız önlemler (örneğin: x-frame-options, html sanitizasyon, redirect kısıtlaması v.b.) neticesinde başka bir web sitesinin içinde Iframe olarak kullanılamaz. Ancak BulutPress® ile oluşturduğunuz web sitelerinin içine iframe ekleyebiliirsiniz.

iframe, web geliştirmede, bugün bile kullanılan en eski ve basit içerik yerleştirme (gömme, embed) tekniklerinden biridir. Ancak bunları pratikte kullanmak, saldırganlara kapı açabilecek çeşitli güvenlik risklerini de beraberinde getirmektedir.

Bu yazıda, iframe'leri kullanmadan önce bilmeniz gereken en bariz güvenlik tehditlerine bir göz atalım.

teklikeli iframe güvenlik açıkları

1. iframe Enjeksiyonu

iframe enjeksiyonu, çok yaygın bir siteler arası komut dosyası çalıştırma saldırısıdır. Bu kavram ingilizce olarak "cross-site scripting attack" olarak bilinmektedir.

iframe'ler, web sayfalarında HTML belgelerini görüntülemek ve kullanıcıları farklı web adreslerine yönlendirmek için birden çok etiket kullanır. Bu davranış, 3. tarafların uygulamanıza kötü amaçlı çalıştırılabilir (exe) dosyalar, virüsler veya solucanlar (worms) eklemesine ve bunları kullanıcının cihazlarında yürütmesine yani çalıştırmasına olanak tanır.

Web sunucunuzun gönderdiği HTML'yi tarayarak iframe enjeksiyonlarını bulabiliriz. Tek yapmanız gereken tarayıcınızda bir sayfa açmak ve ardından HTML'yi görmek için "kaynağı görüntüle" özelliğini etkinleştirmek. Bu iframe'ler tipik olarak ham IP adreslerini gösterdiğinden, alan adları yerine <iframe> etiketlerini arayın.

Örneğin, aşağıdaki kodu alalım:

iframe enjeksiyonu örnek kodları

Bu anlaşılmaz görünen kodlar JavaScript decoding (kod çözme) fonksiyonu ile incelendiğinde şöyle görünecektir:

javascript decoding edilmiş iframe injection örneği

Kodları çözüp (decode edip) bakmamıza rağmen, yine, saldırganın ilk satırda "wp / GPL" terimlerini ve dil türünü “Javascript” olarak kullandığı için sorun yokmuş gibi görünüyor. Ancak, rakamlar ve harfler HEX gibi görünüyor. Daha sonra, şifresini çözmek için bir hex kod çözücü (hex decoder ) kullanırsak, nihai çıktı aşağıdaki gibi görünecektir.

web sitenizde kaçınmanız gereken iframe injection yapısı

Öyleyse, HTML'nizde bir iframe bulduğunuzu ve bunun sizin tarafınızdan konmamış bir şey olduğunu anladığınızı varsayalım. Bu durumda, onu araştırmak ve mümkün olan en kısa sürede web sitesinden veya veritabanından kaldırmak önemlidir.

Iframe enjeksiyonu güvenlik açığından kaçınmaya ve korunmaya yönelik olarak BulutPress® oldukça gelişmiş önlemler almaktadır. Örneğin saldırganların eklediği içeriklerden, çalıştırılabilir tüm JavaScript kodları otomatik olarak kaldırılır. JavaScript kullanmadan, doğrudan Iframe eklenebilmesi için izin verilen Youtube, Vimeo, Dailymotion gibi siteler özellikle beyaz listeye alınmıştır. Bu siteler dışında kalan iframe'leri, sayfa içeriğine ekleyebilmek için de, BulutPress® modülleri içinde bulunan iframe modülü kullanılmak zorundadır. Bu sayede saldırganın sizin haberiniz olmadan sayfanıza iframe kodu eklemesi mümkün değildir.

2. Çapraz Çerçeve Komut Dosyası (Cross Frame Scriptting)

Cross-Frame Scripting (XFS), kullanıcılardan veri çalmak için iframe'leri kötü amaçlı JavaScript ile birleştirir.

XFS saldırganları, bir kullanıcıyı saldırgan tarafından düzenlenen bir web sayfasını ziyaret etmeye ikna eder ve meşru bir siteye atıfta bulunan kötü amaçlı JavaScript ile birleştirilmiş bir iframe yükler. Kötü amaçlı JavaScript kodu, iframe içindeki meşru siteye kimlik bilgilerini ekledikten sonra kullanıcının tuş vuruşlarını (keystrokes) takip eder.

Buna en basit şekliyle, bir web sitesi içinde ekranı tam kaplayan başka bir web sitesini göstermek diyebiliriz. Alan adına baktığınızda normalsite.com adresini görürken aslında iframe ile zararlisite.com adresini yüklemiş olursunuz. Ancak ziyaretçi bu durumun farkında olmaz.

Peki XFS Saldırısını Engellemek İçin Çözüm Nedir?

XFS saldırıları, Web sunucusu yapılandırmasına Content-Security-Policy: frame-ataları ve X-Frame-Options başlıkları dahil edilerek önlenebilir. BulutPress® içerik yönetim sistemi ile oluşturacağınız tüm web sitelerinde X-Frame-Options başlıkları otomatik olarak yer almaktadır. Bu sayede web siteniz, başka bir alan adı (domain) içinde bir iframe-site olarak görüntülenemez.

3. Tıklama Hırsızlığı (Clickjacking)

Clickjacking saldırısı, bir kullanıcının gizli bir web sayfası öğesini tıklaması için kandırılmasıdır. Sonuç olarak, kullanıcılar istemeden kötü amaçlı yazılım indirebilir, kötü amaçlı web sayfalarına erişebilir, şifreler veya hassas veriler sunabilir, para transfer edebilir veya bu nedenle çevrimiçi alışveriş yapabilir.

Saldırganlar tipik olarak, kullanıcının sayfasının üstündeki bir iframe içine görünmez bir sayfa veya HTML öğesi yerleştirerek tıklama gerçekleştirir. Kullanıcılar görünen sayfayı tıkladıklarını düşünürler, ancak üstüne yerleştirilmiş ek sayfada gizli bir öğeye tıklarlar.

Eğer web sitenizi BulutPress® ile Oluşturmadıysanız Kendinizi Tıklama Hırsızlığından Korumak İçin İki Ana Strateji Vardır:

  1. İstemci tarafı yöntemler, en yaygın olan Çerçeve Bozma'yı (Frame Busting) içerir. Ancak İstemci tarafı yöntemler en iyi çözüm değildir çünkü bunlar basitçe göz ardı edilebilir ve ziyaretçi uzmanlığı gerektirir.
  2. X-Frame-Options, en popüler sunucu tarafı yöntemidir. Güvenlik uzmanları, tıklama hırsızlığını önlemenin iyi bir yolu olarak sunucu tarafı yöntemleri şiddetle önermektedir.

BulutPress® yazılım altyapısı web sitenize eklenme olasılığı bulunan clickjacking yani tıklama hırsızlığından korumak için sunucu taraflı X-Frame-Options başlıklarına ek olarak, web sitesine eklenen tüm içeriklerin modern filtreleme yöntemlerinden geçirilmesi yani HTML Sanitizasyon işlemlerini otomatik olarak uygular. Html sanitizasyon wikipedia sayfasından detaylı bilgi edinebilirsiniz.

4. Iframe Kimlik Avı (Iframe Pishing)

Sosyal ağ platformlarını düşünürsek, kullanıcıların ve geliştiricilerin üçüncü taraf web sayfalarını hayran sayfalarına ve iframe kullanan diğer uygulamalara dahil etmelerine olanak tanır.

Saldırganlar genellikle bu birleşik iframe'leri kimlik avı saldırıları için kullanarak bu özellikten yararlanır.

Varsayılan olarak, bir iframe'deki içerik, üst düzey gezinmeyi tetikleyebilir. Bu nedenle, bir saldırgan, kullanıcıyı bir kimlik avı web sitesine yönlendirmek için kimlik avı kodunu bir iframe olarak eklemek için bir web uygulamasında siteler arası komut dosyası çalıştırma (XSS) güvenlik açığından yararlanabilir.

Bir iframe kullanarak gömülü bir kimlik avı sitesi olduğunu düşünelim. Kullanıcı oraya yönlendirilecek ve kullanıcı adres çubuğuna dikkat etmezse, saldırgan, alışkın olduğu sitenin oturum açma ekranına benzer bir sayfa göstererek kullanıcının kimlik bilgilerini kolayca elde edecektir.

iframe kimlik avı saldırganları URL çubuğunu taklit edemez, ancak bir yönlendirmeye (redirect) neden olabilir ve ardından kullanıcıların bundan sonra algıladığı tüm içeriği değiştirebilir.

BulutPress® İçerik Yönetim Sisteminin İframe Kimlik Avı Yöntemine Bulduğu Çözüm Şöyledir

BulutPress® içinde sayfa yönlendirmesi, yalnızca BulutPress® tarafından geliştirilen url yönlendirme servisi ile yapılabilir. Bu yönlendirme de sadece mevcut alan adının içinde bulunan sayfalarda gerçekleşebilir. Saldırgan, HTML Sanitizasyon uygulamamız sayesinde JavaScript ve diğer yöntemler ile bir sayfa içine yönlendirme kodları ekleyemez.

Son Düşünceler

iframe'ler, kullanıcılarınızı daha fazla etkileşimde tutmak için harika bir seçenektir. Ancak, bir iframe kullandığınızda, üzerinde kontrolünüz olmayan üçüncü taraf bir kaynaktan gelen içeriği çalıştırmış oluyorsunuz. Sonuç olarak, iframe'ler genellikle uygulamalar için güvenlik tehditleri oluşturur.

Ancak güvenlik tehditleri nedeniyle iframe kullanmayı bırakamıyoruz. Bunların farkında olmamız ve uygulamaları güvence altına almak için önleyici tedbirler almamız gerekiyor. Bunun gibi ve burada belirttiğimizden çok daha fazla güvenlik önlemini BulutPress® uzman mühendislik ekibi sizin yerinize uygulamakta ve gelişmeleri yakından takip ederek yazılıma düzenli olarak eklemektedir.

kontrol dışı iframe kodları eklenemez