SSL Sertifika Analizi Açık Port Tespiti Web Uygulama Tarama DNS Güvenlik Denetimi HTTP Başlık Analizi Yanlış Yapılandırma Tespiti Yazılım Parmak İzi Alt Alan Adı Tarama
SSL Sertifika Analizi Açık Port Tespiti Web Uygulama Tarama DNS Güvenlik Denetimi HTTP Başlık Analizi Yanlış Yapılandırma Tespiti Yazılım Parmak İzi Alt Alan Adı Tarama

Tüm Kayıtlar

Kategori Güvenlik Yanlış Yapılandırması / Eksik Güvenlik Başlığı
Tipik Önem Derecesi Düşük
OWASP A05:2021 – Güvenlik Yanlış Yapılandırması
CWE CWE-693: Koruma Mekanizması Başarısızlığı
Diğer adları MIME türü koklama, İçerik türü koklama, nosniff başlığı eksikliği
Etkilenen sistemler X-Content-Type-Options başlığı olmadan HTTP yanıtı sunan her web sunucusu veya uygulama
İlgili standart Fetch Living Standard (WHATWG), RFC 9110

Genel Bakış

X-Content-Type-Options HTTP yanıt başlığı, tarayıcılara MIME türü koklama işlemi yapmamaları talimatını verir. MIME türü koklama; tarayıcının bildirilen Content-Type başlığına güvenmek yerine yanıt içeriğini inceleyerek türü tahmin etme pratiğidir. Bu başlık mevcut olmadığında veya nosniff değerine ayarlanmadığında, bazı tarayıcılar sunucunun bildirdiği içerik türünü geçersiz kılarak yanıtı farklı ve potansiyel olarak çalıştırılabilir bir tür olarak yorumlayabilir. Bu başlık, WHATWG Fetch Living Standard kapsamında tanımlanmıştır ve tüm büyük modern tarayıcılar tarafından desteklenmektedir.

Sensagraph, taranan tüm HTTP yanıtlarında bu başlığın eksikliğini otomatik olarak tespit eder.

Nasıl çalışır?

MIME koklama, yanlış yapılandırılmış veya eksik Content-Type başlığına sahip sunucuları ele almak için tanıtılmış bir tarayıcı sezgisel yöntemidir. Tarayıcı, bildirilen türe kesinlikle güvenmek yerine yanıt gövdesinin ilk birkaç baytını ("sihirli baytlar") okur ve gerçek içerik türünü belirlemeye çalışır. Bu yaklaşım uyumluluğu artırsa da güvenlik riski oluşturur:

  • Komut dosyası olmayan kaynaklardan betik çalıştırma: Bir saldırgan JavaScript içeren bir dosyayı (örneğin bir resim veya CSV) yükleyebilirse ve sunucu bunu betik dışı bir MIME türüyle sunuyorsa, bazı tarayıcılar nosniff koruması olmadan bunu <script> etiketi içinde başvurulduğunda betik olarak çalıştırabilir.
  • Siteler arası betik çalıştırma (XSS) kolaylaştırma: nosniff olmayan eski tarayıcı sürümlerinde, HTML/JS içeren bir JSON veya metin kaynağı HTML olarak oluşturularak XSS saldırılarına zemin hazırlayabilir.
  • Stil sayfası enjeksiyonu: Benzer biçimde, düz metin olarak sunulan kaynaklar CSS olarak yorumlanabilir ve CSS tabanlı veri sızdırma veya arayüz değiştirme (UI redressing) saldırılarına olanak tanıyabilir.
  • Saldırı ön koşulları: Suistimal genellikle kullanıcı denetimindeki içeriğin (dosya yükleme, enjeksiyon noktası) istismar edilebilir bir bağlamda içeriği dahil eden bir sayfaya ulaşmasını ya da çapraz kaynaklı okumaya izin veren bir CORS yanlış yapılandırmasını gerektirir.

X-Content-Type-Options: nosniff başlığı mevcut olduğunda, bunu destekleyen tarayıcılar (Chrome, Firefox, Edge, Safari 16+), MIME türünün kaynak bağlamı için beklenen türle eşleşmediği durumlarda istekleri engeller (örneğin, text/plain ile sunulan bir yanıtın betik olarak yüklenmesini engeller).

İş etkisi

