| Missing X-Frame-Options Header Açıklığı (CWE-1021) | |||||
| Bu makalede Missing X-Frame-Options Header (CWE-1021), yani Eksik X-Frame-Options Başlığı, diğer bir ifadeyle; Clickjacking Saldırılarına Karşı KOruma Eksikliği açıklığı anlatılacaktır.
Açıklık Önem Derecesi: Düşük Açıklığın Etkisi: Kullanıcılara fark ettirmeden istemediği eylemleri gerçekleştirtme Açıklığın Açıklaması: Clickjacking web site ziyaretçilerinin farkına varmadan farklı bir web sayfa öğesine tıklamaları sonucu yaşanan saldırılara denir. Birçok clickjacking saldırı türü vardır. Bunlar arasından çoğu metot olarak html iframe’lerle alakalı sömürü (exploitation) yolunu takip ederler ve bu saldırılara karşı önlemler de sayfa frame’leme üzerine yoğunlaşır. Clickjacking saldırı türlerinden birini ifade edecek olursak örneğin bir saldırganın tıklanabilir bir nesnenin (örn; butonun veya linkin) üzerinde transparan (şeffaf / görünmez) bir iframe koyması bir clickjacking saldırısı türüdür. Bu clickjacking saldırısında sadece tıklanabilir nesne sayfada görünür, fakat bu tıklanabilir nesnenin üzerinde şeffaf / görünmez bir iframe vardır. Dolayısıyla bir kullanıcı tıklanabilir nesneye tıkladığında tıklanabilir nesne yerine üzerindeki şeffaf / görünmez iframe’e tıklamış olur. Böylece kullanıcı istemediği bir eylemi gerçekleştirebilir. Clickjacking için bahsedilen saldırı türüne dair bir senaryo örneği vermek gerekirse örneğin bir ziyaretçi zararlı bir web sitesinde bir formu kapamak için butona tıklamak ister. Ziyaretçi butona tıkladığında butona tıkladığını düşünür, fakat bunun yerine üzerindeki şeffaf iframe’e tıklar ve bir truva atı indirir, veya banka hesabına para transfer eder, veya bilgisayarındaki yerleşik mikrofonunu ve webcam’ini açar. Bu örnek özelinde zararlı web sitesi bilinen bir legal web sitesinin sahte kopyası olabilir. Bu clickjacking saldırısı türünü yapabilmek için saldırgan zararlı web sitesini internette eposta yoluyla veya benzer farklı yollarla paylaşabilir. Daha sonra kullanıcılar sitedeki kapat butonuna tıkladıklarında iframe’e tıklamış olurlar ve böylece saldırganın istediği eylemi gerçekleştirmiş olurlar. Aynı saldırı türüne dair bir başka senaryo örneği vermek gerekirse legal bir web site içerikleri zararlı bir web sitesinde iframe’lenerek kullanılabilir. Örneğin legal Facebook sitesinin like ve share butonları zararlı bir web sitesinde tıklanabilir bir nesnenin üzerine şeffaf olarak konulabilir. Böylece kullanıcılar zararlı web sitesinde tıklanabilir nesneye tıkladıklarında aslında zararlı web sitesindeki içerik için Like veya Share butonlarından birine basmış olurlar. Kullanıcıların bu beğenme veya paylaşma işlemi kullanıcı facebook profillerine yansır, bu şekilde şüpheli içerik yayılabilir. Zararlı web site sahibi like veya share kasarak zararlı web sitesine daha fazla kullanıcı ve potansiyel kurban çekebilir. Bu clickjacking saldırı senaryosunda önceki senaryoya nazaran doğrudan legal bir web sitenin suistimal edilmesi söz konusudur. Clickjacking tek tip bir saldırı değildir. Geniş bir çeşitlilikte atak vektörüne ve tekniğine sahip bir saldırıdır. Genellikle "UI redress" saldırısı (kullanıcı arayüzü yerine koyma saldırısı) olarak adlandırılır. Saldırılar üst üste binen içeriğin kullanımına bağlı olarak genel itibariyle iki kategoriye ayrılabilir. Overlay-based (kaplama bazlı) saldırılar, ki bu en popüleridir, bir de şeffaf / görünmez iframe’lerde sayfaları gömme, ki bu en yaygın kullanılan teknik yaklaşımdır. Overlay-based (kaplama bazlı) clickjacking’de birkaç adet ana kategori mevcuttur.
Legal web uygulama sahipleri web uygulamalarının clickjacking adı verilen saldırılarla suistimal edilmemesi için önlem uyguladıklarında saldırganlar legal web uygulamada kar elde edemezler, legal web uygulamayı zarara uğratamazlar ve legal web uygulamadaki diğer kullanıcıları zarara uğratamazlar. Kısaca web uygulamalarının clickjacking saldırılarında kullanılmasına mani olmuş olurlar. Açıklığın Önlemi: Legal web sitelerini iframe’leyerek kullanan saldırganlara karşı legal web siteleri ve kullanıcıları clickjacking saldırılarından x-frame-options yanıt başlığı ile korunabilirler. Bu güvenlik başlığı genel manasıyla şu şekilde korur: Web tarayıcı ekranlarına yüklenen web sayfalarında kullanılan iframe’ler içeriklerini almak için ilaveten bir web sitesine talep yaparlar. Gelen yanıt paketinde X-Frame-Options başlığı yer alırsa web tarayıcıların iframe’i ekrana yükleyip yüklememesi gelen paketteki X-Frame-Options ayarına göre yapılır. iframe’lerin yaptığı taleplere yanıt olarak gelen paketlerde X-Frame- Options yanıt başlığı istemci tarafta web tarayıcılara direktif verir ve iframe’in içeriğinin web tarayıcı ekranına yüklenip yüklenmeyeceğini belirtir. Aldığı üç farklı konfigürasyonla bunu yapar: DENY, SAMEORIGIN ve ALLOW-FROM. X-Frame-Options ile bu konfigürasyonlardan birini kullanan legal bir web uygulama içeriklerinin iframe’lenerek çeşitli zararlı lokasyonlarda (web uygulamalarda) kullanılması durumlarında içeriklerinin o yerlerde görüntülenmesi sırası geldiğinde web tarayıcı tarafından görüntülenmemesi gerektiğini veya sadece belirli yerlerde görüntülebileceğini kısıt olarak koyabilir. Bu sayede legal web uygulama sahipleri, içeriklerinin keyfi olarak herhangi bir yerde iframe’lenmesini önler ve uygulamalarının clickjacking saldırılarına karşı kullanımını / suistimalini engeller.
- DENY
Bir web uygulama DENY ayarını kullandığında hiçbir adreste (kendi adresi dahil) içeriklerinin iframe olarak sunulmasına izin vermez. x-frame-options: DENY Eğer teşebbüs edilirse içeriğini iframe’e yanıt olarak verdiği zaman X-Frame- Options başlığı da geleceğinden web tarayıcı gelen içeriği yüklemez. Böylece olası üçüncü taraf web siteleri üzerinden veya kendi olası hack’lenmiş web sitesi üzerinden gelebilecek clickjacking saldırılarına karşı web tarayıcılara sayfa yükletmeme ile koruma sağlar. - SAMEORIGIN Bir web uygulama SAMEORIGIN kullandığında sadece kendi adresinde içeriklerinin iframe olarak sunulmasına izin verir. Diğer hiçbir adres altında içeriklerinin iframe olarak sunulmasına izin vermez. x-frame-options: SAMEORIGIN Eğer üçüncü taraf web adreslerde teşebbüs edilirse içeriğini iframe’e yanıt olarak verdiği zaman X-Frame-Options başlığı da geleceğinden web tarayıcı gelen içeriği yüklemez. Böylece olası üçüncü taraf web siteleri üzerinden gelebilecek clickjacking saldırılarına karşı web tarayıcılara sayfalarını yükletmeme ile koruma sağlar. - ALLOW-FROM Bir web uygulama ALLOW-FROM kullandığında belirttiği üçüncü taraf web adresinde içeriklerinin iframe olarak kullanılmasına izin verir. Diğer hiçbir üçüncü taraf adreste ise içeriklerinin iframe olarak sunulmasına izin vermez. x-frame-options: ALLOW-FROM https://www.domain.com Eğer belirtilenin dışındaki üçüncü taraf web adreslerde teşebbüs edilirse içeriğini iframe’e yanıt olarak verdiği zaman X-Frame-Options başlığı da geleceğinden web tarayıcı diğer tanımlanmamış üçüncü taraf web adreslerde gelen içeriği yüklemez. X-Frame-Options DENY, SAMEORIGIN ve ALLOW-FROM değerlerini alır. Bunlar arasından DENY en sağlam konfigürasyondur. SAMEORIGIN ile halen clickjacking saldırısı yapılabilir. Çünkü zafiyetli web uygulamaya sızılabilir ve zafiyetli web uygulamada bir içerik iframe olarak zafiyetli uygulamanın bir başka yerine yansıtılabilir. Örneğin yansıtıldığı yerde iframe opak olacağı için görmeyen kullanıcılar arkasındaki görünen nesneye tıklamak istediklerinde iframe’e tıklayabilirler ve zafiyetli web uygulamada farklı bir eylem gerçekleştirebilirler. SAMEORIGIN bu noktada fayda etmeyecektir ve clickjacking’e bu şekilde kullanıcılar maruz kalabilecektir. Dolayısıyla en garanti çözüm DENY’dir. Fakat eğer web uygulamanın bazı içerikleri iframe olarak yine web uygulamanın farklı yerlerinde kullanılıyorsa en düşük mertebe olarak SAMEORIGIN kullanılabilir. Bu optimal değer ile hem web uygulama çalışırlığı sürdürülmüş olur hem de belli kademe güvenlik sağlanmış olur. Eğer üçüncü taraf bir bilinen web sunucuda web uygulama içeriği iframe olarak kullanılacaksa ALLOW-FROM ile sadece o üçüncü taraf adreslere izin verilebilir ve böylece web uygulama içeriği belirtilen üçüncü taraf web adreslerde iframe olarak kullanılabilir. Yine ALLOW-FROM optimal değeri ile hem web uygulama ve bileşenleri çalışırlığı sürdürülmüş olur hem de belli kademe güvenlik sağlanmış olur. X-Frame-Options aldığı üç ayar ile clickjacking’e karşı belli kademelerde güvenlik sağlar.
[*] Bilgi:
Legal web siteler hack’lenirlerse (ele geçirilirlerse) clickjacking saldırısı yapan iframe’ler legal web sitelere de yerleştirilebilir. Bu durumda X-Frame-Options legal web sitelerini hem aynı originden (adresten) hem de farklı originlerden (web adreslerden) gelecek clickjacking saldırılarına karşı koruyacak şekilde yapılandırılabilir. X-Frame-Options: DENY bu işe yarar. [!] Uyarı: X-Frame-Options’da ALLOW-FROM direktifi artık modern web tarayıcılarda çalışmamaktadır. Sadece DENY ve SAMEORIGIN direktifleri çalışmaktadır. Bu nedenle ALLOW-FROM kullanıldığında dikkatli olunmalıdır. Diğer türlü X-Frame-Options güvenlik önlemi bazı web tarayıcılarda beklenen korumayı gerçekleştirmeyebilir. Bu durum için X-Frame-Options başlığı Content-Security-Policy başlığı ile birlikte kullanılabilir. Content-Security-Policy ile de clickjacking güvenliği sağlanabilmektedir. Clickjacking saldırılarından kurum web uygulama kullanıcılarını ve kurum web uygulamayı korumak için bir http güvenlik başlığı olan X-Frame-Options yanıt başlığı kullanılmalıdır: a) IIS Web Sunucular IIS web sunucularda konfigürasyon dosyası Web.config açılmalıdır ve httpprotocol etiketi içerisindeki customheaders etiketi içerisine gösterilen satır eklenmelidir.
<!-- GÜVENLİ YAPILANDIRMA -->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
...
</security>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="DENY">
</add>
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
b) Apache Web Sunucular Debian / Ubuntu tabanlı linux işletim sistemlerinde yer alan apache web sunucularda apache2.conf, RedHat / Centos tabanlı linux işletim sistemlerinde yer alan apache web sunucularda httpd.conf dosyası açılmalıdır ve dosya içeriğinin en altına belirtilen satır eklenmelidir. Header set X-Frame-Options "DENY" c) Nginx Web Sunucular Nginx web sunucularda nginx.conf konfigürasyon dosyası açılmalıdır ve dosya içeriğindeki http { ... } bloğu içerisine belirtilen satır eklenmelidir add_header X-Frame-Options "DENY"; d) Tomcat v.b. Java Web Sunucular Tomcat gibi hafif java uygulamalarını taşıyabilen servlet container'larda ya da GlashFish, JBoss, WebLogic gibi kompleks java uygulamalarını taşıyabilen servlet container'larda spring framework'ünü kullanan web uygulamalarının src/main/java/hello/ dizininde WebSecurityConfig.java adlı bir dosyasısı bulunur. Bu java dosyasında gösterilen java kod bloğuna "Eklenecek Kodlar Başlıyor" yorum satırı ile "Eklenecek Kodlar Bitti" yorum satırı arasındaki satırlar eklenmelidir:
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// Eklenecek Kodlar Başlıyor
http
.headers()
.frameOptions().deny(); // veya örn; sameOrigin();
// Eklenecek Kodlar Bitti
}
}
[!] Uyarı:
X-Frame-Options başlığı SAMEORIGIN değerini aldığı durumda kurum web uygulamasındaki sayfaları / içerikleri sunan iframe'ler sadece yine kurum web uygulamasında gösteriliyorsa çalışır durumda olacaktır. Kurum web uygulamasındaki sayfaları / içerikleri sunan iframe'ler dışarıdan bir web uygulaması tarafından içerik olarak sunulmaya çalışılırsa dışardaki bu web uygulamasının kurum web uygulamasına ait sayfaları / içerikleri sunması engellenecektir. Eğer belirli web uygulamalarının kurum web uygulaması sayfalarını / içeriklerini iframe olarak sunabilmesine izin vermek istenirse (örn; farklı bir kurum web uygulamasına) X-Frame-Options başlığı farklı web sunucular için belirtilen satırlardaki gibi kullanılmalıdır. IIS web sunucular;
<!-- GÜVENLİ YAPILANDIRMA -->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
...
</security>
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="ALLOW-FROM https://www.kurumwebuygulamasi2.com">
</add>
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Apache web sunucular Header set X-Frame-Options "ALLOW-FROM https://www.kurumwebuygulamasi2.com" Nginx web sunucular; add_header X-Frame-Options "ALLOW-FROM https://www.kurumwebuygulamasi2.com"; Sonuç En nihayetinde yapılandırma dosyasında yapılan değişiklik sonrası web sunucusu yazılımı yeniden başlatılmalıdır. Böylelikle kullanıcıların gönderdiği http / https taleplerine karşılık web sunucudan dönen http / https yanıtlarında Referrer-Policy önlemi yer alır duruma gelecektir. Yararlanılan Kaynaklar:
|
|||||
Bu yazı 25.10.2025 tarihinde, saat 08:18:13'de yazılmıştır.
|
|||||
|
|||||
| Yorumlar |
|||||
| Henüz yorum girilmemiştir. | |||||
| Yorum Ekle | |||||
Bu yazı 25.10.2025 tarihinde, saat 08:18:13'de yazılmıştır.