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.

MetaDefender™ Sofistike Çoklu Görüntü Saldırılarını Nasıl Önler? 

tarafından Loc Nguyen, Sızma Testi Ekip Lideri
Bu Gönderiyi Paylaş

Dosya yüklemeyi kolaylaştıran web uygulamaları, müşterilerin, ortakların ve çalışanların çeşitli belge ve dosyaları paylaşmaları için portal görevi görerek çok sayıda kuruluş için vazgeçilmez hale gelmiştir. Örneğin, bir İK firması kullanıcıların özgeçmişlerini yüklemelerini sağlayabilir veya bir şirket ortaklarının özel bir web platformu aracılığıyla dosya paylaşmasını kolaylaştırabilir.  

Geliştirilmiş güvenlik önlemleri ve daha sıkı doğrulama süreçlerine rağmen saldırganlar sofistike yöntemler kullanarak güvenlik açıklarından faydalanmaya devam etmektedir. Resimler gibi zararsız görünen dosyalar, bir web sunucusunun güvenliğini tehlikeye atmak için manipüle edilebilir. 

Çok dilli dosyalar aynı anda birden fazla tür olarak geçerli olabilen dosyalardır ve saldırganların dosya türü tabanlı güvenlik önlemlerini atlamasına olanak tanır. Örnekler arasında hem GIF hem de RAR dosyası olarak işlev gören GIFAR, hem JavaScript hem de JPEG olarak yorumlanan JavaScript/JPEG çoklu dosyaları ve hem Phar arşivi hem de JPEG görüntüsü olarak tanınan Phar-JPEG dosyaları yer almaktadır. Bu çoklu dosyalar, tespit edilmemiş kötü niyetli kodlar içerirken sistemleri iyi huylu bir dosya türü (resim veya PDF gibi) olduklarını düşünmeleri için "kandıran" aldatıcı veya boş uzantılarla tespit edilmeyebilir. 

Dosya Yükleme Doğrulaması 

Uygun veya kapsamlı doğrulama olmadan kullanıcılardan dosya yüklemelerine izin verilmesi web uygulamaları için önemli bir tehdit oluşturmaktadır. Bir saldırgan web kabuğu gibi kötü amaçlı bir dosyayı başarılı bir şekilde yüklerse, sunucu üzerinde kontrol sahibi olabilir ve hem sistemi hem de hassas verileri tehlikeye atabilir. Bu riskleri azaltmak için, geliştiricilere etkili doğrulama önlemleri uygulamada rehberlik edecek en iyi uygulamalar oluşturulmuştur. Bu uygulamalar, dosya yüklemelerinin güvenli bir şekilde işlenmesini sağlamaya yardımcı olarak istismar riskini en aza indirir. 

Dosya yüklemelerini güvence altına almak için odaklanılması gereken temel alanlar şunlardır: 

  • Uzantı Doğrulama: Yalnızca izin verilen dosya türlerinin kabul edilmesini sağlamak için bir blok listesi veya dosya uzantıları izin listesi uygulayın. 
  • Dosya Adı Sanitizasyonu: Yükleme sırasında dosya adları için rastgele dizeler oluşturun. 
  • İçerik-Türü Doğrulaması: Beklenen biçimle eşleştiğinden emin olmak için yüklenen dosyanın MIME türünü doğrulayın. 
  • Resim Başlığı Doğrulama: Resim yüklemelerinde, PHP'deki getimagesize() gibi işlevler, dosyanın başlığını kontrol ederek geçerliliğini doğrulamak için kullanılabilir. 

Dosya Yükleme Filtresi Bypass 

Bu koruyucu önlemlerin uygulanmasına rağmen, saldırganlar doğrulama mekanizmalarını atlatmak için yöntemlerini sürekli olarak geliştirmektedir. Boş karakter ekleme, çift uzantı ve boş uzantı gibi teknikler uzantı doğrulamasını zayıflatabilir: bir dosya tespitten kaçmak için "file.php.jpg," "file.php%00.jpg," "file.PhP," veya "file.php/" gibi bir adla görünebilir. MIME türü doğrulaması, dosyanın ilk sihirli baytlarını değiştirerek, örneğin GIF dosyalarıyla ilişkili başlık olan GIF89a olarak değiştirerek atlatılabilir, bu da sistemi dosyayı meşru bir format olarak tanımlaması için kandırabilir. Ayrıca, sunucu yapılandırmalarını manipüle etmek için kötü amaçlı bir .htaccess dosyası yüklenebilir ve yetkisiz uzantılara sahip dosyaların yürütülmesine izin verilebilir. 

