Görüntü dosyaları genellikle güvenli dosyalar olarak kabul edilir ve genellikle potansiyel güvenlik sorunlarının farkında olmadan ele alınır. Bu resim dosyaları, özellikle SVG dosyaları, Siteler Arası Komut Dosyası Yazma (XSS) veya XML Harici Varlık (XXE) enjeksiyonu gibi tehlikeli saldırıları başlatmak için yaygın saldırı vektörleridir. XSS saldırılarının aksine, XXE enjeksiyon saldırıları istemci tarafını etkilemez, ancak sunucu tarafını önemli ölçüde etkileyerek çeşitli ciddi etkilere yol açabilir. Bu blog yazısında, özellikle Ölçeklenebilir Vektör Grafikleri (SVG) saldırı vektörü aracılığıyla XXE saldırılarının doğasını inceleyecek, gerçek dünyadan bir örneği tartışacak ve OPSWAT ürünleri ile hafifletme stratejileri sunacağız.
Arka Plan Bilgileri
Güvenlik açığını incelemeden önce, ilk olarak XML, SVG dosya formatını ve XXE enjeksiyon tekniğinin arkasındaki temel nedeni inceleyeceğiz.
XML Dosya Formatı
XML (eXtensible Markup Language), yapılandırılmış verilerin depolanması ve alışverişi için platformdan bağımsız bir dosya formatıdır. XML hiyerarşik yapıyı desteklediğinden karmaşık veri ilişkilerini temsil etmek için idealdir. XML formatındaki veriler, HTML ile aynı şekilde etiketler, nitelikler ve içerik olarak düzenlenir. Ancak XML son derece özelleştirilebilir ve genişletilebilir olduğundan kullanıcıların etiketlerini ve niteliklerini kendi gereksinimlerine uyacak şekilde tanımlamalarına olanak tanır. Aşağıdaki şekilde IT departmanının XML formatındaki verileri gösterilmektedir.
XML Varlıkları
XML'de varlıklar, geçerli belgeye metin veya tüm belgeleri yerleştirmenize olanak tanıyan veri yer tutucularıdır. Sözdizimsel olarak, XML'deki bir varlık bir ve işareti (&) ve bir noktalı virgül (;) ile çevrelenir. Aşağıdaki örnekte, Belge Türü Tanımında iki varlık tanımlanmış ve XML dosyasının içeriğine atıfta bulunulmuştur. İki varlık arasındaki fark, dahili varlığın geçerli belge içinde tanımlanmış ve referans verilmiş olması, harici varlığın içeriğinin ise harici bir belgeden alınmış olmasıdır. Varlıkların ayrıştırılması ve çözümlenmesinden sonra, varlıklar ilgili verilerle değiştirilir.
SVG Dosya Formatı
SVG (Ölçeklenebilir Vektör Grafikleri), web geliştirme, grafik tasarım ve veri görselleştirme alanlarında yaygın olarak kullanılan çok yönlü bir dosya formatıdır. JPEG veya PNG gibi geleneksel görüntü formatlarının aksine SVG, iki boyutlu vektör grafiklerini tanımlamak için XML formatını kullanır. Özellikle, SVG görüntüleri tek tek pikseller yerine matematiksel denklemlerle tanımlanan çizgiler, eğriler ve çokgenler gibi geometrik şekillerden oluşur. Sonuç olarak, SVG grafikleri kalite kaybı olmadan sonsuza kadar ölçeklendirilebilir, bu da onları duyarlı web tasarımı ve yüksek çözünürlüklü ekranlar için ideal hale getirir. SVG formatının XML doğası nedeniyle, XML ile ilgili istismarlar için potansiyel saldırı vektörleri de sağlar.
XXE Enjeksiyon Tekniği ve Etkileri
XXE enjeksiyon tekniği harici varlık çözümleme mekanizmasını kötüye kullanır. Özellikle, ayrıştırıcı harici bir varlıkla karşılaştığında, kaynak dosyasının türüne bağlı olarak ilgili içeriği getirir.
Kaynak dosyası yerelse, ayrıştırıcı dosyanın içeriğini alır ve varlığı ilgili verilerle değiştirir. Bu, bir saldırganın sunucu yapılandırması, kimlik bilgileri vb. gibi hassas verileri göstermesine olanak tanır. Güvenlik açığından başarılı bir şekilde yararlanmak için saldırgan, hassas dosyaların içeriğine (örneğin /etc./password) atıfta bulunan harici bir varlık bildirir.
Ancak, kaynak uzak veya dahili bir hizmet ise, ayrıştırıcı tanımlanan URL'yi talep ederek verileri almaya çalışacaktır. Bu, sunucu tarafı istek sahteciliği (SSRF) gerçekleştirmek için istismar edilebilir. Bu durumda, saldırgan yerel bir dosyaya başvurmak yerine, sunucu adına talepte bulunmak için yükü savunmasız hizmetin URL'sine değiştirecektir.
SVG dosyasının yanlış kullanımı yoluyla XXE saldırısı: Bir vaka çalışması
Gerçek dünyadaki bir vaka olan SVGLIB kütüphanesi için 0.9.3 sürümüne kadar bir XXE araştıracağız. Güvenlik açığı 2020 yılında keşfedildi ve CVE-2020-10799 olarak atandı. İlk olarak kütüphanenin akışını inceleyeceğiz, savunmasız kod parçacığını analiz edeceğiz ve son olarak bir SVG'den PNG'ye dönüştürme hizmeti aracılığıyla istismarı kanıtlayacağız. Hedef, dönüşüm için savunmasız SVGLIB sürümlerini kullanan kendi kendine uygulanan web uygulamalarıdır.
svglib Paketi
svglib, Report Lab Açık Kaynak araç setini kullanarak SVG formatını PNG, JPG, PDF vb. gibi diğer formatlara dönüştürmek için tasarlanmış saf bir Python kütüphanesidir. SVG dosyaları XML formatını kullandığından, XML'i ayrıştırmak ve işlemek de kütüphanenin ana akışının ilgili bir parçasıdır. Kütüphanedeki 3 ana adım aşağıdaki gibidir:
İstismar
Güvenlik açığı SVG dosyası ayrıştırma işleminde yatmaktadır, yanlış yapılandırılırsa sunucudaki hassas verileri sızdırır ve potansiyel olarak SSRF güvenlik açıklarına neden olur. svglib paketinin kaynak kodu incelendiğinde, XXE güvenlik açığının SVG dosyası yüklenirken XML formatının ayrıştırılması ve işlenmesi için varsayılan yapılandırmanın kullanılmasından kaynaklandığı görülmüştür. Paket, XMLParser sınıfı için resolve_ entities nitelikleri için varsayılan değerin True olduğu lxml paketini kullanmıştır.
İyileştirme
Sorunun temel nedeni, svglib kütüphanesinde ve lxml bağımlılığının bir parçasında yanlış uygulanan güvensiz XML ayrıştırmasıdır. Sonuç olarak, bu kütüphanenin savunmasız bir sürümünü kullanmak, dağıtılan ortama ve uygulamanın işlevselliğine bağlı olarak hassas bilgilerin ifşa edilmesine, sunucu tarafı istek sahteciliğine ve hatta potansiyel uzaktan kod yürütülmesine neden olabilir. Üçüncü taraf kütüphanelerden kaynaklanan güvenlik açığı, bağımlılıkları karmaşık olabileceğinden ve şeffaf olmadığından büyük uygulamaların güvenliği için ciddi bir sorundur.
MetaDefender Software Supply Chain
OPSWAT MetaDefender Software Supply Chain birden fazla teknolojinin kombinasyonu ile tedarik zinciri risklerine karşı genişletilmiş görünürlük ve sağlam bir savunma sağlar. OPSWAT Software Bill of Materials (SBOM) , açık kaynaklı üçüncü taraf yazılım paketlerine görünürlük kazandırmaya ve bir konteyner görüntüsünün her katmanının altında bulunan yazılım bağımlılıklarını, güvenlik açıklarını veya diğer potansiyel riskleri belirlemeye yardımcı olur. 30'dan fazla antivirüs motorunun entegrasyonu ile Multiscanning teknolojisinin kötü amaçlı yazılım tespit oranı %99,99'un üzerine çıkmaktadır. Ayrıca, Proactive DLP (Veri Kaybı Önleme) teknolojisi, kaynak kodunda bırakılan parolalar, gizli bilgiler, belirteçler, API anahtarları veya diğer hassas bilgiler gibi kimlik bilgilerini tanımlar. Sıfır güven tehdit algılama ve önleme teknolojilerimizle, yazılım geliştirme yaşam döngünüz (SDLC) kötü amaçlı yazılımlara ve güvenlik açıklarına karşı güvence altına alınır, uygulama güvenliği ve uyumluluk bağlılığı güçlendirilir.
MDSSC, svglib'de bulunan CVE'yi tespit eder. Ayrıca SBOM raporunda CVE önem düzeyini işaretler ve savunmasız yazılım sürümünü tanımlar.
MetaDefender Core - Deep CDR
İstismarı mümkün kılan bir başka neden de uygulamanın kötü amaçlı bir yük enjekte edilmiş bir SVG dosyasını işlemesidir. Sonuç olarak, görüntü dosyası dönüştürme hizmetine beslenmeden önce sanitize edilirse, yük ortadan kaldırılacak ve böylece saldırının gerçekleşmesi önlenecektir. MetaDefender Core adresindeki Deep Content Disarm and Reconstruction (CDR) teknolojisi, dosyaları sterilize ederek ve yeniden yapılandırarak bilinen ve bilinmeyen dosya kaynaklı tehditlere karşı koruma sağlar. 160'tan fazla yaygın dosya türünü ve yüzlerce dosya yeniden yapılandırma seçeneğini destekleyen OPSWAT'un Deep CDR adresi, olası gömülü tehditleri etkisiz hale getirerek sterilize edilmiş dosyanın güvenli içerikle tam kullanılabilirliğini sürdürmesini sağlar.

Luan Pham, OPSWAT'un Kritik Altyapı Siber Güvenlik Yüksek Lisans Burs Programına katılmıştır ve şu anda OPSWAT'da Yardımcı Sızma Test Uzmanı olarak çalışmaktadır. OPSWAT'un ürünlerini potansiyel tehditlere karşı koruma ve bilgilerini paylaşma konusunda tutkuludur.