CVE-2019-18935 · Bilgilendirme

Progress Telerik UI for ASP.NET AJAX Deserialization of Untrusted Data Vulnerability

CVE-2019-18935, Progress Telerik UI'daki bir zafiyetle sunucu üzerinde kod çalıştırma riski taşır.

Üretici
Progress
Ürün
Telerik UI for ASP.NET AJAX
Seviye
yüksek
Yayın Tarihi
05 Nisan 2026
Okuma
8 dk okuma

CVE-2019-18935: Progress Telerik UI for ASP.NET AJAX Deserialization of Untrusted Data Vulnerability

Zorluk Seviyesi: Orta | Kaynak: CISA KEV

Zafiyet Analizi ve Giriş

Progress Telerik UI for ASP.NET AJAX platformunda bulunan CVE-2019-18935 zafiyeti, deserialization of untrusted data (güvenilmeyen verilerin seri bozumu) ile ilgili bir güvenlik açığıdır. Bu açık, RadAsyncUpload bileşeni aracılığıyla gerçekleşir ve kötü niyetli bir aktörün, w3wp.exe süreç bağlamında sunucuda kod yürütmesine (RCE - uzaktan kod yürütme) neden olabilir. Zafiyetin temelinde yatan sorun, bu bileşenin, kullanıcılardan gelen verileri uygun şekilde doğrulamadan deseralize etmesi yatar.

Telerik kütüphanesi, birçok sanal ortamda yaygın olarak kullanılır ve web uygulamaları için zengin kullanıcı arayüzü bileşenleri sunar. Ancak, CVE-2019-18935 zafiyeti, birçok sektördeki kullanıcıların deneyimlemiş olabileceği bir tehdidi temsil etmektedir. Özellikle finans, e-ticaret ve sağlık sektörleri, bu tür güvenlik açıklarının hedefi olabilmektedir. Çünkü bu sektörlerde işlem yapılan veriler oldukça hassas ve koruma altındaki bilgilerdir.

Gerçek dünya senaryoları göz önüne alındığında, bir hacker, bu zafiyeti kullanarak sunucuya zararlı bir yük (payload) yükleyebilir. Örneğin, bir web uygulamasında kullanıcıların dosya yüklemesine izin veren bir fonksiyon olduğu düşünülürse, istismar edilen bu açık sayesinde hacker, sunucuda kendi kodunu çalıştırmak için yüklediği dosyayı kullanabilir. Sunucuya yüklenecek bir dosya, aşağıdaki gibi dikkatli hazırlanmış bir içerik barındırabilir:

// Zararlı yük içeriği
public class MaliciousClass
{
    public void Execute()
    {
        // Kötü niyetli kodu buraya yerleştirin
    }
}

Bunun yanı sıra, bu tür zafiyetler, daha geniş saldırılar için bir zemin oluşturabilir. Örneğin, diğer güvenlik açıklarını kullanarak (CWE-20: Improper Input Validation - Hatalı Girdi Doğrulaması) kimlik doğrulama atlaması (Auth Bypass) gerçekleştirmek için bir kapı aralayabilir. Hacker, sunucuda RCE yöntemiyle kontrol sağlamanın ardından, sistem üzerinde genişleyebilir ve veri kaçırma (data exfiltration) veya hizmet dışı bırakma (DoS - Denial of Service) gibi daha fazla saldırı gerçekleştirebilir.

CVE-2019-18935'in etkisi yalnızca teknik bir zafiyetle sınırlı değildir; aynı zamanda itibar kaybı, yasal sorunlar ve finansal kayıplarla da sonuçlanabilir. Bu nedenle, yazılım geliştiricilerin ve sistem yöneticilerinin güvenlik açıklarını yazılım geliştirme döngülerinde göz önünde bulundurması gerekmektedir. Yazılım yapılırken, deserialization işlemleri sırasında güvenlik kontrollerinin titizlikle uygulanması son derece kritik bir aşamadır.