Boş baytlar, alternatif uzantılar ve boş uzantılar dahil olmak üzere çeşitli dosya yükleme filtresi atlama tekniklerinin gösterimi
Dosya Yükleme Filtresi Bypass

Polyglot Dosya Saldırıları 

Dosya yükleme filtresi bypass tekniğini önlemek için birden fazla güvenlik önlemini bir araya getiren titiz doğrulama süreçlerinin uygulanmasına rağmen, çok dilli dosyaları veya çok dilli görüntüleri hedef alan karmaşık saldırılar önemli bir güvenlik tehdidi olmaya devam etmektedir. Bu yöntem, saldırganların görüntü dosyaları için beklenen ikili yapıya uyan, ancak farklı bir bağlamda yorumlandığında aynı anda kötü amaçlı kod çalıştırabilen görüntüler gibi dosyalar oluşturmasına olanak tanır. Bu dosyaların ikili yapısı, geleneksel doğrulama mekanizmalarını atlamalarına ve belirli senaryolardaki güvenlik açıklarından yararlanmalarına olanak tanır. 

Hem görüntü hem de kötü amaçlı JavaScript kodu olarak işlenen çok dilli bir dosyayı gösteren akış diyagramı
Javascript/Jpeg çok dilli dosya

ExifTool ile Basit Poliglot Dosya

Çok dilli bir görüntü oluşturmak için basit bir teknik ExifTool kullanmaktır. Bu güçlü uygulama EXIF, XMP, JFIF ve Photoshop IRB gibi çeşitli meta veri formatlarını okumak, yazmak ve değiştirmek için tasarlanmıştır. Ancak, kötü niyetli kişiler ExifTool'dan yararlanarak kötü niyetli bir çoklu görüntü oluşturma gibi zararlı eylemler gerçekleştirebilir. Saldırganlar, bir görüntünün EXIF meta verilerine (özellikle UserComment ve ImageDescription gibi alanlara) kötü amaçlı kod yerleştirmek için ExifTool'u kullanarak bir çoklu görüntü oluşturabilir ve başarılı istismar şanslarını artırabilirler. 

Aşağıda, görüntüyle ilgili kapsamlı bilgi sağlayan EXIF meta verileri sunulmaktadır. 

Dosya türü, çözünürlük ve kodlama bilgileri dahil olmak üzere bir görüntü dosyasından çıkarılan ayrıntılı Exif meta verilerini gösteren ekran görüntüsü
Bir görüntünün Exif meta verileri

Bir tehdit aktörü ExifTool'u kullanarak bir görüntünün EXIF meta verilerine kötü amaçlı kod yerleştirebilir ve böylece doğrulama mekanizmalarını atlatabilecek çok dilli bir dosya oluşturabilir. 

Bir resmin Exif meta verilerinin kullanıcı yorumu bölümüne eklenen zararlı kod örneği
Exif meta verilerinin Kullanıcı Yorumu bölümüne zararlı kod enjekte etme

MIME türü doğrulaması temel web kabuğu dosyalarının yüklenmesini kısıtlayabilse de, bu çok dilli görüntü bu kısıtlamaları atlayarak bir saldırganın çok dilli bir web kabuğu yüklemesine olanak tanıyabilir. 

MIME türü kısıtlamaları nedeniyle kötü amaçlı bir web kabuğunun reddedildiğini gösteren istek-yanıt
MIME türüne izin verilmediği için web kabuğu reddedildi
Exiftool ile oluşturulan bir çoklu görüntü dosyası kullanılarak kısıtlamaların atlanmasına ilişkin istek-yanıt örneği
Kısıtlamayı exiftool ile oluşturulan bir çoklu görüntü aracılığıyla atlayın

Saldırgan daha sonra web sunucusunun kontrolünü ele geçirmek için çok dilli web kabuğundan faydalanabilir.

