CVE-2020-0618 · Bilgilendirme

Microsoft SQL Server Reporting Services Remote Code Execution Vulnerability

CVE-2020-0618, Microsoft SQL Server Reporting Services'deki deserialization zafiyeti ile yetkisiz kod çalıştırma riski!

Üretici
Microsoft
Ürün
SQL Server
Seviye
Orta
Yayın Tarihi
02 Nisan 2026
Okuma
8 dk okuma

CVE-2020-0618: Microsoft SQL Server Reporting Services Remote Code Execution Vulnerability

Zorluk Seviyesi: Orta | Kaynak: CISA KEV

Zafiyet Analizi ve Giriş

Microsoft SQL Server Reporting Services, veri raporlama ve analizi için yaygın olarak kullanılan bir araçtır. Ancak, bu yazılımda bulunan CVE-2020-0618 numaralı zafiyet, ciddi güvenlik risklerine yol açabilen bir uzaktan kod yürütme (Remote Code Execution - RCE) açığıdır. Bu zafiyet, 2020’nin başlarında keşfedildi ve güvenlik araştırmacıları tarafından, raporlama hizmetleri aracılığıyla kötü niyetli bir kullanıcının, doğrulanmış bir saldırgandan beklenmeyecek şekilde sistem üzerinde yetki kazanmasını sağlayabileceği belirtildi.

Bu zafiyetin kökeni, SQL Server Reporting Services'in sayfa isteklerini işleme şekline dayanmaktadır. Doğru bir şekilde ele alınmayan bu istekler, bir saldırganın seri nesneleri (deserialization) kötüye kullanmasına ve bunun sonucunda sunucu üzerindeki kodu çalıştırmasına olanak tanır. Bu tür bir durum, genellikle web uygulamalarının önemli bir güvenlik açığı olarak kabul edilen ve yazılım geliştiricilerin dikkat etmesi gereken bir konu olan "CWE-502: Deserialization of Untrusted Data" kategorisine girmektedir.

Örneğin, saldırgan bir raporlama uygulaması üzerinde haksız yere yetki kazanabilir; böylece sunucunun hizmet hesabı bağlamında çalışacak olan zararlı kodları yükleyebilir. Ayrıca, SQL Server'ın güvende olduğunu düşünerek uygulama geliştiricileri tarafından sıkça kullanılan kütüphaneler arasında kaybolmuş bir güvenlik açığı olarak değerlendirilen bu zafiyet, pek çok sektörde ciddi etkiler yaratmıştır. Özellikle finansal hizmetler, sağlık hizmetleri ve kamu sektörü gibi hassas verilerin bulunduğu alanlar risk altındadır. Bu alanlarda veri ihlalleri, sadece maddi kayıplara yol açmakla kalmaz, aynı zamanda müşteri güveninin zedelenmesine ve uzun vadede itibar kaybına yol açar.

Dünya genelinde birçok kuruluş, bu zafiyetin farkına vararak SQL Server güncellemelerini uygulamış ve gerekli yamanın (patch) yüklenmesini sağlamıştır. Microsoft, bu zafiyeti düzeltmek için bir güncelleme yayınlamış olup, kullanıcıların sistemlerini güncel tutması, böyle bir güvenlik açığının sömürülmesi riskini minimize etmenin en etkili yollarından biridir. Ayrıca, sistemlerde yetki yönetimi ve kimlik doğrulama süreçlerinin de gözden geçirilmesi ve sıkılaştırılması önerilmektedir.

Bu tür zafiyetlerin tespit edilmesi ve mümkün olan en kısa sürede kapatılması, bilgi güvenliği adına kritik bir öneme sahiptir. Özellikle kurumsal düzeyde, siber güvenlik farkındalığının artırılması ve White Hat Hacker (beyaz şapkalı hacker) yaklaşımının benimsenmesi, yalnızca potansiyel saldırılara karşı değil, aynı zamanda mevcut zayıflıkların giderilmesinde de fayda sağlayacaktır. İşletmeler, güvenlik audit'leri gerçekleştirilerek, sistemlerinin dışarıdan gelebilecek saldırılara karşı dayanıklılığını artırmalıdır.

