CVE-2023-29492 · Bilgilendirme

Novi Survey Insecure Deserialization Vulnerability

CVE-2023-29492 zafiyeti, Novi Survey üzerinde uzaktan kod çalıştırma riskine yol açıyor.

Üretici
Novi Survey
Ürün
Novi Survey
Seviye
yüksek
Yayın Tarihi
03 Nisan 2026
Okuma
8 dk okuma

CVE-2023-29492: Novi Survey Insecure Deserialization Vulnerability

Zorluk Seviyesi: Orta | Kaynak: CISA KEV

Zafiyet Analizi ve Giriş

Novi Survey, kullanıcıların anketler oluşturmasına ve bu anketleri yönetmesine olanak tanıyan popüler bir platformdur. Ancak, CVE-2023-29492 olarak bilinen bir zafiyetin keşfi, bu sistemin güvenliğini tehlikeye atmıştır. Bu zafiyet, insecure deserialization (güvensiz deserialize) sorununu içermekte ve saldırganların uzaktan sunucuda kod çalıştırmasına olanak tanımaktadır. Bu tür zafiyetler, özellikle web uygulamalarında yaygın olarak görülen bir güvenlik açığıdır ve saldırganların sistem üzerindeki kontrolü ele geçirmesine olanak sağlar.

Söz konusu güvenlik açığı, ciddi bir sorun olarak karşımıza çıkmaktadır çünkü saldırganlar, bu zafiyeti kullanarak sunucu üzerindeki hizmet hesabının bağlamında kötü niyetli kodlar çalıştırabilir. Bu durum, özellikle veri güvenliği ve kullanıcı verilerinin gizliliği için hayati önem taşımaktadır. 2023 yılı itibarıyla, dünya genelindeki birçok sektörde bu zafiyetin etkileri gözlemlenmiştir; bunlar arasında eğitim, sağlık, finans ve web hizmetleri sektörü bulunmaktadır.

Novi Survey uygulaması, Java dilinde yazılmış bir sunucu uygulaması kullanmakta ve bu da kullanıcılara anket ve veri analizi süreçlerini yönetme imkanı tanımaktadır. Fakat, uygulamada bulunan bir kütüphane ya da modülün yanlış yapılandırılması sonucu ortaya çıkan bu güvenlik açığı, geliştiricilerin dikkat etmesi gereken bir sorundur. Meseleye daha derin bir bakış açısı ile baktığınızda, bu tür bir zafiyet genellikle kullanıcı ve uygulama arasındaki veri iletimi sırasında yanlış yapılandırmalar, güvenlik açıkları veya zayıf noktalardan kaynaklanmaktadır.

Insecure deserialization (güvensiz deserialize) zafiyeti, genellikle uygulamalar arası veri aktarımında kullanıcının güvenlik kontrollerini atlatmasına olanak tanır. Örneğin, bir saldırgan, hedef uygulamanın açık bir yönünü kullanarak sunucuya zararlı bir nesne gönderebilir ve bu nesne uygulama tarafından deseralizasyon (deserialize) sürecine tabi tutulduğunda, kötü niyetli kodu çalıştırabilir. Bu durum, uzaktan kod yürütme (RCE - Remote Code Execution) riskini doğurur ve bunun sonucunda sistemin güvenliği tehlikeye girebilir.

Gerçek dünya senaryolarında, bu tür zafiyetler büyük veri ihlallerine, kullanıcı bilgileri sızdırılmasına ve hatta kuruluşlara büyük maddi kayıplara yol açabilir. Örneğin, bir finans kuruluşu, sistemindeki bu tür bir zafiyet sayesinde saldırganların kullanıcı hesaplarına erişim sağlaması durumunda, hem mali kayıplar yaşar hem de itibar kaybı ile karşı karşıya kalabilir. Sağılı sektöründe de benzer şekilde, hasta bilgileri ve kritik tıbbi veriler tehlikeye girebilir.

