AI Hacking - Hackerlar Siber Saldırılarda Yapay Zekayı Nasıl Kullanıyor?

Şimdi Oku
Site çevirileri için yapay zeka kullanıyoruz ve doğruluk için çaba göstersek de her zaman %100 kesin olmayabilir. Anlayışınız için teşekkür ederiz.

Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor

tarafından OPSWAT
Bu Gönderiyi Paylaş
OPSWAT Burs Programı katılımcılarının vesikalık fotoğrafları
OPSWAT Burs Programı Katılımcıları

Bu blogda, coğrafi veri manipülasyonu ve paylaşımı için yaygın olarak kullanılan açık kaynaklı Java tabanlı bir sunucu olan GeoServer'da bulunan bir güvenlik açığı olan CVE-2024-36401'i inceliyoruz. Kimliği doğrulanmamış kullanıcılar tarafından RCE'ye (uzaktan kod yürütme) izin verebilecek bu güvenlik açığı, GeoServer dağıtımlarının mümkün olan en kısa sürede yamalanmasının kritik öneminin altını çizmektedir. 

En son güvenlik analizimizde, iki OPSWAT Yüksek Lisans Bursiyeri bu tehdidi araştırıyor:

Ayrıca OPSWAT SBOM teknolojisinin bu güvenlik açığını nasıl tespit edebileceğini paylaşacak ve ekiplerin saldırganlar saldırmadan önce jeo-uzamsal altyapılarını güvence altına almaları için uygulanabilir adımlar sunacağız.

GeoServer güvenlik açığı analizini temsil eden çizim

GeoServer'a Genel Bakış

GeoServer, jeo-uzamsal verileri görüntülemek, düzenlemek ve paylaşmak için tasarlanmış Java tabanlı açık kaynaklı bir sunucudur. İlk olarak 2001 yılında TOPP (The Open Planning Project) tarafından başlatılan GeoServer, açık mekansal veri alışverişi yoluyla hükümet ve şehir planlamasına halkın katılımını artırmak için geliştirilmiştir. Yirmi yılı aşkın bir süre sonra GeoServer, çeşitli mekansal veri formatlarını işleyebilen ve farklı veri kaynaklarıyla entegre olabilen sağlam bir platform haline gelmiştir.

GeoServer, OGC (Open Geospatial Consortium) standartlarına dayalı hizmetler sunmaktadır:

  • WFS (Web Özellik Hizmeti) - HTTP kullanarak vektör formatındaki coğrafi bilgilerin oluşturulmasını, değiştirilmesini ve değiş tokuş edilmesini sağlar. 
  • WCS (Web Coverage Service) - Karmaşık modelleme ve analizler için raster verilere (örn. uydu görüntüleri) erişimi kolaylaştırır.
  • WMS (Web Harita Hizmeti) - Harita görüntüleri istemek için basit bir HTTP arayüzü sağlar.

CVE-2024-36401 hakkında arka plan

CVE-2024-36401, 2.25.2, 2.24.4 ve 2.23.6'dan önceki GeoServer sürümlerini etkiler. Birden fazla OGC istek parametresinde özellik adlarının XPath ifadeleri olarak güvenli olmayan şekilde değerlendirilmesinden kaynaklanmaktadır. Saldırganlar, varsayılan bir GeoServer kurulumuna hazırlanmış girdiler enjekte ederek RCE (uzaktan kod yürütme) oluşturmak için bu kusurdan yararlanabilir.

 GitHub Güvenlik Danışmanlarına göre, bu güvenlik açığı 9.8 (Kritik) CVSS v3.1 puanı taşımaktadır. 

Yazılım açıklarını değerlendirmek için kullanılan CVSS Temel Puan Metriklerinin ekran görüntüsü

GeoServer'ın Basit ve Karmaşık Özellikleri

GeoServer, düzden karmaşık, iç içe geçmiş veri kümelerine kadar farklı jeo-uzamsal veri yapılarını barındırmak için hem basit hem de karmaşık özellik türlerini destekler. Ancak, bu veri türlerinde XPath ifadelerinin hatalı kullanımı CVE-2024-36401'i istismar edilebilir hale getirmektedir.

Basit Özellikler

Basit özellik türleri, bir veritabanındaki her satırın bir jeo-uzamsal özelliğe karşılık geldiği ve her özniteliğin doğrudan bir XML öğesine eşlendiği düz bir formatta basit jeo-uzamsal verileri temsil eder. 