Sonuç olarak, CVE-2019-18935, önemli bir güvenlik açığıdır ve yazılım geliştirme süreçlerinde bu tür durumlarla baş etmenin yollarının belirlenmesi büyük önem taşımaktadır. Üreticilerin hızlı bir şekilde güvenlik yamaları çıkararak bu açığı kapatmaları, kullanıcıların ve işletmelerin güvenliğini sağlamak adına hayati bir öneme sahiptir. Geliştiriciler, sürekli olarak sistemlerini güncelleyerek ve güvenlik açıklarını izleyerek potansiyel saldırılara karşı tedbir almaya çalışmalıdır.

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

Progress Telerik UI for ASP.NET AJAX, RadAsyncUpload bileşeni aracılığıyla güvenilmeyen verilerin deseralizasyonu (deserialization) nedeniyle oldukça kritik bir güvenlik açığı (CVE-2019-18935) barındırıyor. Bu zafiyet, saldırganların uzak kod çalıştırması (Remote Code Execution - RCE) gerçekleştirmesine olanak tanır, böylece sunucu üzerinde w3wp.exe sürecinin bağlamında kod çalıştırabilirler. Bu durum, özellikle web uygulamalarının geleneksel istemci-sunucu mimarisinde önemli bir sorun teşkil eder, zira bu tür bir zafiyet, kötü niyetli kullanıcıların sisteme sızmasına, veri çalmasına veya sistemi tamamen ele geçirmesine yol açabilir.

Bu zafiyeti istismar etmek için izlenebilecek adımlar şöyle sıralanabilir:

İlk adımda, RadAsyncUpload bileşeninin nasıl çalıştığını anlamak ve bu bileşeni kullanarak bir dosya yüklediğinizde sunucunun nasıl tepki verdiğini gözlemlemektir. Uygulamanıza sizin dışınızda başka bir kullanıcı yükleme yapmaya çalıştığında, gönderilen verinin ne kadar algılanıp algılanmadığını analiz edebilirsiniz.

Veri yüklendikten sonra, sunucunun gönderdiği yanıtı gözlemlemek için bir HTTP izleme aracı (örneğin, Burp Suite) kullanabilirsiniz. Burada dikkat edilmesi gereken, yüklenen dosyalardaki veri yapısının tam olarak nasıl şekillendiğidir. Genellikle, yüklenecek dosyanın uygulama tarafından nasıl işleneceği ve burada kullanılan sınıflar ve yöntemler, zafiyeti istismar etmekte anahtar bir rol oynar.

Aşağıda, zafiyetin gerçekleşebilmesi için bir örnek PoC exploit taslağı bulunmaktadır. Genellikle bu tür exploitation'lar için Python kullanılmaktadır:

import requests
import pickle

# Zafiyetin bulunduğu hedef URL
url = "http://hedefsite.com/UploadHandler.ashx"

# Aşağıdaki, aşırı yüklenmiş nesne örneğini temsil eden bir örnek verilmiştir.
class ExploitPayload:
    def __reduce__(self):
        # Burada 'os.system' ile bir komut çalıştırılabilmektedir.
        return (os.system, ("whoami",))

# Payload'ı oluşturma
payload = pickle.dumps(ExploitPayload())

# Dosya yüklemek için gerekli HTTP isteği
files = {'file': ('malicious.pkl', payload)}
response = requests.post(url, files=files)

print(response.text)

Yukarıdaki kod bloğu, RadAsyncUpload kullanılarak yapılan bir yükleme isteğinin örneğini göstermektedir. Burada ExploitPayload isimli bir sınıf oluşturularak, pickle modülünden yararlanarak bir yükleme için kötü niyetli bir nesne oluşturulmuştur. Hedef URL'ye yapılan POST isteği sonucunda, sunucu tarafından muhtemel bir RCE gerçekleştirilerek whoami komutunun çıktısını almayı deniyoruz.

Bu tür bir exploit, yalnızca temel bir senaryo sunmaktadır. Gerçek dünyada bir saldırganın, bu zafiyet aracılığıyla erişim elde etmesi için hedef sistemin mimarisine yönelik daha kapsamlı bir keşif yapması ve belirli sistem yapılandırmalarını dikkate alması gerekecektir.

Zafiyetin etkilerini azaltmak için uygulama geliştiricileri, yükledikleri verilerin güvenilirliğini sağlamak için gerekli önlemleri almalıdır. Ayrıca, deseralizasyon güvenlik açıklarına karşı koruma için güvenli kod yazım standartlarına ve güvenlik denetimlerine riayet edilmesi kritik önem taşımaktadır.