Sonuç olarak, CVE-2023-29492 zafiyeti, Novi Survey platformunun güvenliğini ciddi şekilde tehdit eden bir durumdur. Yazılım geliştiricileri ve güvenlik uzmanları, bu tür riskleri en aza indirmek için uygulamalarında güvenli programlama tekniklerini benimsemeli ve deserialization işlemlerini dikkatle ele almalıdır. Uygulamaların güvenliğini sağlamak, sadece zafiyetleri kapatarak değil, aynı zamanda proaktif bir güvenlik kültürü oluşturarak mümkündür. Dolayısıyla, bu tür güvenlik açıklarının etkilerini anlamak ve bunlardan korunmak için düzenli güvenlik değerlendirmeleri ve güncellemeler yapılmalıdır.

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

Novi Survey'deki CVE-2023-29492 güvenlik açığı, siber saldırganların uzaktan kod çalıştırmalarına (RCE - Remote Code Execution) olanak tanıyan bir insecure deserialization (güvensiz serileştirme) açığıdır. Bu zafiyet, saldırganların sunucunun hizmet hesabı bağlamında kod çalıştırabilmesine neden olabilir ve bu da büyük bir risk teşkil eder. Zafiyetin teknik sömürü aşamalarını anlamak, hem sistem yöneticileri hem de etik hackerlar için kritik öneme sahiptir.

İlk olarak, bu açığı sömürmek için öncelikle hedef sistemin açık versiyonunu tespit etmek gerekmektedir. Bunun için, Novi Survey uygulamasının hangi sürümünü kullandığını öğrenmek önemlidir. Hedef sistemin IP adresini veya alan adını kullanarak bir tarayıcı veya komut satırı aracı (curl gibi) ile uygulamanın sürüm bilgilerini bulmak için aşağıdaki gibi bir HTTP isteği gönderebilirsiniz:

curl -v http://hedef_sistem/versiyon

Başarılı bir yanıt aldığınızda, zafiyete sahip bir sürüm kullanıldığını doğrulayabilirsiniz. Bu durumda, hedefte yer alan nümerik ve dize tabanlı verilerin nasıl serileştirildiğini anlamak önemlidir. Bu, genellikle JSON veya XML formatında olabilir. Burada, veri nesnelerini tersine mühendislik ile incelemek ve zafiyetten nasıl yararlanılabileceğini anlamak gerekecektir.

Bir sonraki adım, zayıflıktan yararlanmak için oluşturulabilecek istenmeyen bir nesnenin serileştirilmesidir. Örneğin, aşağıdaki Python kodunu kullanarak güvenli olmayan biçimde serileştirilmiş bir nesne oluşturabilirsiniz:

import pickle
import os

class Command:
    def __reduce__(self):
        return (os.system, ("whoami",))

payload = pickle.dumps(Command())

Bu işlem, hedef sunucuda belirli bir komutun çalıştırılmasını sağlayan bir nesne oluşturur. Örnek olarak, bu nesneyi hedef uygulamaya gönderirken kullanabilirsiniz.

Ardından, hazırlanan payload'ı HTTP POST isteği ile hedef sunucuya göndermelisiniz. Bunun için aşağıdaki gibi bir istek kullanabilirsiniz:

curl -X POST http://hedef_sistem/api/serileştirilmiş_nesne \
     -H "Content-Type: application/json" \
     -d '{"data": "<serialized_payload_here>"}'

Yukarıdaki kodda, <serialized_payload_here> kısmına oluşturduğunuz payload'ı yerleştirmeyi unutmayın. Eğer işlem başarılı olursa, hedef sunucu komutunuzu çalıştıracak ve bu sayede sisteme uzaktan erişim sağlamış olacaksınız.

Elde edilen erişim ile birlikte, hedef sunucu üzerinde geniş çaplı etki yaratmak mümkündür. Örneğin, kritik dosyaları çalabilir veya işletim sistemine zarar verecek komutlar çalıştırabilirsiniz. Ancak, bu tür eylemler etik hacker perspektifinden kaçınılması gereken davranışlar arasındadır. Amacımız, zafiyeti tespit edip güvenlik önlemleri almak ve sistemi koruma altına almaktır.

Sonuç olarak, CVE-2023-29492 hakkında bilgi sahibi olmak, güvenlik uzmanlarının ve sistem yöneticilerinin potansiyel tehditleri tanımlamasına ve sistemlerini koruyabilmesine yardımcı olacaktır. Güvenli yazılım geliştirme prensiplerine uymak ve potansiyel zafiyetleri hızlı bir şekilde tespit etmek, bu tür saldırıların önüne geçmenin anahtarıdır.

