Yapay Zeka Destekli Siber Saldırılar: Akıllı Tehditler Nasıl Tespit Edilir, Önlenir ve Savunulur?

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

SVG Açığa Çıktı: XXE Güvenlik Açıklarını Anlamak ve Kod Tabanınızı Savunmak

tarafından Luan Pham, Yardımcı Sızma Test Uzmanı
Bu Gönderiyi Paylaş

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. 

Çalışan ayrıntılarını IT departman yapısında görüntüleyen XML kod parçacığı

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. 

Bir selamlama içeren dahili ve harici varlıklara sahip bir XML belgesinin kod örneği
Varlıkların ve içeriğin yapısını ve kullanımını vurgulayan basitleştirilmiş XML kodu örneği

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. 

Metin içerikli temel bir SVG dosya yapısını gösteren örnek görüntü

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: 

Bir SVG dosyasının ayrıştırılmasından başka bir formata dönüştürülmesine kadar olan adımları gösteren süreç akış diyagramı

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

Bir SVG dosyasını varlık çözünürlüğü seçenekleriyle yüklemek için bir Python işlevindeki değişiklikleri gösteren kod farkı
Güvenlik bağlamında SVG dosyalarını kullanan bir XXE saldırı sürecinin akış diyagramı

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

Güvenlik açıkları ve tehditler için depo tarama sonuçlarını gösteren OPSWAT MetaDefender Software Supply Chain kontrol paneli
Bir requirements.txt dosyası için OPSWAT MetaDefender Software Supply Chain güvenlik raporu, herhangi bir tehdit veya gizli dizinin tespit edilmediğini gösteriyor

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. 

DOCTYPE öğesinde belirtilen XXE güvenlik açığı ile SVG biçiminde düzenlenebilir XML kodu
Kötü Amaçlı SVG Dosyası
XML kodunun XXE güvenlik açığı olmadan SVG biçiminde temiz sürümü
SVG dosyası MetaDefender Core ile sterilize edildikten sonra - Deep CDR 
Güvenlik açığı değerlendirmesinden sonra izin verildiği ve sterilize edildiği şekilde işaretlenen SVG dosyasını gösteren güvenlik raporu
MetaDefender Core - Deep CDR sterilize edilmiş sonuç

Yazar Biyografisi

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. 

Luan Pham
Yardımcı Sızma Test Uzmanı

OPSWAT ile Güncel Kalın!

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