Kötü amaçlı bir web kabuğu aracılığıyla bir web sunucusunun kontrolünü ele geçiren bir saldırganı gösteren ekran görüntüsü
Saldırgan web kabuğunu kullanarak web sunucusunun kontrolünü ele geçirebilir

Javascript/JPEG Polyglot Dosyası 

Bir JavaScript/JPEG polyglot dosyası hem JPEG görüntüsü hem de JavaScript betiği olarak geçerli olacak şekilde yapılandırılmıştır. Bunu başarmak için kötü niyetli bir aktörün JPEG dosyasının iç yapısını kapsamlı bir şekilde anlaması gerekir. Bu bilgi, JPEG görüntüsü olarak geçerliliğini etkilemeden bir JavaScript motoru tarafından işlenebilmesini sağlayarak kötü niyetli ikili verilerin görüntü içine doğru bir şekilde gömülmesini sağlar. 

Bir JPEG Görüntüsü aşağıdaki yapıya sahiptir: 

Baytİsim
0xFF, 0xD8Resmin Başlangıcı
0xFF, 0xE0, 0x00, 0x10, ...Varsayılan Başlık
0XFF, 0XFE, ... Resim Yorumu
0xFF, 0xDB, ...Kuantizasyon Tablosu
0xFF, 0xC0, ...Çerçeve Başlangıcı
0xFF, 0xC4, ...

Huffman Tablosu

0xFF, 0xDA, ...Tarama Başlangıcı
0xFF, 0xD9Resmin Sonu

Bir JPEG görüntü yapısında, başlığı uzunluk bilgisi takip eder. Önceki örnekte gösterildiği gibi, başlık 0xFF 0xE0 0x00 0x10 dizisiyle başlar; burada 0x00 0x10 özellikle segmentin uzunluğunu temsil eder ve 16 baytı gösterir. 0xFF 0xD9 işaretçisi görüntünün sonunu gösterir. 

Bir görüntü dosyasının yapısını ve kodlamasını gösteren onaltılık gösterimi
Bir görüntünün onaltılık gösterimleri

Bir JavaScript/JPEG çok dilli dosyası oluşturmak için, JavaScript motorunun bunları tanıyıp işleyebilmesini sağlamak amacıyla görüntünün onaltılık değerlerini değiştirmek gerekir. 

İlk olarak, JavaScript'te 0xFF 0xD8 0xFF 0xE0 dizisi ASCII olmayan değerler olarak yorumlanabilir, ancak 0x00 0x10 geçersizdir ve değiştirilmelidir. Bu onaltılık değerler için uygun değiştirme 0x2F 0x2A'dır; bu, JavaScript'te bir yorum açmak için kullanılan bir sözdizimi olan /*'in onaltılık gösterimidir. Bu ikame, kalan ikili verilerin yorumun bir parçası olarak göz ardı edilmesini sağlar. 

Ancak, 0x00 0x10 orijinal olarak JPEG başlığının uzunluğunu temsil ettiğinden, ondalık olarak 12074'e eşit olan 0x2F 0x2A olarak değiştirilmesi, geçerliliğini korumak için JPEG başlığının yeniden tanımlanmasını gerektirir. Bunu başarmak için boş baytlar eklenmeli ve JavaScript yükü JPEG yapısında bir görüntü yorumunu gösteren 0xFF 0xFE işaretçisinden sonra yerleştirilmelidir. 

Örneğin, yük 28 bayt uzunluğunda */=alert(document.domain);/* ise, gerekli null baytlar aşağıdaki gibi hesaplanacaktır: 12074 (yeni uzunluk) - 16 (orijinal başlık uzunluğu) - 2 ( 0xFF 0xFE işaretleyicisi için) - 28 (yük uzunluğu) = 12.028 boş bayt. 

Sonuç olarak, JPEG görüntüsü içindeki JavaScript kodu aşağıdakine benzeyecektir: 

İstismar için ASCII olmayan değişkenlerin içine gömülmüş JavaScript kodu örneği
JavaScript kodu gömme
Bir çoklu JPEG dosyasının onaltılık gösterimi
Değiştirilen görüntünün onaltılık değerleri, bir uyarı yorumu eklendiğini gösterir
Değişikliğin ardından görüntünün onaltılık değeri

Son olarak, 0x2A 0x2F 0x2F 0x2F dizisi (*///'ye karşılık gelir) JPEG bitiş işaretçisi 0xFF 0xD9'dan hemen önce yerleştirilmelidir. Bu adım JavaScript yorumunu kapatır ve JPEG dosyasının yapısını bozmadan yükün doğru şekilde yürütülmesini sağlar. 