Sonuç olarak, CVE-2020-0618, SQL Server Reporting Services kullanıcıları ve bağlantılı sistemler için önemli bir güvenlik riskidir. Bu zafiyetin etkilerini en aza indirmek için teknik güncellemelerin yanı sıra, kullanıcı eğitimleri ve güvenlik politikalarının yeniden gözden geçirilmesi gerekmektedir. Unutulmamalıdır ki, siber güvenlik bir defansif (savunma) yaklaşımın yanı sıra, proaktif (önleyici) stratejilerin uygulanmasını da gerektiren dinamik bir alandır.

Teknik Sömürü (Exploitation) ve PoC

Microsoft SQL Server Reporting Services (SSRS) üzerindeki CVE-2020-0618 zafiyeti, deserialization (deseriyalizasyon) problemleri nedeniyle uzaktan kod yürütme (RCE - Remote Code Execution) imkanı sunmaktadır. Bu zafiyetten etkilenen sistemlerde, bir kimlik doğrulaması yapılmış saldırganın, Report Server hizmet hesabı bağlamında kod çalıştırabilmesi mümkün hale gelmektedir. Bu nedenle, SSRS'in düzgün bir şekilde yapılandırılmadığı veya güncellenmediği durumlarda, sistemler ciddi riskler altında kalabilir.

Sömürü işlemi, adım adım incelemek açısından aşağıdaki gibi sıralanabilir:

İlk olarak, zafiyeti etkileyen bir versiyonun kurulu olduğu bir SQL Server Reporting Services ortamına erişim sağlamak gerekmektedir. Zafiyet, yalnızca kimlik doğrulaması yapılmış kullanıcıların erişimine açık olduğu için, saldırganın mevcut bir kullanıcı hesabı olması şarttır. Bu aşamada, kurban sistemine saldırı gerçekleştirmek için social engineering (sosyal mühendislik) yöntemleri veya izin verilen kullanıcılar üzerinden bir kimlik avı saldırısı yapılabilir.

İlk adımda, SSRS üzerinde istenilen sayfaya (örneğin, rapor talep sayfası) bir HTTP isteği yapılır. Aşağıda bir örnek HTTP isteği verilmiştir:

POST /reportserver/Pages/ReportViewer.aspx HTTP/1.1
Host: kurban-sunucu.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 123

__VIEWSTATE=<viewstate_degeri>&__EVENTVALIDATION=<eventvalidation_degeri>&<diğer_parametreler>

Burada, __VIEWSTATE ve __EVENTVALIDATION gibi parametreler SSRS'in sayfa yönetimi için gereklidir ve atanması gereken doğru değerler, önceden gerçekleştirilen bir keşif aşaması ile belirlenmelidir.

Saldırgan, gerek duyulan HTTP isteğinde zararlı bir nesne (payload) gönderir. Bu nesne, gerçekleşecek deserialization işlemi sırasında kötü niyetli bir kodun yürütülmesini sağlayabilir. Örnek bir Python exploit taslağı aşağıdaki gibi görünebilir:

import requests

url = "http://kurban-sunucu.com/reportserver/Pages/ReportViewer.aspx"
payload = "gerekli_parametrelerin_yerine_konuşturulmuş_ve_kötü_niyetli_çalıştırma_kodu"

data = {
    "__VIEWSTATE": "<viewstate_degeri>",
    "__EVENTVALIDATION": "<eventvalidation_degeri>",
    "malicious_param": payload
}

response = requests.post(url, data=data)

if response.status_code == 200:
    print("Sömürü başarılı!")
else:
    print("Sömürü başarısız.")

Bu istemci tarafından gönderilen istek, SSRS sunucusu tarafından yorumlanacak ve eğer zafiyetin kötüye kullanımı başarıyla gerçekleştirilirse, yetkisiz kod yürütme işlemi başlamış olacaktır. Bunun sonucunda, saldırgan sisteme erişim sağlayarak hassas verilere ulaşabilir veya kötü niyetli yazılımları yükleyebilir.

Özetlemek gerekirse, CVE-2020-0618 zafiyetine karşı olan teknik eğitimimizde, kimlik doğrulaması yapılmış bir kullanıcı tarafından gerçekleştirilecek deserialization süreçlerinin nasıl kötüye kullanılabileceğine odaklandık. Güvenlik açığına sahip SQL Server Reporting Services sistemleri, uygun yamalarla giderilmediği sürece, bu tür saldırılara karşı savunmasız kalacaktır. Sistemin güvenliği için sürekli güncellemeler ve güvenlik denetimleri yapılması elzemdir.

Forensics (Adli Bilişim) ve Log Analizi