Tek başına değerlendirildiğinde, eksik başlık düşük önem dereceli bir bulgudur. Ancak aşağıdaki yollarla daha yüksek önem dereceli saldırı zincirlerine katkıda bulunabilir:

  • Siteler arası betik çalıştırma (XSS): İçerik koklama, kullanıcı denetimindeki yüklemeler veya enjeksiyon noktalarıyla zincirlenebilir ve kurbanın tarayıcısında rastgele JavaScript çalıştırılmasına, oturum ele geçirme, kimlik bilgisi hırsızlığı veya yetkisiz eylemlere yol açabilir.
  • Veri sızdırma: Koklanan stil sayfaları aracılığıyla yapılan CSS enjeksiyonu, hassas sayfa içeriğini karakter karakter sızdırmak için kullanılabilir.
  • Uyumluluk riski: PCI DSS, HIPAA ve ISO 27001 güvenlik incelemeleri, eksik güvenlik başlıklarını yaygın olarak işaretler. nosniff eksikliği denetim bulgularında yer alabilir.
  • İtibar ve güven: Güvenlik tarayıcıları ve tarayıcı geliştirici araçları bu eksikliği açıkça işaretler; bu durum güvenlik bilincine sahip kullanıcılar ve iş ortakları arasındaki güveni zedeleyebilir.

Nasıl düzeltilir?

  1. Başlığı genel olarak ekleyin: Web sunucunuzu, CDN'inizi veya uygulama çerçevenizi tüm HTTP yanıtlarına X-Content-Type-Options: nosniff ekleyecek şekilde yapılandırın. Bu, spesifikasyon tarafından tanımlanan tek geçerli değerdir.
  2. Apache: httpd.conf veya .htaccess dosyanıza Header always set X-Content-Type-Options "nosniff" satırını ekleyin (mod_headers gerektirir).
  3. Nginx: server veya location bloğunuza add_header X-Content-Type-Options "nosniff" always; satırını ekleyin.
  4. IIS: IIS Yöneticisi veya web.config aracılığıyla X-Content-Type-Options adlı ve nosniff değerli özel bir HTTP yanıt başlığı ekleyin.
  5. Uygulama çerçeveleri: Express.js'de helmet ara yazılımını (helmet.noSniff()) kullanın. Django'da SECURE_CONTENT_TYPE_NOSNIFF = True ayarlayın. ASP.NET Core'da NWebSec paketinden app.UseXContentTypeOptions() kullanın veya yanıt ardışık düzeninde yapılandırın.
  6. Doğru MIME türleri sunun: Başlıktan bağımsız olarak, tüm kaynakların doğru Content-Type değerleriyle sunulduğundan emin olun. Bu, tarayıcının koklama motivasyonunu azaltır ve genel doğruluğu artırır.
  7. Dağıtımı doğrulayın: Düzeltmeyi uyguladıktan sonra, tarayıcı geliştirici araçlarını veya curl -I https://alanadi.com gibi bir aracı kullanarak HTTP yanıt başlıklarını inceleyin ve hata sayfaları ile API uç noktaları dahil tüm ilgili yanıtlarda başlığın mevcut olduğunu doğrulayın.

Referanslar

Sıkça sorulan sorular

X-Content-Type-Options, tek geçerli değeri nosniff olan bir HTTP yanıt başlığıdır. Ayarlandığında, destekleyen tarayıcılara bildirilen Content-Type başlığına kesinlikle uymalarını ve yanıt gövdesi içeriğinden MIME türünü çıkarmaya çalışmamalarını talimat verir. Bu sayede tarayıcılar, örneğin text/plain bir yanıtı çalıştırılabilir JavaScript olarak işleyemez.

Tek başına değerlendirildiğinde bu genellikle düşük önem dereceli bir bulgudur. Ancak kullanıcı denetimindeki içerik yüklemeleri veya enjeksiyon açıklarıyla birleştiğinde, siteler arası betik çalıştırma (XSS) veya CSS tabanlı veri sızdırmaya olanak tanıyan daha yüksek önem dereceli saldırı zincirlerine katkıda bulunabilir.

Evet, nosniff yönergesi JSON, XML veya ikili veri döndüren API uç noktaları dahil tüm HTTP yanıtlarına uygulanmalıdır. Bu başlık olmadan, yanıt gövdesini etkileyebilen bir saldırgan, yanıtın bir tarayıcı tarafından yüklendiği bağlamlarda koklama işlemini istismar edebilir.

Chrome, Firefox, Edge ve Safari (sürüm 16 itibarıyla) dahil tüm büyük modern tarayıcılar bu başlığı destekler. Internet Explorer 8 ve sonrası da bu başlığı desteklemiş olup bu başlık, en erken benimsenen güvenlik başlıklarından biridir.

Hayır. WHATWG Fetch spesifikasyonu, bu başlık için tek geçerli değer olarak nosniff'i tanımlar. Diğer değerler tarayıcılar tarafından yok sayılır ve başlığın koruyucu etkisi olmaz.

Sunucunuz zaten kaynakları yanlış MIME türleriyle sunuyorsa ve tarayıcılar bunu daha önce koklama yoluyla düzeltiyorsa sorun yaşanabilir. Örneğin, bir JavaScript dosyası yanlışlıkla text/plain olarak sunuluyorsa, nosniff ayarlandığında tarayıcılar onu çalıştırmayı reddeder. Doğru çözüm, nosniff ile birlikte tüm kaynakların doğru Content-Type değerleriyle sunulmasını da sağlamaktır.