Değiştirilmiş onaltılık görüntü içindeki JavaScript kodunun genişletilmiş görünümü
JavaScript yorumunu kapatın

Bu değişiklikten sonra, görüntü hala geçerli bir görüntü olarak yorumlanabilirken aynı zamanda çalıştırılabilir JavaScript kodu da içerebilir.

Görüntüleyicide standart bir görüntü olarak görüntülenen çok dilli JPEG
Standart bir görüntü olarak görüntülenen çok dilli görüntü

Bir HTML dosyası bu görüntüyü JavaScript kaynak kodu olarak yüklediğinde, geçerli kalır ve gömülü JavaScript kodunu çalıştırabilir: 

Çok dilli bir JPEG'i komut dosyası olarak gömen HTML kodu
JavaScript kodu olarak çalıştırılabilen çok dilli görüntüyü gösteren tarayıcı çıktısı
JavaScript kodu olarak çalıştırılabilir çok dilli görüntü
PHAR/JPEG Çok Dilli Dosyalar 

Çoklu görüntü dosyaları yalnızca istemci tarafı istismarı için değil, aynı zamanda belirli koşullar altında sunucu tarafı saldırıları için de risk oluşturmaktadır. Bunun bir örneği, hem bir PHP Arşivi (Phar) hem de bir JPEG görüntüsü olarak yorumlanabilen Phar/JPEG poliglot dosyasıdır. Phar dosya yapısı, serileştirilmiş verilerin meta verilere gömülmesine izin verir, bu da özellikle belirli PHP sürümlerinde serileştirme güvenlik açıkları için potansiyel bir risk oluşturur. Sonuç olarak, Phar/JPEG çoklu dosyaları dosya yükleme doğrulamasını atlamak ve savunmasız sunucuları istismar etmek için kullanılabilir. 

Phar dosya formatı stub/manifest/contents/signature şeklinde düzenlenir ve Phar arşivinde nelerin yer aldığına dair önemli bilgileri manifestosunda saklar:  

  • Saplama: Saplama, dosyaya çalıştırılabilir bir bağlamda erişildiğinde çalıştırılan bir PHP kodu yığınıdır. Sonunun __HALT_COMPILER(); ile bitmesi gerekliliği dışında, saplamanın içeriği üzerinde herhangi bir kısıtlama yoktur. 
  • Manifest: Bu bölüm, arşiv ve içeriği hakkında serialize() formatında saklanan serileştirilmiş Phar meta verilerini içerebilecek meta veriler içerir. 
  • Dosya içerikleri: Arşive dahil edilen orijinal dosyalar. 
  • İmza (isteğe bağlı): Bütünlük doğrulaması için imza bilgilerini içerir. 
Saplama, manifesto, dosya içeriği ve imza segmentlerini gösteren Phar dosya formatı yapısı
Phar Dosya Formatı

Stub, __HALT_COMPILER() şartının ötesinde herhangi bir içerik kısıtlaması getirmediğinden, bir tehdit aktörü bir görüntünün onaltılık değerlerini stub'a enjekte edebilir. Bu değerleri PHAR dosyasının başına yerleştirerek, geçerli bir görüntü olarak tanımlanabilir. Sonuç olarak, aşağıdaki örnekte gösterildiği gibi, bir JPEG görüntüsünün onaltılık baytları başlangıca eklenerek kolayca bir PHAR/JPEG poliglotu oluşturulabilir: 

Meta veri ve kötü amaçlı içeriğe sahip çok dilli bir Phar/JPEG dosyası oluşturan PHP betiği
Phar/JPEG polyglot dosyası oluşturun