Microsoft SQL Server Reporting Services (SSRS) üzerindeki CVE-2020-0618 güvenlik açığı, kötü niyetli bir kullanıcının yetkilendirilmiş bir kullanıcı olmasının avantajını kullanarak uzaktan kod yürütmesi (RCE - Remote Code Execution) olanağı sağlayan bir deserialization (deserileştirme) zafiyetidir. Bu tür bir zafiyet, genellikle uygulama bileşenlerinin güvenli olmayan bir şekilde serializer ve de-serializer kullanmasından kaynaklanır. SSRS, sayfa isteği işleme sırasında bu tür bir hataya düşerek saldırganların kötü niyetli kodlar çalıştırmasına olanak verebilir.

Gerçek dünya senaryosunda, bir saldırgan, hedef sistemdeki SSRS'ye yetkili bir kullanıcı olarak erişim sağladığında, veritabanı sunucusunu etkileyen ciddi bir güvenlik riski oluşturabilir. Bu durum, saldırganın Report Server servis hesabı ile ilişkilendirilmiş izinlerinden yararlanarak kötü niyetli aktiviteler gerçekleştirmesine olanak tanır. Örneğin, bir saldırgan, SSRS aracılığıyla yürütmek istediği kötü amaçlı yazılımı hedef sunucuda çalıştırabilir.

Siber güvenlik uzmanlarının, bu tür saldırıların izlerini SIEM (Security Information and Event Management) sistemlerinde veya log dosyalarında (access log, error log vb.) tespit edebilmek için bazı belirli indikasyonları göz önünde bulundurmaları gerekir. Aşağıdaki başlıklar, uzmanların dikkat etmesi gereken önemli noktaları içermektedir:

  1. Başarısız Giriş Denemeleri ve Yetkisiz Erişim: Log dosyalarında, SSRS'ye yapılan giriş denemelerini takip etmek önemlidir. Eğer loglarda birçok başarısız giriş denemesi tespit edilirse veya yetkili bir kullanıcının birden fazla yerde oturum açtığına dair izler varsa, bu durum dikkate alınmalıdır. Ayrıca, herhangi bir yetkili kullanıcının alışılmadık saatlerde oturum açması da şüpheli bir aktivite olarak değerlendirilmelidir.

  2. Sıra Dışı Kullanım İfadeleri: SSRS için yapılan isteklerde, normalde beklenen sorgular dışındaki veya alışılmadık URL yapıları içeren istekler gözlemlenebilir. Örneğin, URL parametrelerinde düşünülmeden hazırlanmış çok sayıda tanımsal içerik aramak, bir saldırganın istismar etmeye çalıştığı deserialized (desaerileştirilmiş) nesneler içerebilir. Kullanıcı tarafından gönderilen verilerin yanı sıra, sunucudan dönen yanıt meydana getirdiği hatalar da kontrol edilmelidir.

  3. Kod Yürütme İfadeleri: Loglarda, yürütme komutları veya şüpheli kod parçaları içeren isteklerin varlığı, RCE saldırısını gösterebilir. Özellikle, bir uygulamanın sunucunun belleğinde işlem yapmasına neden olan komutlar önemlidir ve arka planda yürütülen bellek veya kaynak kullanımı izlenmelidir.

  4. Anormal Çalışma Süreçleri: Sunucunun normalden daha yüksek RAM, CPU veya disk okuma/yazma işlemleri gerçekleştirdiğini gösteren loglar, potansiyel bir saldırının işareti olabilir. Bilinmeyen veya beklenmedik süreçlerin çalışıyor olması, kötü niyetli bir durumun belirtisi olabilir.

  5. Hata Kayıtları: Uygulama sunucusunun hata loglarında, sistem hatalarına veya beklenmeyen istisnalara neden olan olayları tespit etmek, bir RCE açığının istismar edildiğini işaret edebilir. Özellikle deserialization hataları veya güvenlik istisnaları dikkat çekici bulgular olabilir.

Sonuç olarak, siber güvenlik uzmanlarının CVE-2020-0618 gibi zafiyetleri tespit edebilmesi, etkin log analizi ve SIEM sistemlerinin doğru bir şekilde yapılandırılmasına bağlıdır. Gelişmiş tehdit tespit yöntemleriyle, bu tür zafiyetleri zamanında saptamak ve önlemek, bilgi güvenliğini sağlamanın temel taşlarından birini oluşturmaktadır.

Savunma ve Sıkılaştırma (Hardening)