Örneğin, id, isim ve konum gibi sütunlara sahip şirketleri temsil eden bir tablo kolayca basit XML özelliklerine dönüştürülebilir.

idisimkonum
1OPSWATNOKTA (10.769829, 106.685248)
GeoServer veritabanı satırlarından XML öğelerine basit özellik eşleme

Kompleks Özellikleri

Buna karşılık, karmaşık özellik türleri daha karmaşık verileri işler. Bu özellik türü, iç içe geçmiş özellikleri ve farklı veri kümeleri arasındaki ilişkileri destekler. Bu karmaşık şemalar otomatik olarak oluşturulmaz, ancak GeoServer'ın Uygulama Şeması uzantısında belirtildiği gibi topluluk standartları kullanılarak tanımlanır.

Örnek: 

Önceki şirketler tablosunun altına bir yabancı anahtar ekliyoruz gu_id bir şirket ile eşdeğer jeolojik birim arasındaki ilişkiyi tanımlamak için kullanılır:

idisimkonumgu_id
1OPSWATNOKTA (10.769829, 106.685248)12

Jeolojik birim bilgileri tabloda ayrı olarak saklanır jeoloji̇k bi̇ri̇m:

gu_idurnAçıklama
12urn:x-demo:feature:GeologicUnit:12Metamorfik gnays

Bu tabloları kullanarak, şirketi bir sa:SamplingCompanyiç içe geçmiş bir gsml:GeologicUnit. Bu kurulum, otomatik olarak oluşturulan şemalar yerine topluluk özellikleri tarafından tanımlanan iç içe geçmiş türleri ve ilişkileri içerdiğinden karmaşık bir özellik oluşturur.

GeoServer karmaşık özelliklerinde iç içe geçmiş jeolojik birim ilişkileri

Bu tür bir esneklik karmaşık gerçek dünya senaryolarının modellenmesi için gereklidir, ancak aynı zamanda iç içe geçmiş yapıları etkili bir şekilde yönetmek için JXPath değerlendirmesi gibi gelişmiş işleme tekniklerine dayanması nedeniyle güvenlik açıklarını da beraberinde getirir.

Güvenlik Açığı Nasıl Ortaya Çıkar?

GeoServer, karmaşık özellik türlerini (Application Schema veri depolarında bulunanlar gibi) işlemek için XPath değerlendirmesini kullanmak üzere tasarlanmıştır. Ancak yanlış kullanım nedeniyle, XPath değerlendirmesini yanlışlıkla basit özellik türlerine de uygular. Bu bir saldırı vektörü oluşturur çünkü:

  1. GeoServer, veri alımı sırasında özellik adlarını değerlendirmek için GeoTools kütüphanesine güvenir.
  2. Bu commons-jxpath kütüphanesi, XPath ifadelerini işlemek için kullanılan uygun doğrulamadan yoksundur, bu da XPath ifadelerini işlerken rastgele kod çalıştırabilir.
  3. Bir saldırgan sunucuyu kontrol etmek için bu güvenli olmayan XPath yürütmesinden yararlanan kötü niyetli bir istek oluşturabileceğinden, bu kusur tüm GeoServer örneklerini potansiyel RCE güvenlik açıklarına maruz bırakır.

İstismar İş Akışına Genel Bakış

  • A POSTA isteği şu adrese gönderilir GetPropertyValue işlemini gerçekleştirir. Ardından GeoServer özelliği (veya valueReference) belirli bir özellik için.  
  • İstenen özellik Özellik Türü Ayrıntıları tablosunda mevcutsa, GeoServer bunu normal şekilde işler.
Bir tabloda XPath değerlendirmesi için GeoServer'ın commons-jxpath'e geri dönmesi
  • Ancak, mülk listelenmemişse, GeoServer, mülk listesindeki commons-jxpath kütüphanesinin istek parametresini bir XPath ifadesi olarak yorumlamasını sağlar.
  • O zamandan beri commons-jxpath Java kodunun doğrudan XPath'ten yürütülmesine izin veren bu geri dönüş mekanizması, potansiyel olarak kullanıcı tarafından sağlanan istek parametrelerinin uzaktan kod yürütme için kullanılmasına olanak tanır. Basitçe söylemek gerekirse, bir saldırgan RCE elde etmek için kötü amaçlı kod enjekte edebilir.
GeoServer GetPropertyValue işlemini ve saldırı akışını gösteren iş akışı diyagramı