Bu yöntem sayesinde, oluşturulan çok dilli dosya hem geçerli bir görüntü hem de meşru bir PHAR dosyası olarak işlev görür ve bu nedenle belirli dosya yükleme doğrulama mekanizmalarını atlamak için kullanılabilir.

PHAR/JPEG polyglot dosyasının onaltılık değerleri
PHAR/JPEG polyglot dosyasının onaltılık değerleri
PHP çıktısının çok dilli PHAR dosyasını geçerli bir görüntü olarak tanıması
PHP derleyicisi bunu geçerli bir resim olarak tanır

Bu çoklu dosya dosya yükleme filtrelerini atlayabilse de, şu anda web sunucusunu istismar etme yeteneğine sahip değildir. Bir PHAR dosyası veya PHAR çoklu dosyası kullanarak bir web sunucusunu başarılı bir şekilde istismar etmek ve tehlikeye atmak için, dosyanın manifestosuna kötü amaçlı serileştirilmiş meta veriler eklemek önemlidir.  

File(), file_exists(), file_get_contents(), fopen(), rename() veya unlink() gibi dosya işlemleriyle ilişkili belirli PHP işlevlerinde (PHP ≤7.x) PHAR dosyasına PHAR sarmalayıcı (phar://) aracılığıyla erişildiğinde, serileştirilmiş meta veriler için unserialize() işlevi tetiklenir. Sonuç olarak, tehdit aktörleri PHP gadget zincirleri oluşturmak için yaygın olarak kullanılan bir araç olan PHPGGC'yi kullanarak, bir PHAR çoklu dosyası aracılığıyla serileştirme güvenlik açığından yararlanabilir ve böylece web uygulama sunucusunu tehlikeye atabilir. 

PHAR/JPEG çok dilli dosyalar ve deserialization güvenlik açıklarının birleşimi, dosya yükleme filtreleri uygulandığında bile saldırganlara bir web uygulama sunucusuna sızma yetkisi verir. Özellikle, bu tehlike bir görüntü dosyasının işlenmesi sırasında bile ortaya çıkabilir. 

phar.readonly değerini 0 olarak ayarlayan bir PHP yapılandırma dosyasından bir parça
PHP yapılandırma dosyası
Dosya yollarının hatalı işlenmesi yoluyla istismara açık web uygulaması kodu örneği
Web uygulamasındaki güvenlik açığı bulunan kod

Saldırganlar, dosya yükleme filtrelerini atlamak için çok dilli dosyalardan yararlanarak ve dosya konumuna PHAR sarmalayıcısını (phar://) ekleyerek, web sunucusunu dosyayı bir PHAR arşivi olarak ele alması için manipüle edebilir. Bu manipülasyon daha sonra bir deserialization açığını tetikleyerek dosya işlem fonksiyonları aracılığıyla uzaktan kod yürütülmesine yol açabilir. 

PHAR/JPEG polyglot dosyası aracılığıyla Uzaktan Kod Yürütme saldırısı, uzaktan kod yürütmek için kötü amaçlı bir polyglot dosyası kullanan bir saldırıyı gösterir
PHAR/JPEG polyglot dosyası aracılığıyla Uzaktan Kod Yürütme saldırısı
PHAR/JPEG Polyglot Dosyaları ile Gerçek Dünya Saldırılarının Simülasyonu 

Uygulamanızdaki çok dilli dosyalarla ilişkili riskleri aktarmak için, uygulamanın kötü amaçlı dosyaların veya web kabuklarının yüklenmesini önlemek için katı dosya yükleme filtreleri kullandığı bir ortamı simüle ettik. Bu önlemlere rağmen, çok dilli bir görüntü doğrulama sürecini atlayabilir ve belirli bağlamlarda uzaktan kod yürütülmesine yol açarak sonuçta savunmasız web uygulama sunucusunu tehlikeye atabilir. 

Bu örnek, müşteriler, ortaklar ve kuruluşlar arasında dosya paylaşımını sağlayan geleneksel bir web uygulamasını göstermektedir: 

Web Uygulamanızı MetaDefender Core™ ve MetaDefender ICAP Server™ ile Koruyun

MetaDefender Core ve MetaDefender ICAP Server web uygulamalarınızı bu tehditlerden korur ve ağınızın ve altyapınızın güvenliğini artırır.  

MetaDefender ICAP Server ve MetaDefender Core web sunucunuzu kötü amaçlı PHAR/JPEG çoklu dosyalarını içeren karmaşık saldırılara karşı aşağıdaki şekillerde korumak için birlikte çalışır: 

Bir PHAR/JPEG poliglot dosyası web uygulamasına yüklendiğinde, Deep CDR ™ teknolojimizi kullanarak kapsamlı bir sterilizasyon işlemi için ilk olarak MetaDefender ICAP Server aracılığıyla MetaDefender Core adresine iletilir. Basit dosya türü denetleyicilerinin aksine, Deep CDR yüklenen dosyanın yapısını kapsamlı bir şekilde analiz eder, komut dosyalarını, makroları ve politika dışı içeriği kaldırarak JPEG dosyasını yalnızca gerekli verileri içerecek şekilde yeniden yapılandırır.

Bu işlem JPEG bitiş işaretçisinden(0xFF 0xD9) sonra eklenen zararlı PHAR içeriğini kaldırarak sterilize edilmiş dosyanın kesinlikle bir JPEG olmasını sağlar. Sonuç olarak, web uygulaması PHAR/JPEG çoklu saldırılarına karşı korunur; bir saldırgan PHAR sarmalayıcı enjekte etmek için dosya işleme şemasını değiştirebilse bile, web sunucusunu istismar edemez.

tarafından işlendikten sonra sanitize edilmiş bir dosyanın onaltılık değerleri OPSWAT MetaDefender

İster WAF'lar (web uygulaması güvenlik duvarları), ister proxy'ler veya giriş denetleyicileri kullansınlar, yerleşik ağ güvenliği altyapısına sahip kuruluşlar artık MetaDefender ICAP Server aracılığıyla savunma mekanizmalarını geliştirebilirler.Bu çözüm, mevcut web sunucuları ile MetaDefender Core arasında bir arayüz oluşturarak gelen tüm dosyalar için şeffaf bir güvenlik kontrol noktası oluşturuyor. ICAP arayüzü üzerinden yönlendirilen tüm içerikler web sunucunuza ulaşmadan önce taranacak ve işlenecek, böylece yalnızca güvenli ve meşru içeriğin ağınıza girmesi ve son kullanıcılara ulaşması sağlanacaktır. 

ICAP Server  adresinin Kubernetes tarafından yönetilen NGINX ile entegrasyonunu gösteren diyagram
MetaDefender ICAP Server NGINX ile entegre olur

Bu yaklaşım, kuruluşların ek ve güçlü bir koruma katmanı eklerken mevcut güvenlik yatırımlarından yararlanabilecekleri anlamına gelir. NGINX giriş denetleyicisi kullanan kuruluşlar, proxy yapılandırması yoluyla MetaDefender ICAP Server adresini mevcut altyapılarıyla entegre edebilirler.

Kullanılarak sterilize edilmiş bir PHAR/JPEG poliglotunu gösteren yapılandırma dosyası Deep CDR
Kötü amaçlı PHAR/JPEG poliglot dosyası Deep CDR tarafından sterilize edilir (MetaDefender Core )

OPSWAT'in yaklaşımı geleneksel tehdit tespitinin ötesine geçer. Sadece şüpheli dosyaları işaretlemek yerine, MetaDefender Core potansiyel tehditleri aktif olarak etkisiz hale getirerek tehlikeli dosyaları güvenli, kullanılabilir içeriğe dönüştürür. Web sunucunuzla entegre edildiğinde, MetaDefender ICAP Server sıfırıncı gün tehditlerine ve çoklu saldırılara karşı kapsamlı koruma sağlar. 

"Hiçbir dosyaya güvenmeyin. Hiçbir cihaza güvenmeyin. ™" felsefesiyle güçlenen OPSWAT , altyapınızın her seviyesinde patentli teknolojilerle dünyanın dört bir yanındaki müşterilerin zorluklarını çözer, ağlarınızı, verilerinizi ve cihazlarınızı güvence altına alır ve bilinen ve bilinmeyen tehditleri, sıfır gün saldırılarını ve kötü amaçlı yazılımları önler. 

OPSWAT ile Güncel Kalın!

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