Forensics (Adli Bilişim) ve Log Analizi

Progress Telerik UI for ASP.NET AJAX üzerindeki CVE-2019-18935 zafiyeti, siber güvenlik alanında önemli bir tehdit olarak öne çıkmaktadır. Bu zafiyet, RadAsyncUpload bileşeni aracılığıyla güvenilmeyen verilerin serileştirilmesi sonucu gerçekleşir ve saldırganlara sunucuda kod çalıştırma (remote code execution - RCE) imkanı sunar. Bu tür bir zafiyet, kötü niyetli bir kullanıcının, web sunucusunda istenmeyen kötü amaçlı yazılım çalıştırmasına neden olabilir. Bu nedenle, adli bilişim ve log analizi süreçleri, bu tür saldırıların tespit edilmesinde kritik bir rol oynamaktadır.

Siber güvenlik uzmanları, bu tür bir saldırının meydana geldiğini anlamak için SIEM (Security Information and Event Management) sistemlerine ve log dosyalarına erişim sağlamalıdır. Özellikle Access log ve Error log dosyaları, olası saldırıları tespit etmek için dikkatlice incelenmelidir. Logların analizi sırasında, aşağıdaki imzalar (signature) ve uyarılar dikkatlice gözlemlenmelidir:

  1. Garip veya Beklenmedik İstekler: Log dosyalarında RadAsyncUpload ile ilişkilendirilen isteklerde anormal bir artış veya beklenmeyen davranışlar gözlemlenebilir. Örneğin, aşağıdaki gibi bir istek paterni dikkat çekici olabilir:
   POST /RadAsyncUpload/Upload.ashx HTTP/1.1
  1. Anormal HTTP Yanıt Kodu: Hedef sistemde beklenmeyen yanıt kodları (örn. 500 Internal Server Error) görüldüğünde, bu durum arka planda bir hata olabileceğini gösterir. Özellikle, bir yükleme (upload) işleminin ardından gelen 500 hataları potansiyel bir sorun işareti olabilir.

  2. Yükleme Boyutları: Log dosyalarında anormal yükleme boyutları dikkat çekici olabilir. Örneğin, normalden çok daha büyük dosyalar yüklenmeye çalışıldığında, sistem üzerinde kötü niyetli bir eylem gerçekleşiyor olabilir:

   Content-Length: 10485760 (10 MB)
  1. Hatalı İsteklerdeki Anormallikler: Hata loglarında, özellikle serileştirme hatalarını gösteren girdiler (örn. "Unable to deserialize") dikkatle incelenmelidir. Örneğin:
   Error: Unable to deserialize object due to unexpected input.
  1. Kaydedilen Zamanlar ve IP Adresleri: Yüklenmeden sonra gerçekleşen etkinliklerin zamanları ve kaynak IP adresleri, sistemin ne zaman saldırıya uğradığını belirlemek için önemlidir. Özellikle, belirli bir IP'den gelen çok sayıda istek, DDoS (Distributed Denial-of-Service) saldırısı veya diğer istenmeyen eylemleri işaret edebilir.

  2. Sürekli Hatalar ve Tekerrür Eden İstekler: Özellikle belirli istemcilerden gelen sürekli hatalı yükleme istekleri, bir saldırganın sistem üzerinde kod çalıştırma çabasında olduğunu gösterebilir.

Siber güvenlik uzmanları, bu imzaları tespit ederek ve analiz ederek CVE-2019-18935 zafiyetinin büyümesini önlemek için proaktif bir tutum sergileyebilirler. Hem önleyici tedbirler almak hem de saldırı sonrası inceleme süreçlerini yönetmek, siber saldırıları daha etkili bir şekilde analiz etme ve engrenajlarda yaşanabilecek güvenlik açıklarını minimize etme açısından son derece önemlidir. Unutulmamalıdır ki, loglama ve izleme uygulamaları, siber güvenlik savunma stratejilerinin temel taşlarını oluşturur ve her zaman güncel tutulmalıdır.

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