Güvenlik Açığı İstismarı ve Analizi

JXPath ve Java Yürütme Köprüsü

GeoServer'da kötü amaçlı XPath ifadelerinin Commons-jxpath ile işlenmesi

Bu commons-jxpath kütüphanesi, genellikle JXPath olarak adlandırılır ve XPath sözdizimini kullanarak Java nesne grafiklerinde (JavaBeans, DOM nesneleri vb.) gezinmeyi sağlar. Örneğin, ad ve adres gibi özelliklere sahip basit bir Employee nesneniz varsa, JXPath bu özellikleri bir XML belgesindeki düğümlermiş gibi sorgulamanıza olanak tanır.

XPath sözdizimini kullanarak Java nesne grafiklerinde JXPath gezintisi

Uzantı İşlevlerinden Yararlanma

Standart fonksiyonların ötesinde JXPath, Java'ya köprü görevi gören uzantı fonksiyonlarını da destekler. Bu "Java köprüsü" çok önemlidir, çünkü örneğin Java fonksiyonlarının doğrudan XPath sorguları içinde çağrılmasına olanak tanır:

Java Employee nesnesinin özelliklerini sorgulayan JXPath

Bu köprü aracılığıyla hangi Java yöntemlerinin çağrılabileceğine ilişkin birkaç sınırlama nedeniyle, bir saldırgan exec() işlevini (veya benzer yöntemleri) kullanarak sunucu üzerinde rastgele komutlar çalıştırabilirsiniz.

XPath ile Java yöntemleri arasında köprü kuran uzantı işlevi çağrısı

WFS GetPropertyValue

GeoServer'ın WFS'si kullanıcıların jeo-uzamsal özellikleri sorgulamasını ve değiştirmesini sağlar. Normal koşullar altında, WFS GetPropertyValue işlemi basitçe istenen özelliği bir XML yapısı içinde döndürür.

XML özelliği döndüren WFS GetPropertyValue işlemi
WFS GetPropertyValue XML yanıt yapısı

İş Akışı Analizi

  1. Bir saldırgan /geoserver/wfs adresine bir POST isteği gönderir.
  2. GeoServer en dıştaki XML etiketini inceler-wfs:GetPropertyValue-hangi işlemin çalıştırılacağını belirlemek için.
  3. GeoServer daha sonra istek parametrelerini WFS sınıfındaki ilgili yönteme aktarır. Bu senaryoda, Dispatcher isteği şu yönteme yönlendirir GetPropertyValue yöntem.
İsteği GetPropertyValue yöntemine yönlendiren GeoServer Dispatcher
  1. DefaultWebFeatureService20 (WFS) sınıfı içinde, bu GetPropertyValue yöntemi, kullanıcının parametrelerini aynı addaki bir işleyiciye iletir.
  2. İşleyicinin run() yöntemi talebi alır ve kritik valueReference kullanıcı tarafından kontrol edilen parametre.
valueReference parametresiyle kullanıcı isteği alan işleyici run() yöntemi
  1. sırasında run() yöntemini kullanarak GeoServer referenceValue ve onun değerlendir() fonksiyon.
GeoServer referenceValue'yu alıyor ve evaluate() fonksiyonunu çağırıyor
  1. Eğer valueReference GeoServer'ın önceden tanımlanmış özellikleriyle eşleşmiyorsa, GeoServer varsayılan olarak FeaturePropertyAccessoryorumlayan valueReference bir XPath ifadesi olarak.
FeaturePropertyAccessor valueReference'ı XPath ifadesi olarak yorumlama
  1. Bu get() FeaturePropertyAccessor'daki yöntem şunları kullanır commons-jxpath XPath sorgusunu çalıştırmak için. Burada, kullanıcının valueReference doğrulama yapılmadan doğrudan xpath parametresine geçirilir. aracılığıyla JXPathContext.newContext()GeoServer, XPath sorguları için bir ortam başlatır, ardından bunları iteratePointers().
Commons-jxpath kullanıcı tarafından sağlanan valueReference ile XPath sorgusu yürütme

JXPath uzantı işlevlerini desteklediğinden, saldırganlar XPath ifadesine kötü amaçlı kod ekleyerek GeoServer örneğinde rastgele kod yürütülmesini tetikleyebilir.

RCE için XPath ifadesi aracılığıyla kötü amaçlı kod enjekte eden saldırgan