Microsoft SQL Server Reporting Services (SSRS) üzerinden ortaya çıkan CVE-2020-0618 zafiyeti, sızma testleri ve güvenlik denetimleri sırasında dikkate alınması gereken önemli bir sorundur. Bu zafiyet, kötü niyetli bir saldırganın, yetki sahibi bir kullanıcı olduğunda, sunucu üzerindeki kodları uzaktan çalıştırmasına (Remote Code Execution - RCE) olanak tanır. Bu nedenle, SQL Server kurulumlarında sıkılaştırma yapmak kritik öneme sahiptir.

Bu zafiyetin kaynağı, SSRS'nin istekleri işlerken nesne serileştirmesi (deserialization) sırasında yaptığı hatalardan gelmektedir. Kötü niyetli bir kullanıcı, belirli girdiler ile sunucunun davranışını etkileyerek, kod çalıştırma yetkilerini ele geçirebilir. Gerçek dünya senaryolarında, bir sızma testi sırasında bu tür zafiyetlerin istismar edildiği durumlarla karşılamak mümkündür; saldırgan, örneğin, kullanıcı kimlik bilgilerini ele geçirerek, sunucu üzerindeki kontrolünü artırabilir ve sonuç olarak veri ihlali veya sistemin çökmesine neden olabilir.

Bu zafiyetin etkilerini azaltmak için ilk adım, SQL Server Reporting Services'in en güncel versiyonuna güncellemektir. Microsoft, genellikle yazılımlarındaki bu tür güvenlik açıklarına yönelik güncellemeler yayınlamaktadır. Bu güncellemeleri almak için, günlük veya haftalık güncelleme kontrol rutinleri oluşturmak faydalı olacaktır.

Bunun yanı sıra, kalıcı sıkılaştırma adımları arasında aşağıdaki önlemler yer alır:

  1. Erişim Kontrolleri: SSRS hizmetlerinin yalnızca gerekli olan kullanıcı grupları tarafından erişilmesini sağlamak için erişim kontrollerini sıkılaştırın. Gereksiz yetkileri kaldırarak kullanıcıların sadece ihtiyaç duyduğu alanlara erişim sağlamalarına izin verin.

  2. Firewall ve Web Uygulama Güvenlik Duvarı (WAF) Kullanımı: WAF kurallarının uygun şekilde yapılandırılması, bu tür zafiyetleri istismar etmeye çalışan kötü amaçlı trafiği engelleyebilir. Örneğin, aşağıdaki gibi kural örnekleri kullanılabilir:

   # SQL Server Reporting Services'a yapılacak isteklerde,
   # içerik türlerini kontrol edin ve sadece belirli olanlara izin verin.
   SecRule REQUEST_HEADERS:Content-Type "application/json" "id:1001,phase:2,deny,status:403"

   # Şüpheli URL desenlerini engelleyin.
   SecRule REQUEST_URI "@rx /ReportServer" "id:1002,phase:2,deny,status:403"
  1. Log Yönetimi: SSRS ve sunucu loglarını sürekli olarak izlemek ve analiz etmek, potansiyel saldırı girişimlerini tespit etmede yardımcı olur. Anomaliler görüldüğünde, hızlı bir şekilde müdahale etmek kritik bir noktadır.

  2. Sızma Testleri ve Penetrasyon Testleri: Düzenli olarak sızma testleri yapmak, sistemdeki güvenlik açıklarını keşfetmenin etkili bir yoludur. Yetkili bir sızma testi ekibi, sistem üzerindeki zafiyetleri bulup, onları raporlayabilir ve düzeltme yollarını önerebilir.

  3. Temizlik Politikaları: Kullanılmayan kullanıcı hesapları ve hizmetlerin devre dışı bırakılması, saldırı yüzeyini azaltır. Oldukça dikkatli bir temizlik politikası, yalnızca gerekli olan bileşenlerin sistemde kalmasını sağlar.

Bu tür sıkılaştırma önlemleri, CVE-2020-0618 gibi zafiyetlerin etkilerini en aza indirmeye yardımcı olur ve sistemin güvenliğini artırır. Sonuç olarak, düzenli güncellemeler ve proaktif güvenlik önlemleri almak, SQL Server Reporting Services'nizdeki potansiyel tehditleri etkili bir şekilde yönetmenizi sağlayacaktır. Her zaman en iyi güvenlik uygulamalarını takip etmek ve uygulamak, siber tehditlere karşı en güçlü savunmayı oluşturacaktır.