| Missing X-Content-Type-Options Header Açıklığı (CWE-16) | |||||
| Bu makalede Missing X-Content-Type-Options Header (CWE-16), yani Eksik X-Content-Type-Options Başlığı, diğer bir ifadeyle; XSS (Content-Sniffing) Saldırılarına Karşı Koruma Eksikliği açıklığı anlatılacaktır.
Açıklık Önem Derecesi: Düşük Açıklığın Etkisi: Hassas bilgilere yetkisiz erişim, Uzaktan kod çalıştırma Açıklığın Açıklaması: Web tarayıcılar web sunuculardan gelen yanıt paketlerini okurlarken yanıt paketlerindeki Content-Type başlığına bakarlar ve ona göre paket içeriğini okuma / yorumlama ve ekrana sunma uygularlar. Fakat yanıt paketlerinde Content-Type başlığı bozuk değerde olursa veya Content-Type başlığı hiç yer almazsa yanıt paketinin doğru okunabilmesi / yorumlanabilmesi ve ekrana sunulabilmesi amacıyla eski web tarayıcı yazılımları (özellikle Internet Explorer) yanıt paketleri içerisindeki içerik üzerinde Content Sniffing prosedürünü uygularlar. Bu şekilde gelen paket içerisindeki içeriğin MIME türünü saptarlar ve bu bilgi doğrultusunda paketi okuma / yorumlama yapıp istemciye arayüzde sunarlar. Yani yanıt paketinde Content-Type başlığı kullanılmadan uygulama sayfası web tarayıcıda doğru bir şekilde görüntülenebilir olur. Content-Type başlığının bozuk değerde olması veya hiç olmaması / eksik olması eski web tarayıcıların yanıt paketlerini ekrana sunması noktasında Content-Sniffing özelliğinin çalışmasını tetikler. Böylece paket Content-Type bilgisi paketin gövdesindeki veride Content Sniff'leme yapılmak suretiyle elde edilir ve paket okuması / yorumlaması buna göre yapılarak ekrana sunma gerçekleşir.
Bilgi:
Eski IE web tarayıcılar Content-Type yanıt başlığı doğru formatta da olsa her halükarda Content Sniffing yapmaktadırlar ve Content Sniffing ile belirlenen veri türüne göre paket okuması / yorumlaması yapmaktadırlar. Content Sniffing özelliğini bu şekilde kullandıkları için XSS (Content - Sniffing) zafiyetinin sömürülmesi noktasında IE web tarayıcılar öndedirler. Web tarayıcılardaki Content Sniffing özelliği web uygulamalara bir esneklik sunmak amacıyla tasarlanmıştır. Fakat bu aynı zamanda bir güvenlik riski teşkil etmektedir.
Not:
Tarayıcılarda Content Sniff'leme özelliği spesifik anlarda tetiklenir. Bunun için bir http spesifikasyonu vardır. Sonuç olarak eski web tarayıcılardaki Content-Sniffing özelliği XSS saldırılarına imkan tanımaktadır. Eski web tarayıcılarda Content Sniffing yoluyla normalde çalıştırılabilir olmaması gereken unsurların çalıştırılabilir hale geçmesi XSS için elverişli bir yol açar. Örneğin json dosyasındaki xss zararlı girdilerinin çalışması gibi veya txt dosyasındaki xss zararlı girdilerinin çalışması gibi. Açıklığın Önlemi: a) IIS Web Sunucular IIS 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-Content-Type-Options" value="nosniff">
</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-Content-Type-Options "nosniff" 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-Content-Type-Options nosniff; 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()
.contentTypeOptions();
// Eklenecek Kodlar Bitti
}
}
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 X-Content-Type-Options önlemi yer alır duruma gelecektir. Yararlanılan Kaynaklar:
|
|||||
Bu yazı 25.10.2025 tarihinde, saat 08:05:58'de yazılmıştır.
|
|||||
|
|||||
| Yorumlar |
|||||
| Henüz yorum girilmemiştir. | |||||
| Yorum Ekle | |||||
Bu yazı 25.10.2025 tarihinde, saat 08:05:58'de yazılmıştır.