Bu olaylar zinciri, güvenli olmayan işlemlerin nasıl valueReference parametresi RCE'ye yol açarak savunmasız GeoServer dağıtımları için ciddi bir güvenlik tehdidi oluşturabilir.

Saldırı Simülasyonu

Bu istismarı gerçek dünya senaryosunda simüle etmek için OPSWAT Yüksek Lisans Bursiyerlerimiz GeoServer'ı yerel bir Windows makinesinde konuşlandırdı. GeoServer'a erişildiğinde aşağıdaki arayüz görüntülenmiştir.

Güvenlik açığı simülasyonu için Windows makinede GeoServer arayüzünün ekran görüntüsü

Sunucu çalıştıktan sonra, bir saldırgan kötü niyetli bir XPath ifadesi içeren bir POST isteği göndererek güvenlik açığından yararlanabilir valueReference /geoserver/wfs uç noktasına yönlendirin.

GeoServer'da valueReference'dan yararlanan kötü amaçlı POST isteğini gösteren XML kod parçacığı

Sonuç: İstek gönderildikten sonra, kötü amaçlı XPath ifadesi bir sistem komutu yürütür ve Calculator uygulamasının başlatılmasını tetikler.

Başarılı RCE istismarından sonra Hesap Makinesi uygulamasının başlatılmasını gösteren ekran görüntüsü

Hafifletme ve Öneriler

Basit bir istismar, özellikle GeoServer gibi açık kaynaklı yazılımlara dayanan projelerde bir yazılım tedarik zinciri saldırısına dönüşebilir. OPSWAT SBOM (Software Bill of Materials) teknolojisi, kod tabanınızdaki CVE-2024-36401 gibi güvenlik açıklarının belirlenmesine yardımcı olur.

Bu örnek OPSWAT SBOM'un nasıl çalıştığını göstermektedir:

  1. Güvenlik açıklarından etkilenen yazılım bileşenlerini tespit eder.
  2. Güvenlik açığının ciddiyetini değerlendirir ve sıralar - burada GeoServer CVE'leri "Kritik" olarak işaretlenmiştir.
  3. Etkilenen sürümü tanımlar.
  4. Geliştirme ekiplerinin yamaları uygulayabilmesi veya düzeltme önlemlerini derhal alabilmesi için sabit sürümü önerir.
Kritik güvenlik açıklarına sahip GeoServer paketlerini tespit eden OPSWAT SBOM'un gösterge tablosu ekran görüntüsü
OPSWAT SBOMSoftware Bill of Materials) teknolojisi, kritik güvenlik açıklarına sahip GeoServer paketlerini tespit eder.

Önerilen Diğer Adımlar

  1. GeoServer'ı güncelleyin: Güvenlik açığının yamalandığı GeoServer 2.25.2, 2.24.4 veya 2.23.6 (veya üstü) sürümlerine yükseltin.
  2. Denetim Bağımlılıkları: Güncel olmayan kütüphaneleri belirlemek için OPSWAT SBOM gibi araçları düzenli olarak kullanın (örn, commons-jxpath) ortamınızda.
  3. Erişimi Kısıtlayın: Saldırı yüzeyini en aza indirmek için GeoServer'ı güvenlik duvarlarının veya kimlik doğrulama katmanlarının arkasına dağıtın.
  4. Güvenlik Önerilerini İzleyin: Yeni yamalardan haberdar olmak için resmi GeoServer sürüm notlarını ve CVE veritabanlarını takip edin.

OPSWAT SBOM Hakkında

OPSWAT SBOM en popüler programlama dillerini destekleyerek yazılım geliştirme ekiplerine üçüncü taraf açık kaynak kütüphaneleri, ilgili bağımlılıkları ve yükseltme için mevcut en son sürümler hakkında görünürlük sağlar. Geliştiriciler OPSWAT SBOM'u GitHub, BitBucket, GitLab, Amazon ECR, DockerHub ve daha fazlası gibi kaynak kodlarına ve konteyner hizmetlerine entegre edebilirler. SBOM hakkında daha fazla bilgi edinin.

OPSWAT araçlarını ve çözümlerini mevcut altyapınız ve iş akışlarınızla nasıl entegre edeceğinizi öğrenmek için bugün bir uzmanla görüşün:

OPSWAT ile Güncel Kalın!

En son şirket güncellemelerini almak için bugün kaydolun, hikayeler, etkinlik bilgileri ve daha fazlası.