Forensics (Adli Bilişim) ve Log Analizi

Novi Survey üzerinde keşfedilen CVE-2023-29492 güvenlik açığı, güvenli olmayan bir deserialization (deserialization) zafiyeti nedeniyle uzaktaki saldırganların, servis hesaplarının bağlamında sunucuda kod çalıştırmasına olanak tanımaktadır. Bu tür bir zafiyet, siber güvenlik uzmanlarını ciddi anlamda tehdit altına sokmaktadır çünkü uzaktan bir kod yürütme (RCE - Remote Code Execution) saldırısı, sistem üzerinde tam kontrol sahibi olma riski taşır. Bu nedenle, kurumsal ortamlardaki log analizi (log analysis) ve adli bilişim (forensics) süreçleri kritik hale gelir.

Bir siber güvenlik uzmanı, bu tür zafiyetlerin istismar edildiğini SIEM (Security Information and Event Management - Güvenlik Bilgisi ve Olay Yönetimi) sistemi veya log dosyalarında (access log, error log vb.) tespit edebilir. Örneğin, log dosyalarında beklenmedik veya anormal erişim kalıpları gözlemlenmesi, bir güvenlik açığının istismar edildiğine dair ilk işaretlerdendir. Özellikle, servis hesapları üzerinden gerçekleştirilen olağandışı bir giriş veya işlem, göz önünde bulundurulması gereken önemli bir durumdur.

Log dosyalarında aşağıdaki türde imzalara (signature) dikkat edilmesi gerekmektedir:

  1. Anormal URL Erişimleri: Log dosyalarında inceleme yaparken, anormal veya beklenmedik URL'lere yapılan erişimleri sorgulamak önemlidir. Özellikle, 'GET' veya 'POST' istekleriyle birlikte "deserialize" içeriklerini aramak faydalı olabilir. Örneğin, aşağıdaki gibi bir istek:
   GET /api/survey/response?data=&lt;malicious_serialized_data&gt;
  1. Hatalı veya Başarısız Olaylar: Error log’larında sıkça görülen hatalar, bir zafiyetin istismar edildiğini gösterebilir. Özellikle, deserialization hataları veya başlatılamayan nesne hataları gözlemlendiğinde, bu durum dikkatle incelenmelidir.
   ERROR: Failed to deserialize object from request payload
  1. Olağandışı Süreç Başlatmaları: Sunucu üzerindeki işlem kayıtlarını (process logs) kontrol ederek, beklenmeyen veya yetkisiz işlemlerin başlatıldığını tespit edebilirsiniz. Örneğin, daha önce hiç başlatılmamış bir arka plan sürecinin oluşturulması, bir RCE saldırısının gerçekleştiğine dair ipuçları verebilir.

  2. Servis Hesapları Üzerinden Anormal Davranış: Özellikle, servis hesabının alışık olmadığı bir IP adresinden veya lokasyondan giriş yapması durumunda, bu durumu incelemek gerektiği unutulmamalıdır. Aşağıdaki gibi bir log girişi, alarm vermelidir:

   INFO: Login attempt from unusual location: 192.0.2.1 via service account

CVE-2023-29492 gibi zafiyetler, siber güvenlik uzmanlarına, hem mevcut güvenlik politikalarını yeniden değerlendirme hem de işletim sisteminin ve uygulamaların güncellemelerini sağlama konusunda ilham vermektedir. Güvenli bir sistem oluşturmak, yalnızca mevcut tehditleri tespit etmekle kalmayıp, aynı zamanda bu tehditlerin nasıl önlenebileceği konusunda proaktif adımlar atmayı gerektirir. Log analizi, önerilen tüm bu adımlarda önemli bir rol oynamaktadır; bu nedenle, siber güvenlik uzmanlarının bu yeteneğini geliştirmesi hayati önem taşır.

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

