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ı / Bilgi İfşası
Tipik Ciddiyet Orta
OWASP A05:2021 – Güvenlik Yanlış Yapılandırması
CWE CWE-200 – Yetkisiz Bir Aktöre Hassas Bilginin İfşası
Diğer Adları Banner Grabbing, Sürüm İfşası, Parmak İzi Alma, Yazılım Numaralandırma
Etkilenen Sistemler Web sunucuları (Apache, Nginx, IIS), uygulama çerçeveleri (PHP, ASP.NET, Express), ters proxy'ler, yük dengeleyiciler, CMS platformları
Yaygın Konumlar HTTP yanıt başlıkları (Server, X-Powered-By, X-AspNet-Version), HTML yorumları, hata sayfaları, generator meta etiketleri

Genel Bakış

Sunucu ve yazılım sürüm bilgisi ifşası; bir web uygulamasının veya barındırma altyapısının, web sunucusu, programlama dili çalışma zamanı, uygulama çerçevesi ya da işletim sistemi gibi temel teknolojilerin adlarını ve tam sürüm numaralarını HTTP yanıt başlıklarında, hata sayfalarında, HTML kaynağında veya gözlemlenebilir diğer çıktılarda açığa çıkarması durumunda ortaya çıkar. Bu bilgi başlı başına doğrudan istismar edilebilecek bir güvenlik açığı olmasa da, bir saldırganın uygulanabilir CVE'leri belirlemesini ve hedefli bir saldırı düzenlemesini önemli ölçüde kolaylaştırır. Bu sorun CWE-200 kapsamında sınıflandırılır ve OWASP A05:2021 – Güvenlik Yanlış Yapılandırması ile eşleşir.

Nasıl Çalışır?

Saldırganlar, istismar girişiminden önce rutin olarak pasif veya aktif keşif yaparak teknoloji parmak izleri toplar. Sürüm bilgisi çeşitli kanallar aracılığıyla ifşa edilebilir:

  • HTTP Server başlığı: Apache ve Nginx gibi web sunucuları varsayılan olarak Server başlığı yayar (örn. Server: Apache/2.4.54 (Ubuntu)). Bu başlık sunucu ürününü, tam sürümü ve zaman zaman ana işletim sistemini açığa çıkarır.
  • HTTP X-Powered-By başlığı: Uygulama çerçeveleri genellikle bu başlığı ekler (örn. X-Powered-By: PHP/8.1.12 veya X-Powered-By: ASP.NET); bu da çalışma zamanını ve sürümünü ifşa eder.
  • HTTP X-AspNet-Version / X-AspNetMvc-Version başlıkları: ASP.NET uygulamaları bu başlıkları yayarak tam .NET ve MVC çerçeve sürümlerini açığa çıkarabilir.
  • Hata ve istisna sayfaları: Varsayılan veya ayrıntılı hata sayfaları (yığın izleri, çerçeve markalı 404/500 sayfaları) genellikle teknoloji adlarını, kütüphane sürümlerini ve dosya yollarını içerir.
  • HTML meta etiketleri ve yorumlar: WordPress gibi CMS platformları sürüm bilgisini <meta name="generator"> etiketlerine gömer; geliştiriciler zaman zaman HTML yorumlarına sürüm numaraları bırakır.
  • Statik kaynak yolları: JavaScript/CSS URL'lerindeki sürümlü dizinler veya dosya adları (örn. /wp-includes/js/jquery/jquery-3.6.0.min.js) bileşen sürümlerini açığa çıkarabilir.
  • Çerez özellikleri: PHPSESSID veya ASP.NET_SessionId gibi çerezler, sürüm numarası olmadan bile altta yatan çalışma zamanını tanımlar.

Saldırgan tam bileşen sürümlerini öğrendikten sonra, eşleşen sürüm aralıklarına sahip bilinen ve çoğunlukla silahlandırılmış CVE'leri belirlemek için kamuya açık güvenlik açığı veritabanlarını (NVD, Exploit-DB) çapraz referans olarak kullanabilir ve herhangi bir tahmin yürütmeden doğrudan istismara geçebilir.

İş Etkisi

Sürüm ifşası tek başına saldırgana sistemlere veya verilere erişim sağlamaz. Ancak ardından gelebilecek saldırıların önündeki engeli önemli ölçüde düşürür:

  • Hızlandırılmış istismar: Sürüm doğrulandıktan sonra, hazır exploit kodu bulunan kamuya açık CVE'ler anında uygulanabilir; bu durum saatler sürebilecek keşifi dakikalara indirir.
  • Hedefli güvenlik açığı taraması: Saldırganlar otomatik taramalarını yalnızca ifşa edilen yığınla ilgili exploit'lere daraltarak sinyal-gürültü oranını artırabilir ve bazı tespit sistemlerinden kaçınabilir.
  • Tedarik zinciri ve bileşen riski: JavaScript veya CMS bileşenlerindeki açık kütüphane sürümleri, saldırganların üçüncü taraf bağımlılık güvenlik açıklarını (örn. XSS kusurları bilinen eski bir jQuery sürümü) tespit etmesine olanak tanır.
  • Uyumluluk sonuçları: PCI DSS Gereksinim 6.3 ve bilgi sınıflandırmasına ilişkin ISO/IEC 27001 kontrolleri, sistem iç bilgileri güvenilmeyen taraflara gereksiz yere açıldığında ihlal edilmiş olabilir.
  • İtibar riski: Güvenlik denetçileri ve sızma test uzmanları raporlarda rutin olarak sürüm ifşasını işaretler; kamuya açık hata ödülü programlarındaki bulgular olumsuz ilgi çekebilir.

