Benny Czarny’nin “Cybersecurity Upside Down” adlı kitabı hakkında daha fazla bilgi edinin

Daha Fazla Bilgi
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

Yazan OPSWAT
Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor
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.

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

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.

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

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.

id

isim

konum

1

OPSWAT

NOKTA (10.769829, 106.685248)

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

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:

id

isim

konum

gu_id

1

OPSWAT

NOKTA (10.769829, 106.685248)

12

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

gu_id

urn

Açıklama

12

urn:x-demo:feature:GeologicUnit:12

Metamorfik 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.

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

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.
Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor
  • 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.
Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor

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

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

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

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.

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

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:

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

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.

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

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.

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

İş 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.
Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor
  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.
Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor
  1. sırasında run() yöntemini kullanarak GeoServer referenceValue ve onun değerlendir() fonksiyon.
Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor
  1. Eğer valueReference GeoServer'ın önceden tanımlanmış özellikleriyle eşleşmiyorsa, GeoServer varsayılan olarak FeaturePropertyAccessoryorumlayan valueReference bir XPath ifadesi olarak.
Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor
  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().
Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor

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.

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

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.

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

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.

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

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.

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

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.
Açık Kaynak GeoServer'daki CVE-2024-36401 Sistemleri Uzaktan Kod Yürütmeye Açık Hale Getiriyor
OPSWAT SBOMSoftware Bill of Materials) teknolojisi, kritik güvenlik açıklarına sahip GeoServer paketlerini tespit eder.
  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!

Şirketle ilgili en son gelişmeleri, haberleri, etkinlik bilgilerini ve daha fazlasını almak için bugün kaydolun.