Novi Survey uygulamasında tespit edilen CVE-2023-29492 zafiyeti, uzaktan saldırganların sunucuda, hizmet hesabı (service account) bağlamında kod çalıştırmalarına olanak tanıyan bir güvensiz serileştirme (insecure deserialization) açığıdır. Bu tür güvenlik açıkları, uygulama geliştiricilerin veri iletimi sırasında sağlıklı doğrulamalar yapmaması nedeniyle ortaya çıkar. Gelişmiş zararlı yazılımlar, bu açıkları kullanarak sistem erişimlerine sızabilir ve devlet bilgileri, kullanıcı verileri gibi kritik verilere ulaşabilir.

Güvensiz serileştirme, genellikle kullanıcıdan gelen verilerin yeterince sağlam bir şekilde kontrol edilmediği durumlarda gerçekleşir. Zafiyetin istismar edilmesi için bir saldırganın, serileştirilmiş veriyi manipüle ederek uygulama sunucusuna iletmesi gerekir. Bu durumda, sunucu veriyi çözümleyerek (deserialize) istediği davranışları gerçekleştirebilir. Örnek senaryo olarak, bir saldırganın kötü niyetli kodu serileştirilmiş veri içerisine yerleştirip server'a göndermesi yeterlidir. Sunucu bu veriyi çözümlediğinde, saldırganın belirlediği komutlar çalıştırılabilir.

Bu tür bir zafiyeti kapatmanın yollarından biri, veri serileştirme ve çözümleme sürecinde daha sıkı kontroller uygulamaktır. Özellikle, dışarıdan gelen verilerin güvenilirliğinin sağlaması adına, aşağıdaki önlemler alınmalıdır:

  1. Güçlü Doğrulama: Uygulama, gelen serileştirilmiş verinin kaynağını mutlaka doğrulamalıdır. Örneğin, istemci tarafından gönderilen veriler üzerinde kimlik doğrulaması (authentication) yapılmalı ve bu verilerin beklenen formatta olup olmadığı kontrol edilmelidir.

  2. Sadece Güvenilir Verileri Kabul Etme: Tüm veriler, serileştirme ve çözümleme sırasında beyaz liste (whitelist) yöntemiyle kontrol edilmelidir. Yalnızca belirli ve güvenilir sayılabilecek veri biçimlerinin kabul edilmesi, güvenlik risklerini minimize eder.

  3. Güvenli Yuvalama (Sandboxing): Kodun çalıştırılacağı çevre, sıkı bir şekilde izole edilmelidir. Sunucunun zararlı kod çalıştırmasını engellemek için, kodun yalnızca belirli sınırlar içinde faaliyet göstermesine izin vermek gereklidir.

  4. Güvenlik Duvarı Kuralları (WAF): Web uygulama güvenlik duvarları (WAF) kullanmak, zararlı talepleri engelleyerek durumu kontrol altında tutabilir. Örneğin, belirli içerik türlerini veya beklenmedik HTTP yöntemlerini engelleyen kurallar tanımlamak faydalı olacaktır:

   SecRule REQUEST_METHOD "^(POST|GET)$" \
   "id:1000, phase:1, deny, status:403"
  1. Yazılım Güncellemeleri: Uygulama platformlarının ve kullanılan kütüphanelerin daima güncel tutulması, bilinen zafiyetlerin kapatılmasını sağlar. Yeni güncellemeler genellikle mevcut güvenlik açıklarını kapatacak düzeltmeler içerir.

  2. Kod İnceleme ve Penetrasyon Testleri: Uygulama geliştirme sürecinin her aşamasında, uzman güvenlik denetçilerinin kod incelemesi yapması ve penetrasyon testleri (penetration tests) uygulaması şarttır. Bu sayede potansiyel zafiyetler, üretim ortamına geçmeden tespit edilip düzeltilir.

Sonuç olarak, CVE-2023-29492 gibi güvenlik açıklarının önlenmesi, sadece güvenlik duvarı kullanmakla kalmayıp, yazılım geliştirme yaşam döngüsünün her aşamasında güvenlik ilkelerini entegre etmeyi de gerektirir. Güçlü analiz ve sürekli eğitim ile sistemlerin güvenliği artırılmalıdır. Unutulmamalıdır ki, güvenlik bir süreçtir ve bu süreçte sürekli gelişim, iyileştirme ve zamanında yanıt verme bir zorunluluktur.