Nasıl Düzeltilir?

  1. Server başlığını gizleme (Apache): httpd.conf veya ilgili sanal ana bilgisayar yapılandırmasında ServerTokens Prod ve ServerSignature Off ayarlarını yapın. Bu, başlık değerini sürüm veya işletim sistemi ayrıntısı içermeyen yalnızca Apache olarak sınırlar.
  2. Server başlığını gizleme (Nginx): nginx.conf dosyasındaki http, server veya location bloğuna server_tokens off; ekleyin.
  3. X-Powered-By başlığını kaldırma (PHP): php.ini dosyasında expose_php = Off ayarını yapın. Bu hem X-Powered-By: PHP/x.y.z başlığını hem de hata çıktısındaki PHP sürüm dizelerini önler.
  4. X-Powered-By başlığını kaldırma (Node.js / Express): app.disable('x-powered-by') çağrısı yapın veya bu başlığı otomatik olarak kaldıran helmet ara yazılımını kullanın.
  5. ASP.NET sürüm başlıklarını kaldırma (IIS): Web.config dosyasına <httpRuntime enableVersionHeader="false" /> ekleyin ve Server başlığını kaldırmak için URL Rewrite veya özel HTTP modülleri kullanın.
  6. Özel hata sayfaları yapılandırma: Varsayılan çerçeve veya sunucu hata sayfalarını, teknoloji yığını ayrıntıları, yığın izleri veya dosya yolları içermeyen genel, uygulamaya özel sayfalarla değiştirin.
  7. HTML çıktısını denetleme: CMS temalarından <meta name="generator"> etiketlerini kaldırın (veya bunu yapan bir eklenti kullanın), statik kaynak URL'lerindeki sürüm numaralarını önbellek-bozucu hash'lerle değiştirin ve şablonlardaki sürüm açıklayan HTML yorumlarını temizleyin.
  8. Derinlemesine savunma uygulama: Başlık gizlemenin yanı sıra tüm sunucu yazılımlarını ve bağımlılıklarını güncel desteklenen sürümlerde tutun. Sürüm gizleme keşif değerini azaltır ancak yamalanmamış yazılımlardaki güvenlik açığını ortadan kaldırmaz.
  9. CDN ve ters proxy katmanlarını gözden geçirme: Yük dengeleyicilerin, WAF'ların ve CDN uç düğümlerinin, kaynak sunucunun gizlemek üzere yapılandırıldığı sürüm başlıklarını yeniden eklememesini sağlayın.
  10. Güvenlik testine dahil etme: Sürüm açıklayan başlıklar ve hata sayfaları için otomatik kontrolleri CI/CD pipeline'larına ve periyodik güvenlik değerlendirmelerine ekleyin. Sensagraph, HTTP başlıklarındaki, hata sayfalarındaki ve HTML meta verilerindeki sürüm ifşasını otomatik olarak algılar.

Referanslar

Sıkça sorulan sorular

Sürüm ifşası, doğrudan istismar edilebilir bir güvenlik açığı değil, bir bilgi ifşası zayıflığı (CWE-200) olarak sınıflandırılır. Tek başına saldırgana erişim sağlamaz, ancak ifşa edilen yazılım sürümlerindeki gerçek güvenlik açıklarını tespit etmek ve istismar etmek için gereken keşif çabasını önemli ölçüde azaltır.

En yaygın başlıklar şunlardır: Server (örn. Apache/2.4.54), X-Powered-By (örn. PHP/8.1.12 veya ASP.NET) ile X-AspNet-Version / X-AspNetMvc-Version. Bu başlıkların her biri pek çok web sunucusu ve çerçeve yapılandırmasında varsayılan olarak yayılır ve açıkça gizlenmeleri gerekir.

Hayır. Sürüm bilgisini gizlemek, yama uygulamanın yerini tutmayan bir keşif azaltma önlemidir. Saldırganlar, açık sürüm dizeleri olmadan bile davranışsal farklılıklar aracılığıyla yazılımı bazen parmak iziyle tespit edebilir. Temel savunma yazılımı güncel tutmaktır; başlık gizleme tamamlayıcı bir sertleştirme adımıdır.

WordPress ve benzer CMS platformları genellikle oluşturucu sürümünü bir HTML meta etiketine gömer (<meta name="generator" content="WordPress 6.4">) ve /wp-includes/js/jquery/jquery-3.6.0.min.js gibi statik kaynak URL'lerinde sürüm numaralarını açığa çıkarır. Bu bilgiler tema ayarları, güvenlik eklentileri veya derleme zamanı dönüşümleri aracılığıyla kaldırılmalı ya da gizlenmelidir.

Sensagraph; HTTP yanıt başlıklarını, HTML kaynağını ve hata sayfası içeriğini otomatik olarak analiz ederek web sunucuları, çerçeveler, CMS platformları ve JavaScript kütüphaneleri genelinde teknoloji adlarını ve sürüm dizelerini tespit eder; kimlik doğrulaması yapılmamış kullanıcılara açık olan tüm sürüm bilgilerini işaretler.