Progress Telerik UI for ASP.NET AJAX üzerindeki CVE-2019-18935 zafiyeti, siber güvenlik açısından kritik bir risk taşımaktadır. Bu zafiyet, RadAsyncUpload bileşeni aracılığıyla gerçekleşen güvenilmeyen verilerin serileştirilmesi (deserialization) sorununu içermektedir. Bu durum, saldırganların uzaktan bir kod çalıştırma (RCE - Remote Code Execution) yeteneğine sahip olmalarına yol açarak, sunucuda kötü amaçlı kod yürütmesine olanak tanır. Söz konusu zafiyet, w3wp.exe sürecinin bağlamında çalıştığı için, bu işlem üzerinde yetkili bir saldırgan, server üzerinde define edilmiş izinlerle hareket edebilir ve sistemin kontrolünü ele geçirebilir.

Bir örnek senaryo üzerinden ele aldığımızda, bir web uygulamasının kullanıcıları, dosya yüklemek için RadAsyncUpload bileşenini kullanırken, kötü niyetli bir kullanıcı, sunucuya zararlı bir dosya yükleyerek bu zafiyetten yararlanabilir. Eğer uygulama, yüklenen dosyayı uygun bir biçimde doğrulamazsa, uzaktan kod çalıştırma olanağı, saldırgana sunucu üzerinde tam yetki sağlayabilir.

Zafiyetin kapatılması için birkaç önemli yöntem bulunmaktadır. Öncelikle, Telerik UI için kullanılan sürümün güncellenmesi kritik bir adımdır. İlgili güncellemeleri uygulayarak bu zafiyet kapatılabilir. Ancak, güncellemeler her zaman yeterli olmayabilir. Güvenlik üst düzeyde sağlanmalı ve genel yapılandırma ayarları gözden geçirilmelidir. RadAsyncUpload bileşeni, dosya yükleme işlemi sırasında yüklenen dosyaların türünü ve boyutunu kontrol etmek için kullanılacak doğrulama mekanizmaları ile güçlendirilmelidir. Uygulama, yalnızca belirli dosya türlerine izin vermekle kalmayıp, aynı zamanda bu dosyaların içeriğini analiz ederek kötü niyetli kod taşımadıklarını da doğrulamak için ağ geçidi (firewall) ve uygulama güvenlik duvarı (WAF - Web Application Firewall) kullanmalıdır.

WAF kuralları, dosya yükleme işlemleri için özel olarak yapılandırılmalıdır. Aşağıdaki örnek, belirli dosya türlerini engelleyen bir WAF kuralını göstermektedir:

SecRule REQUEST_FILENAME "@rx \.(php|asp|exe|sh)$" \
    "id:1001,phase:1,deny,status:403,msg:'Kötü niyetli dosya yüklemesi engelledi'"

Bu kural, yükleme alanında belirtilen belirli uzantılara sahip dosyaların sunucuya yüklenmesini engeller. Ayrıca, server tarafında dosya boyutunu sınırlamak için de kurallar oluşturulmalıdır. Böylece, çok büyük boyutlardaki dosyaların yüklenmesinin önüne geçilmiş olur.

Daha kalıcı sıkılaştırma önerileri arasında, en son güvenlik yamalarının uygulanması, yalnızca gerekli olan izinlerin verilmesi ve sistem izleme uygulamalarının devreye alınması yer almaktadır. Uygulamadaki kullanıcı etkileşimleri sürekli olarak izlenmeli ve anormal aktiviteler tespit edilmelidir. Ayrıca, kötü amaçlı yazılımların veya istenmeyen aktivitelerin sistemden ayrıştırılması için bir indirme sınırlaması getirilmelidir. Tüm bunların yanı sıra, web uygulamalarının güvenlik testleri ve sertifikasyon süreçleri, siber güvenlik açısından kritik öneme sahiptir.

Sonuç olarak, CVE-2019-18935 gibi zafiyetlerin önlenmesi, sadece var olan güvenlik açıklarını kapatmakla kalmayıp, aynı zamanda siber güvenlik kültürünü geliştirmek ve proaktif bir yaklaşım benimsemekle mümkündür. Bu tür güvenlik önlemleri ve sıkılaştırma adımları, sistemlerinizi tehditlere karşı daha dayanıklı hale getirecektir.